Index: /issm/trunk/src/m/classes/groundingline.m
===================================================================
--- /issm/trunk/src/m/classes/groundingline.m	(revision 9629)
+++ /issm/trunk/src/m/classes/groundingline.m	(revision 9629)
@@ -0,0 +1,45 @@
+%CONSTANTS class definition
+%
+%   Usage:
+%      groundingline=groundingline();
+
+classdef groundingline
+	properties (SetAccess=public) 
+		migration    = modelfield('default','','marshall',true,'preprocess','StringToEnum','format','Integer');
+		melting_rate = modelfield('default',NaN,'marshall',true,'format','Double');
+	end
+	methods
+		function obj = groundingline(varargin) % {{{
+			switch nargin
+				case 0
+					obj=setdefaultparameters(obj);
+				case 1
+					in=varargin{1};
+					if (isa(in,'numeric') & in==0),
+						% requesting templates do nothing
+					else
+						error('constructor not supported');
+					end 
+				otherwise
+					error('constructor not supported');
+			end
+		end % }}}
+		function obj = setdefaultparameters(obj) % {{{
+
+			%first, use the defaults provided by the properties definition above. 
+			fieldnames=fields(obj);
+			for i=1:length(fieldnames),
+				fieldname=fieldnames{i};
+				obj.(fieldname)=obj.(fieldname).default;
+			end
+
+			%Type of migration
+			obj.migration='None';
+
+			%basal melting rate correction: 
+			obj.melting_rate=0; 
+
+
+		end % }}}
+	end
+end
Index: /issm/trunk/src/m/classes/model/model.m
===================================================================
--- /issm/trunk/src/m/classes/model/model.m	(revision 9628)
+++ /issm/trunk/src/m/classes/model/model.m	(revision 9629)
@@ -25,4 +25,5 @@
 		 miscellaneous = modelfield('default',0,'marshall',true);
 		 timestepping = modelfield('default',0,'marshall',true);
+		 groundingline = modelfield('default',0,'marshall',true);
 
 		 %FIXME: all other fields should belong to other classes
@@ -193,5 +194,4 @@
 		 temperature                    = modelfield('default',NaN,'marshall',true,'format','DoubleMat','mattype',1); %temperature solution vector
 		 waterfraction                  = modelfield('default',NaN,'marshall',true,'format','DoubleMat','mattype',1);
-		 groundingline_melting_rate                = modelfield('default',NaN,'marshall',true,'format','Double');
 		 pressure                       = modelfield('default',NaN,'marshall',true,'format','DoubleMat','mattype',1);
 		 %Hydrology
@@ -226,7 +226,4 @@
 		 ad_forward = modelfield('default',true,'marshall',true,'format','Boolean');
 		 ad_reverse = modelfield('default',false,'marshall',true,'format','Boolean');
-
-		 %grounding line migration: 
-		 groundingline_migration = modelfield('default','','marshall',true,'preprocess','StringToEnum','format','Integer');
 
 		 %partitioner:
@@ -468,7 +465,7 @@
 			 end
 			 if isnumeric(structmd.groundingline_migration),
-				 if (structmd.groundingline_migration==272), md.groundingline_migration='None';      end
-				 if (structmd.groundingline_migration==273), md.groundingline_migration='AgressiveMigration';  end
-				 if (structmd.groundingline_migration==274), md.groundingline_migration='SoftMigration'; end
+				 if (structmd.groundingline_migration==272), md.groundingline.migration='None';      end
+				 if (structmd.groundingline_migration==273), md.groundingline.migration='AgressiveMigration';  end
+				 if (structmd.groundingline_migration==274), md.groundingline.migration='SoftMigration'; end
 			 end
 			 if isnumeric(md.control_type),
@@ -538,4 +535,5 @@
 			 md.miscellaneous=miscellaneous;
 			 md.timestepping=timestepping;
+			 md.groundingline=groundingline;
 
 			 %Materials parameters
@@ -552,7 +550,4 @@
 			 %ice latent heat of fusion L (J/kg)
 			 md.latentheat=3.34*10^5;
-
-			 %basal melting rate correction: 
-			 md.groundingline_melting_rate=0; 
 
 			 %ice thermal conductivity lamda (W/m/K)
@@ -683,7 +678,4 @@
 			 %NaN if not applied
 			 md.eps_cm=NaN; %not activated
-
-			 %grounding line migration: 
-			 md.groundingline_migration='None';
 
 			 %How often to save results, default is 1 so save every step
