Index: /issm/trunk-jpl/src/m/contrib/defleurian/netCDF/export_netCDF.py
===================================================================
--- /issm/trunk-jpl/src/m/contrib/defleurian/netCDF/export_netCDF.py	(revision 25483)
+++ /issm/trunk-jpl/src/m/contrib/defleurian/netCDF/export_netCDF.py	(revision 25484)
@@ -17,5 +17,4 @@
         else:
             for r in row:
-                #print("appending {}".format(r))
                 self.data.append(r)
 
@@ -98,40 +97,57 @@
                     if ncvar is not None:
                         FillVar(ncvar, Var)
-                else:  # this is a list of fields, specific treatment needed
+                else:  # this is a list of fields, specific treatment needed (usually results or outputdefinitions)
                     if verbose > 4:
                         print("list of fields happens for {}.{}".format(group, field))
                     Listsize = len(md.__dict__[group].__dict__[field])
-                    Subgroup = NCgroup.createGroup(str(field))
-                    try:
-                        #take the class of the first element to define nc class and get the list of variables
-                        Subgroup.__setattr__('classtype', md.__dict__[group].__dict__[field][0].__class__.__name__)
-                        subfields = dict.keys(md.__dict__[group].__dict__[field][0].__dict__)
-                    except (IndexError, AttributeError):
-                        Subgroup.__setattr__('classtype', md.__dict__[group].__dict__[field].__class__.__name__)
-                        subfields = dict.keys(md.__dict__[group].__dict__[field].__getitem__(0))
-
-                    for subfield in subfields:
-                        if subfield not in['errlog', 'outlog']:
-                            StackedVar = ResTable()
-                            for listindex in range(0, Listsize):
-                                try:
-                                    Var = md.__dict__[group].__dict__[field].__getitem__(listindex).__dict__[subfield]
-                                    lastindex = listindex + 1
-                                except AttributeError:
-                                    Var = md.__dict__[group].__dict__[field].__getitem__(listindex)[subfield]
-                                except KeyError:
-                                    #Some fields only exist for the first step
-                                    lastindex = listindex
-                                    continue
+                    if group == 'results':  #for results we reshape the datas following time rather than subgrouping
+                        Subgroup = NCgroup.createGroup(str(field))
+                        try:
+                            #take the class of the first element to define nc class and get the list of variables
+                            Subgroup.__setattr__('classtype', md.__dict__[group].__dict__[field][0].__class__.__name__)
+                            subfields = dict.keys(md.__dict__[group].__dict__[field][0].__dict__)
+                        except (IndexError, AttributeError):
+                            Subgroup.__setattr__('classtype', md.__dict__[group].__dict__[field].__class__.__name__)
+                            subfields = dict.keys(md.__dict__[group].__dict__[field].__getitem__(0))
+                        for subfield in subfields:
+                            if subfield not in['errlog', 'outlog']:
+                                StackedVar = ResTable()
+                                for listindex in range(0, Listsize):
+                                    try:
+                                        Var = md.__dict__[group].__dict__[field].__getitem__(listindex).__dict__[subfield]
+                                        lastindex = listindex + 1
+                                    except AttributeError:
+                                        Var = md.__dict__[group].__dict__[field].__getitem__(listindex)[subfield]
+                                    except KeyError:
+                                        #Some fields only exist for the first step
+                                        lastindex = listindex
+                                        continue
+                                    Var = SqueezeVar(Var)
+                                    StackedVar.update(Var)
+                                if verbose > 4:
+                                    print("=$$=creating var for {}.{}.{}".format(group, field, subfield))
+                                    print("last index of the list is {}".format(lastindex))
+                                StackedVar = SqueezeVar(StackedVar.finalize(int(lastindex)))
+                                DimDict, ncvar = CreateVar(NCData, StackedVar, subfield, Subgroup, DimDict)
+                                #and fill it up
+                                if ncvar is not None:
+                                    FillVar(ncvar, StackedVar)
+                    elif group == 'outputdefinition':  #for outputdefinition we keep a subgroup format
+                        for listindex in range(0, Listsize):
+                            Subgroupname = str(md.__dict__[group].__dict__[field][listindex].definitionstring)
+                            Subgroup = NCgroup.createGroup(Subgroupname)
+                            Subgroup.__setattr__('classtype', md.__dict__[group].__dict__[field][listindex].__class__.__name__)
+                            subfields = dict.keys(md.__dict__[group].__dict__[field][listindex].__dict__)
+                            for subfield in subfields:
+                                Var = md.__dict__[group].__dict__[field].__getitem__(listindex).__dict__[subfield]
                                 Var = SqueezeVar(Var)
-                                StackedVar.update(Var)
-                            if verbose > 4:
-                                print("=$$=creating var for {}.{}.{}".format(group, field, subfield))
-                                print("last index of the list is {}".format(lastindex))
-                            StackedVar = SqueezeVar(StackedVar.finalize(int(lastindex)))
-                            DimDict, ncvar = CreateVar(NCData, StackedVar, subfield, Subgroup, DimDict)
-                            #and fill it up
-                            if ncvar is not None:
-                                FillVar(ncvar, StackedVar)
+                                if verbose > 4:
+                                    print("=--=creating var for {}.{}[{}].{}".format(group, field, listindex, subfield))
+                                DimDict, ncvar = CreateVar(NCData, Var, subfield, Subgroup, DimDict)
+                                #and fill it up
+                                if ncvar is not None:
+                                    FillVar(ncvar, Var)
+                    else:
+                        print("WARNING: unknown treatment for md.{}".format(group))
 
             # No subgroup, we directly treat the variable
@@ -220,4 +236,6 @@
     # treating scalar string or bool as atribute
     if val_type in [str, bool]:
+        if field == 'name':  # it looks like netCDF does not like attributes that are called "name"
+            field = 'varname'
         Group.__setattr__(str(field).swapcase(), str(var))
         ncvar = None
@@ -226,4 +244,6 @@
         #if all strings are the same set it as an attribute
         if all(var == var[0]):
+            if field == 'name':
+                field = 'varname'
             Group.__setattr__(str(field).swapcase(), str(var[0]))
             ncvar = None
