Index: /issm/trunk-jpl/src/c/Makefile.am
===================================================================
--- /issm/trunk-jpl/src/c/Makefile.am	(revision 26825)
+++ /issm/trunk-jpl/src/c/Makefile.am	(revision 26826)
@@ -273,4 +273,5 @@
 	./classes/RiftStruct.cpp \
 	./modules/ModelProcessorx/Transient/UpdateElementsTransient.cpp \
+	./modules/ModelProcessorx/Transient/UpdateParametersTransient.cpp \
 	./cores/transient_core.cpp \
 	./cores/steadystate_core.cpp \
Index: /issm/trunk-jpl/src/c/cores/groundingline_core.cpp
===================================================================
--- /issm/trunk-jpl/src/c/cores/groundingline_core.cpp	(revision 26825)
+++ /issm/trunk-jpl/src/c/cores/groundingline_core.cpp	(revision 26826)
@@ -16,8 +16,12 @@
 
 	/* intermediaries */
+	int numoutputs;
 	bool save_results;
+	char** requested_outputs = NULL;
 
 	/* recover parameters */
 	femmodel->parameters->FindParam(&save_results,SaveResultsEnum);
+	femmodel->parameters->FindParam(&numoutputs,GroundinglineNumRequestedOutputsEnum);
+	if(numoutputs) femmodel->parameters->FindParam(&requested_outputs,&numoutputs,GroundinglineRequestedOutputsEnum);
 
 	/*Move grounding line*/
@@ -33,8 +37,9 @@
 	extrudefrombase_core(femmodel);
 
-	if(save_results){
-		int outputs[3] = {SurfaceEnum,BaseEnum,MaskOceanLevelsetEnum};
-		femmodel->RequestedOutputsx(&femmodel->results,&outputs[0],3);
-	}
+	/*Save results*/
+	if(save_results) femmodel->RequestedOutputsx(&femmodel->results,requested_outputs,numoutputs);
+
+	/*Free ressources:*/
+   if(numoutputs){for(int i=0;i<numoutputs;i++){xDelete<char>(requested_outputs[i]);} xDelete<char*>(requested_outputs);}
 
 	/*Stop profiler*/
Index: /issm/trunk-jpl/src/c/modules/ModelProcessorx/ModelProcessorx.cpp
===================================================================
--- /issm/trunk-jpl/src/c/modules/ModelProcessorx/ModelProcessorx.cpp	(revision 26825)
+++ /issm/trunk-jpl/src/c/modules/ModelProcessorx/ModelProcessorx.cpp	(revision 26826)
@@ -81,6 +81,8 @@
 	UpdateElementsAndMaterialsDakota(elements,inputs,materials,iomodel);
 	#endif
-	if(solution_enum==TransientSolutionEnum) UpdateElementsTransient(elements,parameters,inputs,iomodel);
-
+	if(solution_enum==TransientSolutionEnum){
+		UpdateParametersTransient(parameters,iomodel);
+		UpdateElementsTransient(elements,parameters,inputs,iomodel);
+	}
 	/*Output definitions dataset: */
 	if(VerboseMProcessor()) _printf0_("   creating output definitions" << "\n");
Index: /issm/trunk-jpl/src/c/modules/ModelProcessorx/ModelProcessorx.h
===================================================================
--- /issm/trunk-jpl/src/c/modules/ModelProcessorx/ModelProcessorx.h	(revision 26825)
+++ /issm/trunk-jpl/src/c/modules/ModelProcessorx/ModelProcessorx.h	(revision 26826)
@@ -24,4 +24,5 @@
 void UpdateElementsAndMaterialsDakota(Elements* elements,Inputs* inputs,Materials* materials, IoModel* iomodel);
 void UpdateElementsTransient(Elements* elements,Parameters* parameters,Inputs* inputs,IoModel* iomodel);
+void UpdateParametersTransient(Parameters* parameters,IoModel* iomodel);
 void CreateNodes(Nodes*nodes, IoModel* iomodel,int analysis,int finite_element,bool isamr=false,int approximation=NoneApproximationEnum,int* approximations=NULL);
 
Index: /issm/trunk-jpl/src/c/shared/Enum/Enum.vim
===================================================================
--- /issm/trunk-jpl/src/c/shared/Enum/Enum.vim	(revision 26825)
+++ /issm/trunk-jpl/src/c/shared/Enum/Enum.vim	(revision 26826)
@@ -190,4 +190,6 @@
 syn keyword cConstant GroundinglineMeltInterpolationEnum
 syn keyword cConstant GroundinglineMigrationEnum
