Index: /issm/trunk/src/m/classes/public/ismodelselfconsistent.m
===================================================================
--- /issm/trunk/src/m/classes/public/ismodelselfconsistent.m	(revision 3588)
+++ /issm/trunk/src/m/classes/public/ismodelselfconsistent.m	(revision 3589)
@@ -338,4 +338,18 @@
 %BALANCEDTHICKNESS
 if md.analysis_type==BalancedthicknessAnalysisEnum
+
+	%VELOCITIES MELTING AND ACCUMULATION
+	fields={'vx','vy','accumulation','melting'};
+	checksize(md,fields,[md.numberofgrids 1]);
+	checknan(md,fields);
+
+	%SPC				 
+	if any(md.spcthickness(find(md.gridonboundary))~=1),		 
+		error(['model not consistent: model ' md.name ' should have all the nodes on boundary constrained in field spcthickness']);			 
+	end 
+end
+
+%BALANCEDTHICKNESS2
+if md.analysis_type==Balancedthickness2AnalysisEnum
 
 	%VELOCITIES MELTING AND ACCUMULATION
Index: /issm/trunk/src/m/classes/public/modelextract.m
===================================================================
--- /issm/trunk/src/m/classes/public/modelextract.m	(revision 3588)
+++ /issm/trunk/src/m/classes/public/modelextract.m	(revision 3589)
@@ -22,6 +22,6 @@
 %some checks
 if ((nargin~=2) | (nargout~=1)),
-	help modelextract2
-	error('modelextract2 error message: bad usage');
+	help modelextract
+	error('modelextract error message: bad usage');
 end
 
Index: /issm/trunk/src/m/classes/public/process_solve_options.m
===================================================================
--- /issm/trunk/src/m/classes/public/process_solve_options.m	(revision 3588)
+++ /issm/trunk/src/m/classes/public/process_solve_options.m	(revision 3589)
@@ -21,5 +21,5 @@
 %check solution type is supported
 if ~ismemberi(analysis_type,{'diagnostic','prognostic','prognostic2','thermal','steadystate','parameters','transient',...
-		'balancedthickness','balancedvelocities','slopecompute'}),
+		'balancedthickness','balancedthickness2','balancedvelocities','slopecompute'}),
 	error(['process_solve_options error message: analysis_type ' analysis_type ' not supported yet!']);
 else
Index: /issm/trunk/src/m/classes/public/solve.m
===================================================================
--- /issm/trunk/src/m/classes/public/solve.m	(revision 3588)
+++ /issm/trunk/src/m/classes/public/solve.m	(revision 3589)
@@ -77,4 +77,7 @@
 	md=balancedthickness(md);
 
+elseif md.analysis_type==Balancedthickness2AnalysisEnum,
+	md=balancedthickness2(md);
+
 elseif md.analysis_type==BalancedvelocitiesAnalysisEnum,
 	md=balancedvelocities(md);
Index: /issm/trunk/src/m/enum/AirEnum.m
===================================================================
--- /issm/trunk/src/m/enum/AirEnum.m	(revision 3588)
+++ /issm/trunk/src/m/enum/AirEnum.m	(revision 3589)
@@ -7,3 +7,3 @@
 %      macro=AirEnum()
 
-macro=75;
+macro=76;
Index: /issm/trunk/src/m/enum/AnalysisTypeFromEnum.m
===================================================================
--- /issm/trunk/src/m/enum/AnalysisTypeFromEnum.m	(revision 3588)
+++ /issm/trunk/src/m/enum/AnalysisTypeFromEnum.m	(revision 3589)
@@ -96,4 +96,8 @@
 end
 
+if enum==Balancedthickness2AnalysisEnum(),
+	string='balancedthickness2';
+end
+
 if enum==BalancedvelocitiesAnalysisEnum(),
 	string='balancedvelocities';
