Changeset 5487


Ignore:
Timestamp:
11/02/20 09:55:31 (4 years ago)
Author:
ymipsl
Message:

XIOS modification to implement working ensemble by pool of members. Only slice of pool memeber are written in the netcdf file.

YM

File:
1 edited

Legend:

Unmodified
Added
Removed
  • CONFIG_DEVT/LMDZOR_V6.2_work_ENSEMBLES/modeles/XIOS/src/io/nc4_data_output.cpp

    r5477 r5487  
    26342634                } 
    26352635 
    2636  
     2636                // suppose first dim is dedicated for ensemble 
     2637                double defaultValue=field->default_value ; 
     2638                size_t slice=1 ; 
     2639                for(int i=1 ; i<count.size() ; i++) slice=slice*count[i] ; 
     2640                 
     2641                size_t nEnsemble=count[0] ; 
     2642                size_t pos=0 ; 
     2643                start[0] = 0 ; 
     2644                count[0] = 0 ; 
     2645                for(size_t i=0 ; i<nEnsemble ; i++) 
     2646                { 
     2647                  bool allMissing=true ; 
     2648                  for (size_t j=0 ; j<slice ; j++,pos++) 
     2649                    if (fieldData(pos)!=defaultValue) { allMissing=false ; break;} 
     2650                  if (allMissing)  
     2651                  { 
     2652                    if (count[0]==0) start[0]++ ; 
     2653                    else break ; 
     2654                  } 
     2655                  else count[0]++ ;   
     2656                }   
     2657 
     2658                CArray<double,1> newData(fieldData.dataFirst()+start[0]*slice,shape(count[0]*slice),neverDeleteData) ; 
     2659                info(0)<<"write data parameter  "<<fieldid<<"  "<<field->getNStep()<<"  start : " ; 
     2660                for(auto it : start) info(0)<<" "<<it ; 
     2661                info(0)<<"  count : " ;  
     2662                for(auto it : count) info(0)<<"  "<<it ; 
     2663                info(0)<<endl ;  
     2664                  
    26372665                CTimer::get("Files : writing data").resume(); 
    2638                 SuperClassWriter::writeData(fieldData, fieldid, isCollective, field->getNStep() - 1, &start, &count); 
     2666                SuperClassWriter::writeData(newData, fieldid, isCollective, field->getNStep() - 1, &start, &count); 
    26392667                CTimer::get("Files : writing data").suspend(); 
    26402668 
Note: See TracChangeset for help on using the changeset viewer.