+syn keyword cConstant GroundinglineNumRequestedOutputsEnum
+syn keyword cConstant GroundinglineRequestedOutputsEnum
 syn keyword cConstant HydrologyAveragingEnum
 syn keyword cConstant HydrologyCavitySpacingEnum
Index: /issm/trunk-jpl/src/c/shared/Enum/EnumDefinitions.h
===================================================================
--- /issm/trunk-jpl/src/c/shared/Enum/EnumDefinitions.h	(revision 26825)
+++ /issm/trunk-jpl/src/c/shared/Enum/EnumDefinitions.h	(revision 26826)
@@ -184,4 +184,6 @@
 	GroundinglineMeltInterpolationEnum,
 	GroundinglineMigrationEnum,
+	GroundinglineNumRequestedOutputsEnum,
+	GroundinglineRequestedOutputsEnum,
 	HydrologyAveragingEnum,
 	HydrologyCavitySpacingEnum,
Index: /issm/trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp
===================================================================
--- /issm/trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp	(revision 26825)
+++ /issm/trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp	(revision 26826)
@@ -192,4 +192,6 @@
 		case GroundinglineMeltInterpolationEnum : return "GroundinglineMeltInterpolation";
 		case GroundinglineMigrationEnum : return "GroundinglineMigration";
+		case GroundinglineNumRequestedOutputsEnum : return "GroundinglineNumRequestedOutputs";
+		case GroundinglineRequestedOutputsEnum : return "GroundinglineRequestedOutputs";
 		case HydrologyAveragingEnum : return "HydrologyAveraging";
 		case HydrologyCavitySpacingEnum : return "HydrologyCavitySpacing";
Index: /issm/trunk-jpl/src/c/shared/Enum/Enumjl.vim
===================================================================
--- /issm/trunk-jpl/src/c/shared/Enum/Enumjl.vim	(revision 26825)
+++ /issm/trunk-jpl/src/c/shared/Enum/Enumjl.vim	(revision 26826)
@@ -183,4 +183,6 @@
 syn keyword juliaConstC GroundinglineMeltInterpolationEnum
 syn keyword juliaConstC GroundinglineMigrationEnum
+syn keyword juliaConstC GroundinglineNumRequestedOutputsEnum
+syn keyword juliaConstC GroundinglineRequestedOutputsEnum
 syn keyword juliaConstC HydrologyAveragingEnum
 syn keyword juliaConstC HydrologyCavitySpacingEnum
Index: /issm/trunk-jpl/src/m/classes/groundingline.m
===================================================================
--- /issm/trunk-jpl/src/m/classes/groundingline.m	(revision 26825)
+++ /issm/trunk-jpl/src/m/classes/groundingline.m	(revision 26826)
@@ -9,4 +9,5 @@
 		friction_interpolation = '';
 		melt_interpolation     = '';
+		requested_outputs      = {};
 	end
 	methods
@@ -25,4 +26,6 @@
 			self.friction_interpolation= 'SubelementFriction1';
 			self.melt_interpolation    = 'NoMeltOnPartiallyFloating';
+			%default output
+         self.requested_outputs     = {'default'};
 
 		end % }}}
@@ -32,4 +35,5 @@
 			md = checkfield(md,'fieldname','groundingline.friction_interpolation','values',{'NoFrictionOnPartiallyFloating' 'SubelementFriction1' 'SubelementFriction2'});
 			md = checkfield(md,'fieldname','groundingline.melt_interpolation','values',{'NoMeltOnPartiallyFloating' 'SubelementMelt1' 'SubelementMelt2' 'FullMeltOnPartiallyFloating'});
+			md = checkfield(md,'fieldname','groundingline.requested_outputs','stringrow',1);
 
 			if ~strcmp(self.migration,'None') & strcmp(solution,'TransientSolution') & md.transient.isgroundingline==1,
@@ -48,4 +52,9 @@
 
 		end % }}}
+		function list = defaultoutputs(self,md) % {{{
+      
+			list = {'Surface','Base','MaskOceanLevelset'};
+         
+      end % }}}
 		function disp(self) % {{{
 			disp(sprintf('   grounding line migration parameters:'));
@@ -53,4 +62,5 @@
 			fielddisplay(self,'friction_interpolation','type of friction interpolation for partially floating elements: ''NoFrictionOnPartiallyFloating'',''SubelementFriction1'', or ''SubelementFriction2''');
 			fielddisplay(self,'melt_interpolation','type of melt interpolation for partially floating elements: ''NoMeltOnPartiallyFloating'',''SubelementMelt1'',''SubelementMelt2'', or ''FullMeltOnPartiallyFloating''');
+			fielddisplay(self,'requested_outputs','additional outputs requested');
 
 		end % }}}
