Index: /issm/trunk-jpl/src/m/contrib/defleurian/netCDF/export_netCDF.py
===================================================================
--- /issm/trunk-jpl/src/m/contrib/defleurian/netCDF/export_netCDF.py	(revision 21643)
+++ /issm/trunk-jpl/src/m/contrib/defleurian/netCDF/export_netCDF.py	(revision 21644)
@@ -1,4 +1,4 @@
 from netCDF4 import Dataset, stringtochar
-import numpy as  np
+import numpy as np
 import time
 import collections
@@ -23,5 +23,5 @@
 	NCData.history = 'Created ' + time.ctime(time.time())
 
-	#gather geometry and timestepping as dimensions
+	#define netCDF dimensions
 	try:
 		StepNum=np.shape(dict.values(md.results.__dict__))[1]
@@ -39,9 +39,9 @@
 			DimDict[len(NewDim)]='DimNum'+str(dimindex)
 
-	#get all model classes and create respective groups
 	typelist=[bool,str,unicode,int,float,complex,
 						collections.OrderedDict,
 						np.int64,np.ndarray,np.float64]
 	groups=dict.keys(md.__dict__)
+	#get all model classes and create respective groups
 	for group in groups:
 		NCgroup=NCData.createGroup(str(group))
@@ -58,12 +58,10 @@
 				else:
 					StdList=type(md.__dict__[group].__dict__[field][0]) in typelist
-
+				NCgroup.__setattr__('classtype', md.__dict__[group].__class__.__name__)
 				if StdList: #this is a standard or empty list just proceed
-					NCgroup.__setattr__('classtype', md.__dict__[group].__class__.__name__)
 					Var=md.__dict__[group].__dict__[field]
-					DimDict=CreateVar(NCData,Var,field,NCgroup,DimDict,False)
+					DimDict=CreateVar(NCData,Var,field,NCgroup,DimDict)
 				else: #this is a list of fields, specific treatment needed
 					Listsize=len(md.__dict__[group].__dict__[field])
-					NCgroup.__setattr__('classtype', md.__dict__[group].__class__.__name__)
 					Subgroup=NCgroup.createGroup(str(field))
 					Subgroup.__setattr__('classtype',md.__dict__[group].__dict__[field].__class__.__name__)
@@ -87,11 +85,15 @@
 								except AttributeError:
 									Var=md.__dict__[group].__dict__[field].__getitem__(listindex)[subfield]
-								DimDict=CreateVar(NCData,Var,subfield,Listgroup,DimDict,False,md.__dict__[group],field,listindex)
+								DimDict=CreateVar(NCData,Var,subfield,Listgroup,DimDict,md.__dict__[group],field,listindex)
+
 			#No subgroup, we directly treat the variable
 			elif type(md.__dict__[group].__dict__[field]) in typelist or field=='bamg':
 				NCgroup.__setattr__('classtype', md.__dict__[group].__class__.__name__)
 				Var=md.__dict__[group].__dict__[field]
-				DimDict=CreateVar(NCData,Var,field,NCgroup,DimDict,False)
-                        else:
+				DimDict=CreateVar(NCData,Var,field,NCgroup,DimDict)
+			elif md.__dict__[group].__dict__[field] is None:
+				print( 'field md.{}.{} is None'.format(group,field))
+				#do nothing
+			else:
 				NCgroup.__setattr__('classtype', str(group))
 				Subgroup=NCgroup.createGroup(str(field))
@@ -102,5 +104,5 @@
 					if str(subfield)!='outlog':
 						Var=md.__dict__[group].__dict__[field].__dict__[subfield]
-						DimDict=CreateVar(NCData,Var,subfield,Subgroup,DimDict,False)
+						DimDict=CreateVar(NCData,Var,subfield,Subgroup,DimDict)
 				
 	NCData.close()
@@ -108,5 +110,5 @@
 #============================================================================
 #Define the variables
-def CreateVar(NCData,var,field,Group,DimDict,istime,*step_args):
+def CreateVar(NCData,var,field,Group,DimDict,*step_args):
 	#grab type
 	try:
@@ -136,5 +138,5 @@
 	#treating list as string table
 	elif val_type==list:
-		dimensions,DimDict=GetDim(NCData,var,val_shape,DimDict,val_dim,istime)
+		dimensions,DimDict=GetDim(NCData,var,val_shape,DimDict,val_dim)
 		#try to get the type from the first element
 		try:
@@ -150,5 +152,5 @@
 	#treating bool tables as string tables
 	elif val_type=='bool':
-		dimensions,DimDict=GetDim(NCData,var,val_shape,DimDict,val_dim,istime)
+		dimensions,DimDict=GetDim(NCData,var,val_shape,DimDict,val_dim)
 		ncvar = Group.createVariable(str(field),str,dimensions,zlib=True)
 		for elt in range(0,val_shape[0]):
@@ -156,5 +158,5 @@
 	#treating dictionaries as tables of strings
 	elif val_type==collections.OrderedDict or val_type==dict:
-		dimensions,DimDict=GetDim(NCData,var,val_shape,DimDict,val_dim,istime)
+		dimensions,DimDict=GetDim(NCData,var,val_shape,DimDict,val_dim)
 		ncvar = Group.createVariable(str(field),str,dimensions,zlib=True)
 		for elt in range(0,val_dim):
@@ -163,30 +165,19 @@
 	#Now dealing with numeric variables
 	else:
-		dimensions,DimDict=GetDim(NCData,var,val_shape,DimDict,val_dim,istime)
+		dimensions,DimDict=GetDim(NCData,var,val_shape,DimDict,val_dim)
 		ncvar = Group.createVariable(str(field),TypeDict[val_type],dimensions,zlib=True)
-		if istime:
-			md=step_args[0]
-			supfield=step_args[1]
-			index=step_args[2]
-			vartab=var
-			timevar=md.__dict__[supfield].__getitem__(index).__dict__[field]
-			try:
-				ncvar[:,:]=timevar[:,:]
-			except ValueError:
-				ncvar[:]=timevar.T[:]
-		else:
-			try:
-				nan_val=np.isnan(var)
-				if nan_val.all():
-					ncvar [:] = 'NaN'
-				else:
-					ncvar[:] = var
-			except TypeError: #type does not accept nan, get vallue of the variable
+		try:
+			nan_val=np.isnan(var)
+			if nan_val.all():
+				ncvar [:] = 'NaN'
+			else:
 				ncvar[:] = var
+		except TypeError: #type does not accept nan, get vallue of the variable
+			ncvar[:] = var
 	return DimDict
 
 #============================================================================
 #retriev the dimension tuple from a dictionnary
-def GetDim(NCData,var,shape,DimDict,i,istime):
+def GetDim(NCData,var,shape,DimDict,i):
 	output=[]
 	#grab dimension
@@ -211,5 +202,3 @@
 				output=[str(DimDict[np.shape(dict.keys(var))[0]])]+[DimDict[2]]
 			break
-	if istime:
-		output=output+['DimNum1']
 	return tuple(output), DimDict
