Index: ../trunk-jpl/src/c/shared/Enum/EnumDefinitions.h
===================================================================
--- ../trunk-jpl/src/c/shared/Enum/EnumDefinitions.h	(revision 18860)
+++ ../trunk-jpl/src/c/shared/Enum/EnumDefinitions.h	(revision 18861)
@@ -716,6 +716,7 @@
 	SubelementMigrationEnum,
 	SubelementMigration2Enum,
 	ContactEnum,
+	GroundingOnlyEnum,
 	MaskGroundediceLevelsetEnum,
 	/*}}}*/
 	/*Gauss{{{*/
Index: ../trunk-jpl/src/c/modules/GroundinglineMigrationx/GroundinglineMigrationx.cpp
===================================================================
--- ../trunk-jpl/src/c/modules/GroundinglineMigrationx/GroundinglineMigrationx.cpp	(revision 18860)
+++ ../trunk-jpl/src/c/modules/GroundinglineMigrationx/GroundinglineMigrationx.cpp	(revision 18861)
@@ -38,6 +38,7 @@
 		case AggressiveMigrationEnum:
 		case SubelementMigrationEnum:
 		case SubelementMigration2Enum:
+		case GroundingOnlyEnum:
 			/*Nothing additional to do here, MigrateGroundingLine takes care of everything*/
 			break;
 		default:
@@ -80,21 +81,12 @@
 	vertexfloating->Assemble();
 	serial_vertexgrounded=vertexgrounded->ToMPISerial();
 	serial_vertexfloating=vertexfloating->ToMPISerial();
-
-	/*find vertices on GL */
 	for(int i=0;i<numberofvertices;i++){
-		if(serial_vertexgrounded[i]==1. && serial_vertexfloating[i]==1.){
-			phi[i]=0.;
-		}
-		else if(serial_vertexgrounded[i]==1.){
-			phi[i]=1.;
-		}
-		else if(serial_vertexfloating[i]==1.){
-			phi[i]=-1.;
-		}
-		else{
-			phi[i]=9999.;
-		}
+			if (serial_vertexgrounded[i]==1. && serial_vertexfloating[i]==1.) phi[i]=0.;
+			else if (serial_vertexgrounded[i]==1) phi[i]=1;
+			else if (serial_vertexfloating[i]==1) phi[i]=-1;
+			else if (serial_vertexgrounded[i]>10) phi[i]=9999;
+			else phi[i]=-9999;
 	}
 
 	/*free ressouces and return: */
Index: ../trunk-jpl/src/c/classes/Elements/Element.cpp
===================================================================
--- ../trunk-jpl/src/c/classes/Elements/Element.cpp	(revision 18860)
+++ ../trunk-jpl/src/c/classes/Elements/Element.cpp	(revision 18861)
@@ -1097,7 +1097,7 @@
 		if(this->inputs->Max(MaskGroundediceLevelsetEnum) > 0.) shelf=false;
 		else shelf=true;
 	}
-	else if(migration_style==NoneEnum || migration_style==AggressiveMigrationEnum || migration_style==SoftMigrationEnum){ //Floating if all nodes are floating
+	else if(migration_style==NoneEnum || migration_style==AggressiveMigrationEnum || migration_style==SoftMigrationEnum || migration_style==GroundingOnlyEnum){ //Floating if all nodes are floating
 		if(this->inputs->Min(MaskGroundediceLevelsetEnum) > 0.) shelf=false;
 		else shelf=true;
 	}
@@ -1232,6 +1232,7 @@
 			phi[i]=phi_ungrounding[vertices[i]->Pid()]; 
 			if(phi[i]>=0.) b[i]=r[i];
 		}
+		else if(migration_style == GroundingOnlyEnum && b[i]<r[i]) b[i]=r[i];
 		/*Ice shelf: if bed below bathymetry, impose it at the bathymetry and update surface, elso do nothing */
 		else if(phi[i]<=0.){
 			if(b[i]<=r[i]){ 
@@ -1254,7 +1255,7 @@
 					b[i]        = -density*h[i];
 				}
 				else{
-					if(migration_style!=SoftMigrationEnum) _error_("Error: migration should be Aggressive, Soft or Subelement");
+					if(migration_style!=SoftMigrationEnum && migration_style!=ContactEnum && migration_style!=GroundingOnlyEnum) _error_("Error: migration should be Aggressive, Soft, Subelement, Contact or GroundingOnly");
 				}
 			}
 		}
Index: ../trunk-jpl/src/m/classes/groundingline.py
===================================================================
--- ../trunk-jpl/src/m/classes/groundingline.py	(revision 18860)
+++ ../trunk-jpl/src/m/classes/groundingline.py	(revision 18861)
@@ -36,7 +36,7 @@
 	#}}}
 	def checkconsistency(self,md,solution,analyses):    # {{{
 
-		md = checkfield(md,'fieldname','groundingline.migration','values',['None','AggressiveMigration','SoftMigration','SubelementMigration','SubelementMigration2','Contact'])
+		md = checkfield(md,'fieldname','groundingline.migration','values',['None','AggressiveMigration','SoftMigration','SubelementMigration','SubelementMigration2','Contact','GroundingOnly'])
 
 		if not m.strcmp(self.migration,'None'):
 			if numpy.any(numpy.isnan(md.geometry.bed)):
Index: ../trunk-jpl/src/m/classes/groundingline.m
===================================================================
--- ../trunk-jpl/src/m/classes/groundingline.m	(revision 18860)
+++ ../trunk-jpl/src/m/classes/groundingline.m	(revision 18861)
@@ -39,7 +39,7 @@
 		end % }}}
 		function md = checkconsistency(obj,md,solution,analyses) % {{{
 
-			md = checkfield(md,'fieldname','groundingline.migration','values',{'None' 'AggressiveMigration' 'SoftMigration' 'SubelementMigration' 'SubelementMigration2' 'Contact' 'None'});
+			md = checkfield(md,'fieldname','groundingline.migration','values',{'None' 'AggressiveMigration' 'SoftMigration' 'SubelementMigration' 'SubelementMigration2' 'Contact' 'None' 'GroundingOnly'});
 
 			if ~strcmp(obj.migration,'None'),
 				if isnan(md.geometry.bed),