@@ -59,10 +69,20 @@
 			WriteData(fid,prefix,'data',self.friction_interpolation,'name','md.groundingline.friction_interpolation','format','String');
 			WriteData(fid,prefix,'data',self.melt_interpolation,'name','md.groundingline.melt_interpolation','format','String');
+			
+			%process requested outputs
+         outputs = self.requested_outputs;
+         pos  = find(ismember(outputs,'default'));
+         if ~isempty(pos),
+            outputs(pos) = [];                         %remove 'default' from outputs
+            outputs      = [outputs defaultoutputs(self,md)]; %add defaults
+         end
+			WriteData(fid,prefix,'data',outputs,'name','md.groundingline.requested_outputs','format','StringArray')
 		end % }}}
 		function savemodeljs(self,fid,modelname) % {{{
 		
 			writejsstring(fid,[modelname '.groundingline.migration'],self.migration);
-			writejsstring(fid,[modelname '.groundingline.friction_interpolation'],self.migration);
-			writejsstring(fid,[modelname '.groundingline.melt_interpolation'],self.migration);
+			writejsstring(fid,[modelname '.groundingline.friction_interpolation'],self.friction_interpolation);
+			writejsstring(fid,[modelname '.groundingline.melt_interpolation'],self.melt_interpolation);
+			writejscellstring(fid,[modelname '.groundingline.requested_outputs'],self.requested_outputs);
 
 		end % }}}
Index: /issm/trunk-jpl/src/m/classes/groundingline.py
===================================================================
--- /issm/trunk-jpl/src/m/classes/groundingline.py	(revision 26825)
+++ /issm/trunk-jpl/src/m/classes/groundingline.py	(revision 26826)
@@ -18,4 +18,5 @@
         self.friction_interpolation = ''
         self.melt_interpolation = ''
+        self.requested_outptuts = []
 
         # Set defaults
@@ -29,6 +30,12 @@
         s += '{}\n'.format(fielddisplay(self, 'migration', 'type of friction interpolation on partially floating elements: ''SubelementFriction1'', ''SubelementFriction2'', ''NoFrictionOnPartiallyFloating'''))
         s += '{}\n'.format(fielddisplay(self, 'migration', 'type of melt interpolation on partially floating elements: \'SubelementMelt1\', \'SubelementMelt2\', \'NoMeltOnPartiallyFloating\', \'FullMeltOnPartiallyFloating\''))
+        s += '{}\n'.format(fielddisplay(self, 'requested_outputs', 'additional outputs requested'))
         return s
     # }}}
+
+    def defaultoutputs(self, md):  # {{{
+        return ['Surface', 'Base','MaskOceanLevelset']
+
+    #}}}
 
     def setdefaultparameters(self):  # {{{
@@ -37,4 +44,6 @@
         self.friction_interpolation = 'SubelementFriction1'
         self.melt_interpolation = 'NoMeltOnPartiallyFloating'
+        # Default output
+        self.requested_outputs = ['default']
 
         return self
@@ -45,4 +54,5 @@
         md = checkfield(md, 'fieldname', 'groundingline.friction_interpolation', 'values', ['SubelementFriction1', 'SubelementFriction2', 'NoFrictionOnPartiallyFloating'])
         md = checkfield(md, 'fieldname', 'groundingline.melt_interpolation', 'values', ['SubelementMelt1', 'SubelementMelt2', 'NoMeltOnPartiallyFloating', 'FullMeltOnPartiallyFloating'])
+        md = checkfield(md, 'fieldname', 'groundingline.requested_outputs', 'stringrow', 1)
 
         if(not m.strcmp(self.migration, 'None') and md.transient.isgroundingline and solution == 'TransientSolution'):
@@ -62,3 +72,11 @@
         WriteData(fid, prefix, 'data', self.friction_interpolation, 'name', 'md.groundingline.friction_interpolation', 'format', 'String')
         WriteData(fid, prefix, 'data', self.melt_interpolation, 'name', 'md.groundingline.melt_interpolation', 'format', 'String')
+        
+        # Process requested outputs
+        outputs = self.requested_outputs
+        indices = [i for i, x in enumerate(outputs) if x == 'default']
+        if len(indices) > 0:
+            outputscopy = outputs[0:max(0, indices[0] - 1)] + self.defaultoutputs(md) + outputs[indices[0] + 1:]
+            outputs = outputscopy
+        WriteData(fid, prefix, 'data', outputs, 'name', 'md.groundingline.requested_outputs', 'format', 'StringArray')
     # }}}