Index: /issm/trunk/src/m/enum/Balancedthickness2AnalysisEnum.m
===================================================================
--- /issm/trunk/src/m/enum/Balancedthickness2AnalysisEnum.m	(revision 3589)
+++ /issm/trunk/src/m/enum/Balancedthickness2AnalysisEnum.m	(revision 3589)
@@ -0,0 +1,9 @@
+function macro=Balancedthickness2AnalysisEnum()
+%BALANCEDTHICKNESS2ANALYSISENUM - Enum of Balancedthickness2Analysis
+%
+%   file generated by src/c/EnumDefinitions/SynchronizeMatlabEnum
+%
+%   Usage:
+%      macro=Balancedthickness2AnalysisEnum()
+
+macro=30;
Index: /issm/trunk/src/m/enum/BalancedvelocitiesAnalysisEnum.m
===================================================================
--- /issm/trunk/src/m/enum/BalancedvelocitiesAnalysisEnum.m	(revision 3588)
+++ /issm/trunk/src/m/enum/BalancedvelocitiesAnalysisEnum.m	(revision 3589)
@@ -7,3 +7,3 @@
 %      macro=BalancedvelocitiesAnalysisEnum()
 
-macro=30;
+macro=31;
Index: /issm/trunk/src/m/enum/BeamEnum.m
===================================================================
--- /issm/trunk/src/m/enum/BeamEnum.m	(revision 3588)
+++ /issm/trunk/src/m/enum/BeamEnum.m	(revision 3589)
@@ -7,3 +7,3 @@
 %      macro=BeamEnum()
 
-macro=49;
+macro=50;
Index: /issm/trunk/src/m/enum/DofIndexingEnum.m
===================================================================
--- /issm/trunk/src/m/enum/DofIndexingEnum.m	(revision 3588)
+++ /issm/trunk/src/m/enum/DofIndexingEnum.m	(revision 3589)
@@ -7,3 +7,3 @@
 %      macro=DofIndexingEnum()
 
-macro=51;
+macro=52;
Index: /issm/trunk/src/m/enum/DofVecEnum.m
===================================================================
--- /issm/trunk/src/m/enum/DofVecEnum.m	(revision 3588)
+++ /issm/trunk/src/m/enum/DofVecEnum.m	(revision 3589)
@@ -7,3 +7,3 @@
 %      macro=DofVecEnum()
 
-macro=69;
+macro=70;
Index: /issm/trunk/src/m/enum/ElementEnum.m
===================================================================
--- /issm/trunk/src/m/enum/ElementEnum.m	(revision 3588)
+++ /issm/trunk/src/m/enum/ElementEnum.m	(revision 3589)
@@ -7,3 +7,3 @@
 %      macro=ElementEnum()
 
-macro=44;
+macro=45;
Index: /issm/trunk/src/m/enum/ElementPropertiesEnum.m
===================================================================
--- /issm/trunk/src/m/enum/ElementPropertiesEnum.m	(revision 3588)
+++ /issm/trunk/src/m/enum/ElementPropertiesEnum.m	(revision 3589)
@@ -7,3 +7,3 @@
 %      macro=ElementPropertiesEnum()
 
-macro=46;
+macro=47;
Index: /issm/trunk/src/m/enum/FormulationEnum.m
===================================================================
--- /issm/trunk/src/m/enum/FormulationEnum.m	(revision 3588)
+++ /issm/trunk/src/m/enum/FormulationEnum.m	(revision 3589)
@@ -7,3 +7,3 @@
 %      macro=FormulationEnum()
 
-macro=36;
+macro=37;
Index: /issm/trunk/src/m/enum/GeographyEnum.m
===================================================================
--- /issm/trunk/src/m/enum/GeographyEnum.m	(revision 3588)
+++ /issm/trunk/src/m/enum/GeographyEnum.m	(revision 3589)
@@ -7,3 +7,3 @@
 %      macro=GeographyEnum()
 
-macro=70;
+macro=71;
Index: /issm/trunk/src/m/enum/HookEnum.m
===================================================================
--- /issm/trunk/src/m/enum/HookEnum.m	(revision 3588)
+++ /issm/trunk/src/m/enum/HookEnum.m	(revision 3589)
@@ -7,3 +7,3 @@
 %      macro=HookEnum()
 
