Changeset 5977
- Timestamp:
- 11/10/21 15:26:34 (2 years ago)
- Location:
- CONFIG_DEVT/IPSLCM6.5_work_ENSEMBLES/modeles/XIOS/src
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
CONFIG_DEVT/IPSLCM6.5_work_ENSEMBLES/modeles/XIOS/src/config/axis_attribute.conf
r5501 r5977 14 14 DECLARE_ATTRIBUTE(int, n_glo) 15 15 DECLARE_ENUM2(positive, up, down) 16 DECLARE_ENUM 4(axis_type, X, Y, Z, T)16 DECLARE_ENUM5(axis_type, X, Y, Z, T, E) 17 17 18 18 DECLARE_ATTRIBUTE(StdString, dim_name) -
CONFIG_DEVT/IPSLCM6.5_work_ENSEMBLES/modeles/XIOS/src/io/nc4_data_output.cpp
r5861 r5977 2634 2634 } 2635 2635 2636 2636 2637 // suppose first dim is dedicated for ensemble 2637 double defaultValue=field->default_value ; 2638 std::vector<StdString> axisList = grid->getAxisList(); 2639 if (!axisList.empty()) 2640 { 2641 CAxis* axis = CAxis::get(axisList[axisList.size() - 1]); 2642 if (axis->axis_type == CAxis::axis_type_attr::E) 2643 { 2644 start[0] = axis->data_begin ; 2645 count[0] = axis->data_n ; 2646 } 2647 } 2638 2648 size_t slice=1 ; 2639 2649 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 2650 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 2651 2652 ostringstream str ; 2653 str<<"write data parameter "<<fieldid<<" "<<field->getNStep()<<" start : " ; 2654 for(auto it : start) str<<" "<<it ; 2655 str<<" count : " ; 2656 for(auto it : count) str<<" "<<it ; 2657 info(0)<<str.str()<<endl ; 2658 cout<<str.str()<<endl ; 2665 2659 CTimer::get("Files : writing data").resume(); 2660 double t0=CTimer::getTime(); 2666 2661 SuperClassWriter::writeData(newData, fieldid, isCollective, field->getNStep() - 1, &start, &count); 2662 double t1=CTimer::getTime(); 2663 double dataSize=1 ; 2664 for(auto it : count) dataSize*=it ; 2665 info(0)<<"Field "<<fieldid<<" : size "<<dataSize<<" --> Bandwith "<<dataSize/(t1-t0)/(1024*1024)*4<<" Mb/s"<<endl ; 2666 2667 2667 CTimer::get("Files : writing data").suspend(); 2668 2668
Note: See TracChangeset
for help on using the changeset viewer.