Ignore:
Timestamp:
02/03/14 14:16:20 (10 years ago)
Author:
ymipsl
Message:

Enhancement : user defined global and field attribute can be output in the netcdfcf file.
A variable child element inclosed into a file element will be output as a global file attribute.
A variable child element inclosed into a field element will be output as a field attribute.

+ variable fortran interface added

YM

File:
1 edited

Legend:

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

    r465 r472  
    645645         SuperClassWriter::addAttribute 
    646646               ("online_operation", field->operation.getValue(), &fieldid); 
     647 
     648        // write child variables as attributes 
     649         
     650         
     651         vector<CVariable*> listVars = field->getAllVariables() ; 
     652         for (vector<CVariable*>::iterator it = listVars.begin() ;it != listVars.end(); it++) writeAttribute_(*it, fieldid) ; 
     653 
    647654                
    648655         if (wtime) 
     
    710717         else singleDomain=false ; 
    711718      } 
     719  
     720      void CNc4DataOutput::writeAttribute_ (CVariable* var, const string& fieldId) 
     721      { 
     722        string name ; 
     723        if (!var->name.isEmpty()) name=var->name ; 
     724        else if (var->hasId()) name=var->getId() ; 
     725        else return ; 
     726         
     727        if (var->getVarType()==CVariable::t_int) addAttribute(name,var->getData<int>(),&fieldId) ;  
     728        else if (var->getVarType()==CVariable::t_short_int) addAttribute(name,var->getData<short int>(),&fieldId) ;  
     729        else if (var->getVarType()==CVariable::t_long_int) addAttribute(name,var->getData<long int>(),&fieldId) ;  
     730        else if (var->getVarType()==CVariable::t_float) addAttribute(name,var->getData<float>(),&fieldId) ;  
     731        else if (var->getVarType()==CVariable::t_double) addAttribute(name,var->getData<double>(),&fieldId) ;  
     732        else addAttribute(name,var->getData<string>(),&fieldId) ;  
     733     } 
     734  
     735     void CNc4DataOutput::writeAttribute_ (CVariable* var) 
     736     { 
     737        string name ; 
     738        if (!var->name.isEmpty()) name=var->name ; 
     739        else if (var->hasId()) name=var->getId() ; 
     740        else return ; 
     741         
     742        if (var->getVarType()==CVariable::t_int) addAttribute(name,var->getData<int>()) ;  
     743        else if (var->getVarType()==CVariable::t_short_int) addAttribute(name,var->getData<short int>()) ;  
     744        else if (var->getVarType()==CVariable::t_long_int) addAttribute(name,var->getData<long int>()) ;  
     745        else if (var->getVarType()==CVariable::t_float) addAttribute(name,var->getData<float>()) ;  
     746        else if (var->getVarType()==CVariable::t_double) addAttribute(name,var->getData<double>()) ;  
     747        else addAttribute(name,var->getData<string>()) ;  
     748     }      
    712749  
    713750      void CNc4DataOutput::syncFile_ (void) 
Note: See TracChangeset for help on using the changeset viewer.