-macro=43;
+macro=44;
Index: /issm/trunk/src/m/enum/HutterFormulationEnum.m
===================================================================
--- /issm/trunk/src/m/enum/HutterFormulationEnum.m	(revision 3588)
+++ /issm/trunk/src/m/enum/HutterFormulationEnum.m	(revision 3589)
@@ -7,3 +7,3 @@
 %      macro=HutterFormulationEnum()
 
-macro=38;
+macro=39;
Index: /issm/trunk/src/m/enum/IceEnum.m
===================================================================
--- /issm/trunk/src/m/enum/IceEnum.m	(revision 3588)
+++ /issm/trunk/src/m/enum/IceEnum.m	(revision 3589)
@@ -7,3 +7,3 @@
 %      macro=IceEnum()
 
-macro=74;
+macro=75;
Index: /issm/trunk/src/m/enum/IceSheetEnum.m
===================================================================
--- /issm/trunk/src/m/enum/IceSheetEnum.m	(revision 3588)
+++ /issm/trunk/src/m/enum/IceSheetEnum.m	(revision 3589)
@@ -7,3 +7,3 @@
 %      macro=IceSheetEnum()
 
-macro=71;
+macro=72;
Index: /issm/trunk/src/m/enum/IceShelfEnum.m
===================================================================
--- /issm/trunk/src/m/enum/IceShelfEnum.m	(revision 3588)
+++ /issm/trunk/src/m/enum/IceShelfEnum.m	(revision 3589)
@@ -7,3 +7,3 @@
 %      macro=IceShelfEnum()
 
-macro=72;
+macro=73;
Index: /issm/trunk/src/m/enum/IcefrontEnum.m
===================================================================
--- /issm/trunk/src/m/enum/IcefrontEnum.m	(revision 3588)
+++ /issm/trunk/src/m/enum/IcefrontEnum.m	(revision 3589)
@@ -7,3 +7,3 @@
 %      macro=IcefrontEnum()
 
-macro=55;
+macro=56;
Index: /issm/trunk/src/m/enum/InputEnum.m
===================================================================
--- /issm/trunk/src/m/enum/InputEnum.m	(revision 3588)
+++ /issm/trunk/src/m/enum/InputEnum.m	(revision 3589)
@@ -7,3 +7,3 @@
 %      macro=InputEnum()
 
-macro=64;
+macro=65;
Index: /issm/trunk/src/m/enum/LoadEnum.m
===================================================================
--- /issm/trunk/src/m/enum/LoadEnum.m	(revision 3588)
+++ /issm/trunk/src/m/enum/LoadEnum.m	(revision 3589)
@@ -7,3 +7,3 @@
 %      macro=LoadEnum()
 
-macro=54;
+macro=55;
Index: /issm/trunk/src/m/enum/MacAyealFormulationEnum.m
===================================================================
--- /issm/trunk/src/m/enum/MacAyealFormulationEnum.m	(revision 3588)
+++ /issm/trunk/src/m/enum/MacAyealFormulationEnum.m	(revision 3589)
@@ -7,3 +7,3 @@
 %      macro=MacAyealFormulationEnum()
 
-macro=39;
+macro=40;
Index: /issm/trunk/src/m/enum/MaterialEnum.m
===================================================================
--- /issm/trunk/src/m/enum/MaterialEnum.m	(revision 3588)
+++ /issm/trunk/src/m/enum/MaterialEnum.m	(revision 3589)
@@ -7,3 +7,3 @@
 %      macro=MaterialEnum()
 
-macro=60;
+macro=61;
Index: /issm/trunk/src/m/enum/MaticeEnum.m
===================================================================
--- /issm/trunk/src/m/enum/MaticeEnum.m	(revision 3588)
+++ /issm/trunk/src/m/enum/MaticeEnum.m	(revision 3589)
@@ -7,3 +7,3 @@
 %      macro=MaticeEnum()
 
-macro=61;
+macro=62;
Index: /issm/trunk/src/m/enum/MatparEnum.m
===================================================================
--- /issm/trunk/src/m/enum/MatparEnum.m	(revision 3588)
+++ /issm/trunk/src/m/enum/MatparEnum.m	(revision 3589)
@@ -7,3 +7,3 @@
 %      macro=MatparEnum()
 