Index: /issm/trunk/src/m/model/ismodelselfconsistent.m
===================================================================
--- /issm/trunk/src/m/model/ismodelselfconsistent.m	(revision 9628)
+++ /issm/trunk/src/m/model/ismodelselfconsistent.m	(revision 9629)
@@ -120,8 +120,8 @@
 end
 %GROUNDING LINE MIGRATION {{{1
-if ~ismember({md.groundingline_migration},{'None' 'AgressiveMigration' 'SoftMigration'}),
-	message(['model not consistent: model ' md.miscellaneous.name ' groundingline_migration field should be ''None'' ''AgressiveMigration'' or ''SoftMigration''']);
-end
-if ~strcmp(md.groundingline_migration,'None'),
+if ~ismember({md.groundingline.migration},{'None' 'AgressiveMigration' 'SoftMigration'}),
+	message(['model not consistent: model ' md.miscellaneous.name ' groundingline.migration field should be ''None'' ''AgressiveMigration'' or ''SoftMigration''']);
+end
+if ~strcmp(md.groundingline.migration,'None'),
 	if (md.dim==3 | strcmpi(md.cluster.name,'none')),
 		message(['model ' md.miscellaneous.name ' requesting grounding line migration, but grounding line module only implemented for 2d models and parallel runs!']);
Index: /issm/trunk/src/m/model/tres.m
===================================================================
--- /issm/trunk/src/m/model/tres.m	(revision 9628)
+++ /issm/trunk/src/m/model/tres.m	(revision 9629)
@@ -67,5 +67,5 @@
 			results2(count).time=md.results.TransientSolution(i).time;
 			results2(count).step=md.results.TransientSolution(i).step;
-			if ~strcmpi(md.groundingline_migration,'None'),
+			if ~strcmpi(md.groundingline.migration,'None'),
 				results2(count).ElementOnIceShelf=md.results.TransientSolution(i).ElementOnIceShelf;
 			end
Index: sm/trunk/src/m/utils/Mesh/BuildAdaptedMesh.m
===================================================================
--- /issm/trunk/src/m/utils/Mesh/BuildAdaptedMesh.m	(revision 9628)
+++ 	(revision )
@@ -1,64 +1,0 @@
-function md=BuildAdaptedMesh
-%BUILDADAPTEDMESH - Build model of Antarctica by refining according to observed velocity error estimator
-%
-%   Usage:
-%      md=BuildAdaptedMesh
-
-nsteps=1;
-resolution=50000;
-scaling=1.2;
-epsilon=.5;
-
-velpath='/proj/ice/larour/Glaciology/Model_Data/RignotAntarcticaVel1km/RignotAntVel';
-%velpath='/proj/ice/larour/Glaciology/Model_Data/BamberAntarcticaVel1km/velocity';
-%velpath='/proj/ice/larour/Glaciology/Model_Data/mosaicAnt1km_ramp_ers_alos/RignotAntVel';
-
-domainoutline='DomainOutline.exp';
-groundingline='GroundingLine.exp';
-icestreams='Icestream.exp';
-parameterfile='Basins.par';
-
-%clear data
-clear md
-
-%build new model
-md=model;
-
-%mesh with initial resolution
-md=mesh(md,domainoutline,resolution);
-disp(['First mesh, number of elements: ' num2str(md.numberofelements)]);
-
-%load velocities 
-eval(['load ' velpath]);
-
-%start mesh adaptation
-for i=1:nsteps,
-	disp(['Iteration #' num2str(i) '/' num2str(nsteps)]);
-
-	%interpolate velocities onto mesh
-	disp('   interpolating velocities');
-	md.vx_obs=DataInterp(x_m,y_m,vx*md.constants.yts,md.x,md.y);
-	md.vy_obs=DataInterp(x_m,y_m,vy*md.constants.yts,md.x,md.y);
-	md.vel_obs=sqrt(md.vx_obs.^2+md.vy_obs.^2);
-
-	%adapt according to velocities
-	disp('   adapting');
-	md=meshadaptation(md,md.vel_obs,scaling,epsilon);
-end
-	
-disp(['Final mesh, number of elements: ' num2str(md.numberofelements)]);
-
-md.vx_obs=DataInterp(x_m,y_m,vx*md.constants.yts,md.x,md.y);
-md.vy_obs=DataInterp(x_m,y_m,vy*md.constants.yts,md.x,md.y);
-md.vel_obs=sqrt(md.vx_obs.^2+md.vy_obs.^2);
-return;
-
-%parameterize model
-disp('Parameterizing');
-md=geography(md,groundingline,icestreams);
-md=parameterize(md,parameterfile);
-
-%md.vx_obs=DataInterp(x_m,y_m,vx*md.constants.yts,md.x,md.y);
-%md.vy_obs=DataInterp(x_m,y_m,vy*md.constants.yts,md.x,md.y);
-%md.vel_obs=sqrt(md.vx_obs.^2+md.vy_obs.^2);
-%return;
Index: /issm/trunk/template
===================================================================
--- /issm/trunk/template	(revision 9628)
+++ /issm/trunk/template	(revision 9629)
@@ -163,8 +163,4 @@
    isgroundingline -> add
    requested_outputs
-}}}
-goundingline {{{
-	groundingline_migration -> rename migration_type
-	groundingline_melting_rate -> rename melting_rate
 }}}
 inversion{{{ 
Index: /issm/trunk/test/NightlyRun/test446.m
===================================================================
--- /issm/trunk/test/NightlyRun/test446.m	(revision 9628)
+++ /issm/trunk/test/NightlyRun/test446.m	(revision 9629)
@@ -43,9 +43,9 @@
 %test different grounding line dynamics.
 %grounding line: 
-md.groundingline_migration='AgressiveMigration';
+md.groundingline.migration='AgressiveMigration';
 md=solve(md,GroundinglineMigration2DSolutionEnum);
 element_on_iceshelf_agressive=PatchToVec(md.results.GroundinglineMigration2DSolution.ElementOnIceShelf);
 
-md.groundingline_migration='SoftMigration';
+md.groundingline.migration='SoftMigration';
 md=solve(md,GroundinglineMigration2DSolutionEnum);
 element_on_iceshelf_soft=PatchToVec(md.results.GroundinglineMigration2DSolution.ElementOnIceShelf);
Index: /issm/trunk/test/Par/RoundSheetShelf.par
===================================================================
--- /issm/trunk/test/Par/RoundSheetShelf.par	(revision 9628)
+++ /issm/trunk/test/Par/RoundSheetShelf.par	(revision 9629)
@@ -68,5 +68,5 @@
 
 %bathymetry and grounding line migration:
-md.groundingline_migration='AgressiveMigration';
+md.groundingline.migration='AgressiveMigration';
 md.bathymetry=md.bed;
 pos=find(md.nodeoniceshelf); md.bathymetry(pos)=md.bed(pos)-900;
