Ignore:
Timestamp:
04/23/20 16:04:22 (4 years ago)
Author:
ymipsl
Message:

Some update on XIOS_COUPLING branch...

YM

File:
1 edited

Legend:

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

    r1871 r1872  
    3333  CField::CField(void) 
    3434    : CObjectTemplate<CField>(), CFieldAttributes() 
    35     , file() 
    3635    , written(false) 
    3736    , nstep(0), nstepMax(0) 
     
    5150  CField::CField(const StdString& id) 
    5251    : CObjectTemplate<CField>(id), CFieldAttributes() 
    53     , file() 
    5452    , written(false) 
    5553    , nstep(0), nstepMax(0) 
     
    360358      info(20) << "currentDate : " << currentDate << endl ; 
    361359      info(20) << "lastDataRequestedFromServer : " << lastDataRequestedFromServer << endl ; 
    362       info(20) << "file->output_freq.getValue() : " << file->output_freq.getValue() << endl ; 
    363       info(20) << "lastDataRequestedFromServer + file->output_freq.getValue() : " << lastDataRequestedFromServer + file->output_freq << endl ; 
    364  
    365       dataRequested |= sendReadDataRequest(lastDataRequestedFromServer + file->output_freq, file->getContextClient()); 
     360      info(20) << "fileIn_->output_freq.getValue() : " << fileIn_->output_freq.getValue() << endl ; 
     361      info(20) << "lastDataRequestedFromServer + fileIn_->output_freq.getValue() : " << lastDataRequestedFromServer + fileIn_->output_freq << endl ; 
     362 
     363      dataRequested |= sendReadDataRequest(lastDataRequestedFromServer + fileIn_->output_freq, fileIn_->getContextClient()); 
    366364    } 
    367365 
     
    580578 
    581579    if (wasDataAlreadyReceivedFromServer) 
    582       lastDataReceivedFromServer = lastDataReceivedFromServer + file->output_freq; 
     580      lastDataReceivedFromServer = lastDataReceivedFromServer + fileIn_->output_freq; 
    583581    else 
    584582    { 
     
    616614      do 
    617615      { 
    618         const CDate nextDataDue = wasDataAlreadyReceivedFromServer ? (lastDataReceivedFromServer + file->output_freq) : context->getCalendar()->getInitDate(); 
     616        const CDate nextDataDue = wasDataAlreadyReceivedFromServer ? (lastDataReceivedFromServer + fileIn_->output_freq) : context->getCalendar()->getInitDate(); 
    619617        isDataLate = (nextDataDue <= currentDate); 
    620618 
     
    659657 
    660658  //---------------------------------------------------------------- 
    661  
     659/* 
    662660  void CField::setRelFile(CFile* _file) 
    663661  TRY 
     
    667665  } 
    668666  CATCH_DUMP_ATTR 
    669  
     667*/ 
    670668  //---------------------------------------------------------------- 
    671669 
     
    688686  TRY 
    689687  { 
    690     return this->file; 
     688    if (hasFileIn()) return this->fileIn_; 
     689    else if (hasFileOut()) return this->fileOut_ ; 
     690    else return nullptr ; 
    691691  } 
    692692  CATCH 
     
    10981098    CContext* context = CContext::getCurrent(); 
    10991099 
    1100     if (context->getServiceType()==CServicesManager::CLIENT || !hasOutputFile) return; 
    1101  
    11021100    if (freq_op.isEmpty()) freq_op.setValue(TimeStep); 
    11031101 
    11041102    if (freq_offset.isEmpty()) freq_offset.setValue(NoneDu); 
    11051103 
    1106     freq_operation_srv = file->output_freq.getValue(); 
    1107     freq_write_srv     = file->output_freq.getValue(); 
     1104    freq_operation_srv = fileOut_->output_freq.getValue(); 
     1105    freq_write_srv     = fileOut_->output_freq.getValue(); 
    11081106 
    11091107    lastlast_Write_srv = context->getCalendar()->getInitDate(); 
     
    12341232    } 
    12351233     
     1234    if (hasFileOut()) 
     1235    { 
     1236      if (fileOut_->isServerSide()) 
     1237      { 
     1238        this->solveServerOperation() ; 
     1239      } 
     1240    } 
     1241 
    12361242    buildWorkflowGraphDone_ = true ; 
    12371243    workflowEnabled_ = true ; 
     
    12881294  void CField::connectToServerInput(CGarbageCollector& gc) 
    12891295  { 
    1290     serverSourceFilter = std::shared_ptr<CSourceFilter>(new CSourceFilter(gc,  grid_, false, false)); 
     1296    const bool detectMissingValues = (!detect_missing_value.isEmpty() && !default_value.isEmpty() && detect_missing_value == true); 
     1297    const double defaultValue  = detectMissingValues ? default_value : (!default_value.isEmpty() ? default_value : 0.0); 
     1298 
     1299    checkTimeAttributes(); 
     1300    serverSourceFilter = std::shared_ptr<CSourceFilter>(new CSourceFilter(gc, grid_, true, false, freq_offset, true, 
     1301                                                                          detectMissingValues, defaultValue)); 
     1302    //serverSourceFilter = std::shared_ptr<CSourceFilter>(new CSourceFilter(gc,  grid_, false, false)); 
    12911303    serverSourceFilter -> connectOutput(inputFilter,0) ; 
    12921304  }  
     
    13821394      if (enableOutput && !storeFilter && !fileWriterFilter) 
    13831395      { 
    1384         if (file && (file->mode.isEmpty() || file->mode == CFile::mode_attr::write)) 
     1396        if (getRelFile() && (getRelFile()->mode.isEmpty() || getRelFile()->mode == CFile::mode_attr::write)) 
    13851397        { 
    13861398          fileServerWriterFilter = std::shared_ptr<CFileServerWriterFilter>(new CFileServerWriterFilter(gc, this)); 
     
    13971409      if (enableOutput && !storeFilter && !fileWriterFilter) 
    13981410      { 
    1399         if (file && (file->mode.isEmpty() || file->mode == CFile::mode_attr::write)) 
     1411        if (getRelFile() && (getRelFile()->mode.isEmpty() || getRelFile()->mode == CFile::mode_attr::write)) 
    14001412        { 
    1401           fileWriterFilter = std::shared_ptr<CFileWriterFilter>(new CFileWriterFilter(gc, this, file->getContextClient())); 
     1413          fileWriterFilter = std::shared_ptr<CFileWriterFilter>(new CFileWriterFilter(gc, this, getRelFile()->getContextClient())); 
    14021414          instantDataFilter->connectOutput(fileWriterFilter, 0); 
    14031415        } 
     
    14331445        else if (!field_ref.isEmpty()) instantDataFilter = getFieldReference(gc); 
    14341446        // Check if the data is to be read from a file 
    1435         else if (file && !file->mode.isEmpty() && file->mode == CFile::mode_attr::read) 
     1447        else if (getRelFile() && !getRelFile()->mode.isEmpty() && getRelFile()->mode == CFile::mode_attr::read) 
    14361448        { 
    14371449          checkTimeAttributes(); 
     
    14571469        } 
    14581470 
    1459         if (file && (file->mode.isEmpty() || file->mode == CFile::mode_attr::write)) 
     1471        if (getRelFile() && (getRelFile()->mode.isEmpty() || getRelFile()->mode == CFile::mode_attr::write)) 
    14601472        { 
    1461           fileWriterFilter = std::shared_ptr<CFileWriterFilter>(new CFileWriterFilter(gc, this, file->getContextClient())); 
    1462           getTemporalDataFilter(gc, file->output_freq)->connectOutput(fileWriterFilter, 0); 
     1473          fileWriterFilter = std::shared_ptr<CFileWriterFilter>(new CFileWriterFilter(gc, this, getRelFile()->getContextClient())); 
     1474          getTemporalDataFilter(gc, getRelFile()->output_freq)->connectOutput(fileWriterFilter, 0); 
    14631475        } 
    14641476      } 
     
    20012013    if (context->getServiceType()==CServicesManager::GATHERER) 
    20022014    { 
    2003       if (file->mode.isEmpty() || (!file->mode.isEmpty() && file->mode == CFile::mode_attr::write)) 
     2015      if (getRelFile()->mode.isEmpty() || (!getRelFile()->mode.isEmpty() && getRelFile()->mode == CFile::mode_attr::write)) 
    20042016        grid_->setContextClient(contextClient); 
    20052017    } 
     
    20202032  { 
    20212033    CContext::getCurrent()->sendContextToFileServer(client); 
    2022     fileOut_->sendFileToFileServer(client); 
     2034    getRelFile()->sendFileToFileServer(client); 
    20232035    grid_->sendGridToFileServer(client); 
     2036    this->sendAllAttributesToServer(client); 
     2037    this->sendAddAllVariables(client); 
     2038  } 
     2039   
     2040  void CField::sendFieldToInputFileServer(void) 
     2041  { 
     2042    CContext::getCurrent()->sendContextToFileServer(client); 
     2043    getRelFile()->sendFileToFileServer(client); 
     2044    grid_->sendGridToFileServer(client); 
     2045    read_access=true ; // not the best solution, but on server side, the field must be a starting point of the workflow 
     2046                       // must be replace by a better solution when implementing filters for reading and send to client 
     2047                       // on server side 
    20242048    this->sendAllAttributesToServer(client); 
    20252049    this->sendAddAllVariables(client); 
     
    21212145  TRY 
    21222146  { 
    2123     bool isFieldRead  = file && !file->mode.isEmpty() && file->mode == CFile::mode_attr::read; 
    2124     bool isFieldWrite = file && ( file->mode.isEmpty() ||  file->mode == CFile::mode_attr::write); 
     2147    bool isFieldRead  = getRelFile() && !getRelFile()->mode.isEmpty() && getRelFile()->mode == CFile::mode_attr::read; 
     2148    bool isFieldWrite = getRelFile() && ( getRelFile()->mode.isEmpty() ||  getRelFile()->mode == CFile::mode_attr::write); 
    21252149    if (isFieldRead && !(operation.getValue() == "instant" || operation.getValue() == "once") )      
    21262150      ERROR("void CField::checkTimeAttributes(void)", 
     
    21322156      if (operation.getValue() == "instant") 
    21332157      { 
    2134         if (isFieldRead || isFieldWrite) freq_op.setValue(file->output_freq.getValue()); 
     2158        if (isFieldRead || isFieldWrite) freq_op.setValue(getRelFile()->output_freq.getValue()); 
    21352159        else freq_op=*freqOp ; 
    21362160      } 
Note: See TracChangeset for help on using the changeset viewer.