-macro=62;
+macro=63;
Index: /issm/trunk/src/m/enum/MelangeEnum.m
===================================================================
--- /issm/trunk/src/m/enum/MelangeEnum.m	(revision 3588)
+++ /issm/trunk/src/m/enum/MelangeEnum.m	(revision 3589)
@@ -7,3 +7,3 @@
 %      macro=MelangeEnum()
 
-macro=76;
+macro=77;
Index: /issm/trunk/src/m/enum/MeltingAnalysisEnum.m
===================================================================
--- /issm/trunk/src/m/enum/MeltingAnalysisEnum.m	(revision 3588)
+++ /issm/trunk/src/m/enum/MeltingAnalysisEnum.m	(revision 3589)
@@ -7,3 +7,3 @@
 %      macro=MeltingAnalysisEnum()
 
-macro=31;
+macro=32;
Index: /issm/trunk/src/m/enum/Mesh2gridAnalysisEnum.m
===================================================================
--- /issm/trunk/src/m/enum/Mesh2gridAnalysisEnum.m	(revision 3588)
+++ /issm/trunk/src/m/enum/Mesh2gridAnalysisEnum.m	(revision 3589)
@@ -7,3 +7,3 @@
 %      macro=Mesh2gridAnalysisEnum()
 
-macro=32;
+macro=33;
Index: /issm/trunk/src/m/enum/NodeEnum.m
===================================================================
--- /issm/trunk/src/m/enum/NodeEnum.m	(revision 3588)
+++ /issm/trunk/src/m/enum/NodeEnum.m	(revision 3589)
@@ -7,3 +7,3 @@
 %      macro=NodeEnum()
 
-macro=52;
+macro=53;
Index: /issm/trunk/src/m/enum/NodePropertiesEnum.m
===================================================================
--- /issm/trunk/src/m/enum/NodePropertiesEnum.m	(revision 3588)
+++ /issm/trunk/src/m/enum/NodePropertiesEnum.m	(revision 3589)
@@ -7,3 +7,3 @@
 %      macro=NodePropertiesEnum()
 
-macro=47;
+macro=48;
Index: /issm/trunk/src/m/enum/NoneAnalysisEnum.m
===================================================================
--- /issm/trunk/src/m/enum/NoneAnalysisEnum.m	(revision 3588)
+++ /issm/trunk/src/m/enum/NoneAnalysisEnum.m	(revision 3589)
@@ -7,3 +7,3 @@
 %      macro=NoneAnalysisEnum()
 
-macro=35;
+macro=36;
Index: /issm/trunk/src/m/enum/NoneFormulationEnum.m
===================================================================
--- /issm/trunk/src/m/enum/NoneFormulationEnum.m	(revision 3588)
+++ /issm/trunk/src/m/enum/NoneFormulationEnum.m	(revision 3589)
@@ -7,3 +7,3 @@
 %      macro=NoneFormulationEnum()
 
-macro=37;
+macro=38;
Index: /issm/trunk/src/m/enum/NumericalfluxEnum.m
===================================================================
--- /issm/trunk/src/m/enum/NumericalfluxEnum.m	(revision 3588)
+++ /issm/trunk/src/m/enum/NumericalfluxEnum.m	(revision 3589)
@@ -7,3 +7,3 @@
 %      macro=NumericalfluxEnum()
 
-macro=59;
+macro=60;
Index: /issm/trunk/src/m/enum/NumparEnum.m
===================================================================
--- /issm/trunk/src/m/enum/NumparEnum.m	(revision 3588)
+++ /issm/trunk/src/m/enum/NumparEnum.m	(revision 3589)
@@ -7,3 +7,3 @@
 %      macro=NumparEnum()
 
-macro=63;
+macro=64;
Index: /issm/trunk/src/m/enum/ObjectEnum.m
===================================================================
--- /issm/trunk/src/m/enum/ObjectEnum.m	(revision 3588)
+++ /issm/trunk/src/m/enum/ObjectEnum.m	(revision 3589)
@@ -7,3 +7,3 @@
 %      macro=ObjectEnum()
 
-macro=42;
+macro=43;
Index: /issm/trunk/src/m/enum/ParamEnum.m
===================================================================
--- /issm/trunk/src/m/enum/ParamEnum.m	(revision 3588)
+++ /issm/trunk/src/m/enum/ParamEnum.m	(revision 3589)
@@ -7,3 +7,3 @@
 %      macro=ParamEnum()
 
-macro=65;
+macro=66;
Index: /issm/trunk/src/m/enum/ParametersAnalysisEnum.m
===================================================================
--- /issm/trunk/src/m/enum/ParametersAnalysisEnum.m	(revision 3588)
+++ /issm/trunk/src/m/enum/ParametersAnalysisEnum.m	(revision 3589)
@@ -7,3 +7,3 @@
 %      macro=ParametersAnalysisEnum()
 
-macro=33;
+macro=34;
Index: /issm/trunk/src/m/enum/PattynFormulationEnum.m
===================================================================
--- /issm/trunk/src/m/enum/PattynFormulationEnum.m	(revision 3588)
+++ /issm/trunk/src/m/enum/PattynFormulationEnum.m	(revision 3589)
@@ -7,3 +7,3 @@
 %      macro=PattynFormulationEnum()
 
-macro=40;
+macro=41;
Index: /issm/trunk/src/m/enum/PengridEnum.m
===================================================================
--- /issm/trunk/src/m/enum/PengridEnum.m	(revision 3588)
+++ /issm/trunk/src/m/enum/PengridEnum.m	(revision 3589)
@@ -7,3 +7,3 @@
 %      macro=PengridEnum()
 
-macro=58;
+macro=59;
Index: /issm/trunk/src/m/enum/PenpairEnum.m
===================================================================
--- /issm/trunk/src/m/enum/PenpairEnum.m	(revision 3588)
+++ /issm/trunk/src/m/enum/PenpairEnum.m	(revision 3589)
@@ -7,3 +7,3 @@
 %      macro=PenpairEnum()
 
-macro=57;
+macro=58;
Index: /issm/trunk/src/m/enum/PentaEnum.m
===================================================================
--- /issm/trunk/src/m/enum/PentaEnum.m	(revision 3588)
+++ /issm/trunk/src/m/enum/PentaEnum.m	(revision 3589)
@@ -7,3 +7,3 @@
 %      macro=PentaEnum()
 
-macro=48;
+macro=49;
Index: /issm/trunk/src/m/enum/ResultEnum.m
===================================================================
--- /issm/trunk/src/m/enum/ResultEnum.m	(revision 3588)
+++ /issm/trunk/src/m/enum/ResultEnum.m	(revision 3589)
@@ -7,3 +7,3 @@
 %      macro=ResultEnum()
 
-macro=66;
+macro=67;
Index: /issm/trunk/src/m/enum/RgbEnum.m
===================================================================
--- /issm/trunk/src/m/enum/RgbEnum.m	(revision 3588)
+++ /issm/trunk/src/m/enum/RgbEnum.m	(revision 3589)
@@ -7,3 +7,3 @@
 %      macro=RgbEnum()
 
-macro=67;
+macro=68;
Index: /issm/trunk/src/m/enum/RiftfrontEnum.m
===================================================================
--- /issm/trunk/src/m/enum/RiftfrontEnum.m	(revision 3588)
+++ /issm/trunk/src/m/enum/RiftfrontEnum.m	(revision 3589)
@@ -7,3 +7,3 @@
 %      macro=RiftfrontEnum()
 
-macro=56;
+macro=57;
Index: /issm/trunk/src/m/enum/SingEnum.m
===================================================================
--- /issm/trunk/src/m/enum/SingEnum.m	(revision 3588)
+++ /issm/trunk/src/m/enum/SingEnum.m	(revision 3589)
@@ -7,3 +7,3 @@
 %      macro=SingEnum()
 
-macro=50;
+macro=51;
Index: /issm/trunk/src/m/enum/SpcEnum.m
===================================================================
--- /issm/trunk/src/m/enum/SpcEnum.m	(revision 3588)
+++ /issm/trunk/src/m/enum/SpcEnum.m	(revision 3589)
@@ -7,3 +7,3 @@
 %      macro=SpcEnum()
 
-macro=68;
+macro=69;
Index: /issm/trunk/src/m/enum/SteadystateAnalysisEnum.m
===================================================================
--- /issm/trunk/src/m/enum/SteadystateAnalysisEnum.m	(revision 3588)
+++ /issm/trunk/src/m/enum/SteadystateAnalysisEnum.m	(revision 3589)
@@ -7,3 +7,3 @@
 %      macro=SteadystateAnalysisEnum()
 
-macro=34;
+macro=35;
Index: /issm/trunk/src/m/enum/StokesFormulationEnum.m
===================================================================
--- /issm/trunk/src/m/enum/StokesFormulationEnum.m	(revision 3588)
+++ /issm/trunk/src/m/enum/StokesFormulationEnum.m	(revision 3589)
@@ -7,3 +7,3 @@
 %      macro=StokesFormulationEnum()
 
-macro=41;
+macro=42;
Index: /issm/trunk/src/m/enum/TriaEnum.m
===================================================================
--- /issm/trunk/src/m/enum/TriaEnum.m	(revision 3588)
+++ /issm/trunk/src/m/enum/TriaEnum.m	(revision 3589)
@@ -7,3 +7,3 @@
 %      macro=TriaEnum()
 
-macro=45;
+macro=46;
Index: /issm/trunk/src/m/enum/VertexEnum.m
===================================================================
--- /issm/trunk/src/m/enum/VertexEnum.m	(revision 3588)
+++ /issm/trunk/src/m/enum/VertexEnum.m	(revision 3589)
@@ -7,3 +7,3 @@
 %      macro=VertexEnum()
 
-macro=53;
+macro=54;
Index: /issm/trunk/src/m/enum/WaterEnum.m
===================================================================
--- /issm/trunk/src/m/enum/WaterEnum.m	(revision 3588)
+++ /issm/trunk/src/m/enum/WaterEnum.m	(revision 3589)
@@ -7,3 +7,3 @@
 %      macro=WaterEnum()
 
-macro=73;
+macro=74;
Index: /issm/trunk/src/m/solutions/jpl/balancedthickness.m
===================================================================
--- /issm/trunk/src/m/solutions/jpl/balancedthickness.m	(revision 3588)
+++ /issm/trunk/src/m/solutions/jpl/balancedthickness.m	(revision 3589)
@@ -12,5 +12,5 @@
 	
 	displaystring(md.verbose,'%s',['reading balancedthickness model data']);
-	md.analysis_type=BalancedthicknessAnalysisEnum; models.p=CreateFemModel(md);
+	md.analysis_type=BalancedthicknessAnalysisEnum; models.bt=CreateFemModel(md);
 
 	% figure out number of dof: just for information purposes.
@@ -20,10 +20,7 @@
 	displaystring(md.verbose,'\n%s',['setup inputs...']);
 	inputs=inputlist;
-	inputs=add(inputs,'vx',models.p.parameters.vx_g,'doublevec',1,models.p.parameters.numberofvertices);
-	inputs=add(inputs,'vy',models.p.parameters.vy_g,'doublevec',1,models.p.parameters.numberofvertices);
-	inputs=add(inputs,'thickness',models.p.parameters.h_g,'doublevec',1,models.p.parameters.numberofvertices);
-	inputs=add(inputs,'dhdt',models.p.parameters.dhdt_g,'doublevec',1,models.p.parameters.numberofvertices);
-	inputs=add(inputs,'melting',models.p.parameters.m_g,'doublevec',1,models.p.parameters.numberofvertices);
-	inputs=add(inputs,'accumulation',models.p.parameters.a_g,'doublevec',1,models.p.parameters.numberofvertices);
+	inputs=add(inputs,'velocity',models.bt.parameters.u_g,'doublevec',3,models.bt.parameters.numberofnodes);
+	inputs=add(inputs,'melting',models.bt.parameters.m_g,'doublevec',1,models.bt.parameters.numberofnodes);
+	inputs=add(inputs,'accumulation',models.bt.parameters.a_g,'doublevec',1,models.bt.parameters.numberofnodes);
 
 	displaystring(md.verbose,'\n%s',['call computational core:']);
Index: /issm/trunk/src/m/solutions/jpl/balancedthickness2.m
===================================================================
--- /issm/trunk/src/m/solutions/jpl/balancedthickness2.m	(revision 3589)
+++ /issm/trunk/src/m/solutions/jpl/balancedthickness2.m	(revision 3589)
@@ -0,0 +1,38 @@
+function md=balancedthickness2(md)
+%BALANCEDTHICKNESS - balancedthickness2 solution sequence.
+%
+%   Usage:
+%      md=balancedthickness2(md)
+
+	%timing
+	t1=clock;
+
+	%Build all models requested for diagnostic simulation
+	models.analysis_type=Balancedthickness2AnalysisEnum; %needed for processresults
+	
+	displaystring(md.verbose,'%s',['reading balancedthickness2 model data']);
+	md.analysis_type=Balancedthickness2AnalysisEnum; models.p=CreateFemModel(md);
+
+	% figure out number of dof: just for information purposes.
+	md.dof=modelsize(models);
+
+	%initialize inputs
+	displaystring(md.verbose,'\n%s',['setup inputs...']);
+	inputs=inputlist;
+	inputs=add(inputs,'vx',models.p.parameters.vx_g,'doublevec',1,models.p.parameters.numberofvertices);
+	inputs=add(inputs,'vy',models.p.parameters.vy_g,'doublevec',1,models.p.parameters.numberofvertices);
+	inputs=add(inputs,'thickness',models.p.parameters.h_g,'doublevec',1,models.p.parameters.numberofvertices);
+	inputs=add(inputs,'dhdt',models.p.parameters.dhdt_g,'doublevec',1,models.p.parameters.numberofvertices);
+	inputs=add(inputs,'melting',models.p.parameters.m_g,'doublevec',1,models.p.parameters.numberofvertices);
+	inputs=add(inputs,'accumulation',models.p.parameters.a_g,'doublevec',1,models.p.parameters.numberofvertices);
+
+	displaystring(md.verbose,'\n%s',['call computational core:']);
+	results=balancedthickness2_core(models,inputs,Balancedthickness2AnalysisEnum(),NoneAnalysisEnum());
+
+	displaystring(md.verbose,'\n%s',['load results...']);
+	if ~isstruct(md.results), md.results=struct(); end
+	md.results.balancedthickness2=processresults(models,results);
+
+	%stop timing
+	t2=clock;
+	displaystring(md.verbose,'\n%s\n',['solution converged in ' num2str(etime(t2,t1)) ' seconds']);	
Index: /issm/trunk/src/m/solutions/jpl/balancedthickness2_core.m
===================================================================
--- /issm/trunk/src/m/solutions/jpl/balancedthickness2_core.m	(revision 3589)
+++ /issm/trunk/src/m/solutions/jpl/balancedthickness2_core.m	(revision 3589)
@@ -0,0 +1,33 @@
+function results=balancedthickness2_core(models,inputs,analysis_type,sub_analysis_type)
+%BALANCEDTHICKNESS_CORE - linear solution sequence
+%
+%   Usage:
+%      h_g=balancedthickness2_core(m,inputs,analysis_type,sub_analysis_type)
+
+	%get FE model
+	m=models.p;
+	results.time=0;
+	results.step=1;
+
+	displaystring(m.parameters.verbose,'\n%s',['depth averaging velocity...']);
+	%Take only the first two dofs of m.parameters.u_g
+	vx_g=get(inputs,'vx',1);
+	vy_g=get(inputs,'vy',1);
+
+	%NOT WORKING YET!!!!!
+	%vx_g=FieldDepthAverage(m.elements,m.nodes,m.vertices,m.loads,m.materials,m.parameters,vx_g,'vx');
+	%vy_g=FieldDepthAverage(m.elements,m.nodes,m.vertices,m.loads,m.materials,m.parameters,vy_g,'vy');
+
+	inputs=add(inputs,'vx_average',vx_g,'doublevec',1,m.parameters.numberofvertices);
+	inputs=add(inputs,'vy_average',vy_g,'doublevec',1,m.parameters.numberofvertices);
+
+	displaystring(m.parameters.verbose,'\n%s',['call computational core:']);
+	results.h_g=diagnostic_core_linear(m,inputs,analysis_type,sub_analysis_type);
+
+	displaystring(m.parameters.verbose,'\n%s',['averaging over vertices']);
+	results.h_g=FieldAverageOntoVertices(m.elements,m.nodes,m.vertices,m.loads,m.materials,m.parameters,results.h_g);
+
+	displaystring(m.parameters.verbose,'\n%s',['extrude computed thickness on all layers:']);
+	%results.h_g=FieldAverageOntoVertices(m.elements,m.nodes,m.loads,m.materials,m.parameters,results.h_g,'thickness');
+
+end %end function
Index: /issm/trunk/src/m/solutions/jpl/balancedthickness_core.m
===================================================================
--- /issm/trunk/src/m/solutions/jpl/balancedthickness_core.m	(revision 3588)
+++ /issm/trunk/src/m/solutions/jpl/balancedthickness_core.m	(revision 3589)
@@ -6,5 +6,5 @@
 
 	%get FE model
-	m=models.p;
+	m=models.bt;
 	results.time=0;
 	results.step=1;
@@ -12,22 +12,13 @@
 	displaystring(m.parameters.verbose,'\n%s',['depth averaging velocity...']);
 	%Take only the first two dofs of m.parameters.u_g
-	vx_g=get(inputs,'vx',1);
-	vy_g=get(inputs,'vy',1);
-
-	%NOT WORKING YET!!!!!
-	%vx_g=FieldDepthAverage(m.elements,m.nodes,m.vertices,m.loads,m.materials,m.parameters,vx_g,'vx');
-	%vy_g=FieldDepthAverage(m.elements,m.nodes,m.vertices,m.loads,m.materials,m.parameters,vy_g,'vy');
-
-	inputs=add(inputs,'vx_average',vx_g,'doublevec',1,m.parameters.numberofvertices);
-	inputs=add(inputs,'vy_average',vy_g,'doublevec',1,m.parameters.numberofvertices);
+	u_g=get(inputs,'velocity',[1 1 0 0]);
+	u_g=FieldDepthAverage(m.elements,m.nodes,m.vertices,m.loads,m.materials,m.parameters,u_g,'velocity');
+	inputs=add(inputs,'velocity_average',u_g,'doublevec',2,m.parameters.numberofnodes);
 
 	displaystring(m.parameters.verbose,'\n%s',['call computational core:']);
 	results.h_g=diagnostic_core_linear(m,inputs,analysis_type,sub_analysis_type);
 
-	displaystring(m.parameters.verbose,'\n%s',['averaging over vertices']);
-	results.h_g=FieldAverageOntoVertices(m.elements,m.nodes,m.vertices,m.loads,m.materials,m.parameters,results.h_g);
-
 	displaystring(m.parameters.verbose,'\n%s',['extrude computed thickness on all layers:']);
-	%results.h_g=FieldAverageOntoVertices(m.elements,m.nodes,m.loads,m.materials,m.parameters,results.h_g,'thickness');
+	results.h_g=FieldExtrude(m.elements,m.nodes,m.vertices,m.loads,m.materials,m.parameters,results.h_g,'thickness',0);
 
 end %end function
Index: /issm/trunk/src/m/solutions/jpl/diagnostic_core_linear.m
===================================================================
--- /issm/trunk/src/m/solutions/jpl/diagnostic_core_linear.m	(revision 3588)
+++ /issm/trunk/src/m/solutions/jpl/diagnostic_core_linear.m	(revision 3589)
@@ -13,5 +13,4 @@
 	%system matrices
 	[K_gg, p_g]=SystemMatrices(m.elements,m.nodes,m.vertices,m.loads,m.materials,m.parameters,inputs,analysis_type,sub_analysis_type);
-	save A K_gg p_g
 	[K_gg, p_g,kmax]=PenaltySystemMatrices(K_gg,p_g,m.elements,m.nodes,m.vertices,m.loads,m.materials,m.parameters,inputs,analysis_type,sub_analysis_type);
 	
