Index: sm/trunk-jpl/src/m/classes/gia.js
===================================================================
--- /issm/trunk-jpl/src/m/classes/gia.js	(revision 21530)
+++ 	(revision )
@@ -1,64 +1,0 @@
-//GIA class definition
-//
-//   Usage:
-//      gia=new gia();
-
-function gia (){
-	//methods
-	this.setdefaultparameters = function(){// {{{
-
-		this.cross_section_shape=1; //square as default (see iedge in GiaDeflectionCorex)
-	
-	}// }}}
-	this.disp= function(){// {{{
-
-		console.log(sprintf('   gia parameters:'));
-
-		fielddisplay(this,'mantle_viscosity','mantle viscosity[Pa s]');
-		fielddisplay(this,'lithosphere_thickness','lithosphere thickness (km)');
-		fielddisplay(this,'cross_section_shape','1: square-edged (default). 2: elliptical.  See iedge in GiaDeflectionCore');
-
-	}// }}}
-	this.classname= function(){// {{{
-		return "gia";
-	}// }}}
-	this.checkconsistency = function(md,solution,analyses) { // {{{
-
-		if(!ArrayAnyEqual(ArrayIsMember('GiaAnalysis',analyses),1))return;
-
-		checkfield(md,'fieldname','gia.mantle_viscosity','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices,1],'>',0);
-		checkfield(md,'fieldname','gia.lithosphere_thickness','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices,1],'>',0);
-		checkfield(md,'fieldname','gia.cross_section_shape','numel',[1],'values',[1,2]);
-
-		//be sure that if we are running a masstransport ice flow model coupled with gia, that thickness forcings 
-		//are not provided into the future.
-		if (solution=='TransientSolution' & md.trans.ismasstransport & md.trans.isgia){
-			//figure out if thickness is a transient forcing: 
-			if (md.geometry.thickness.length == (md.mesh.numberofvertices+1)){
-				//recover the furthest time "in time": 
-				t=md.geometry.thickness[0].length;
-				if(md.geometry.thickness[md.geometry.thickness.length-1][t-1]!=md.timestepping.start_time){
-					md.checkmessage('if ismasstransport is on, transient thickness forcing for the gia model should not be provided in the future. Synchronize your start_time to correspond to the most recent transient thickness forcing timestep');
-				}
-			}
-		}
-	} // }}}
-		this.marshall=function(md,prefix,fid) { //{{{
-			WriteData(fid,prefix,'object',this,'fieldname','mantle_viscosity','format','DoubleMat','mattype',1);
-			WriteData(fid,prefix,'object',this,'fieldname','lithosphere_thickness','format','DoubleMat','mattype',1,'scale',Math.pow(10,3)); //from km to m
-			WriteData(fid,prefix,'object',this,'fieldname','cross_section_shape','format','Integer');
-		}//}}}
-		this.fix=function() { //{{{
-			this.mantle_viscosity=NullFix(this.mantle_viscosity,NaN);
-			this.lithosphere_thickness=NullFix(this.lithosphere_thickness,NaN);
-		}//}}}
-	//properties 
-	// {{{
-
-	this.mantle_viscosity              = NaN;
-	this.lithosphere_thickness         = NaN;
-	this.cross_section_shape           = 0;
-
-	this.setdefaultparameters();
-	//}}}
-}
Index: sm/trunk-jpl/src/m/classes/gia.m
===================================================================
--- /issm/trunk-jpl/src/m/classes/gia.m	(revision 21530)
+++ 	(revision )
@@ -1,72 +1,0 @@
-%GIA class definition
-%
-%   Usage:
-%      gia=gia();
-
-classdef gia
-	properties (SetAccess=public) 
-		mantle_viscosity              = NaN;
-		lithosphere_thickness         = NaN;
-		cross_section_shape           = 0;
-	end
-	methods
-		function self = extrude(self,md) % {{{
-			self.mantle_viscosity=project3d(md,'vector',self.mantle_viscosity,'type','node');
-			self.lithosphere_thickness=project3d(md,'vector',self.lithosphere_thickness,'type','node');
-		end % }}}
-		function self = gia(varargin) % {{{
-			switch nargin
-				case 0
-					self=setdefaultparameters(self);
-				otherwise
-					error('constructor not supported');
-			end
-		end % }}}
-		function self = setdefaultparameters(self) % {{{
-		self.cross_section_shape=1; %square as default (see iedge in GiaDeflectionCorex)
-		end % }}}
-		function md = checkconsistency(self,md,solution,analyses) % {{{
-
-			if ~ismember('GiaAnalysis',analyses), return; end
-			md = checkfield(md,'fieldname','gia.mantle_viscosity','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices 1],'>',0);
-			md = checkfield(md,'fieldname','gia.lithosphere_thickness','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices 1],'>',0);
-			md = checkfield(md,'fieldname','gia.cross_section_shape','numel',[1],'values',[1,2]);
-
-			%be sure that if we are running a masstransport ice flow model coupled with gia, that thickness forcings 
-			%are not provided into the future.
-			if strcmp(solution,'TransientSolution') & md.transient.ismasstransport & md.transient.isgia,
-				%figure out if thickness is a transient forcing: 
-				if size(md.geometry.thickness,1)==md.mesh.numberofvertices+1,
-					%recover the furthest time "in time": 
-					if(thickness(end,end)~=md.timestepping.start_time),
-						md = checkmessage(md,['if ismasstransport is on, transient thickness forcing'...
-							' for the gia model should not be provided in the future.'...
-							' Synchronize your start_time to correspond to the most recent transient'...
-							' thickness forcing timestep']);
-					end
-				end
-			end
-
-		end % }}}
-		function disp(self) % {{{
-			disp(sprintf('   gia parameters:'));
-
-			fielddisplay(self,'mantle_viscosity','mantle viscosity[Pa s]');
-			fielddisplay(self,'lithosphere_thickness','lithosphere thickness (km)');
-			fielddisplay(self,'cross_section_shape','1: square-edged (default). 2: elliptical.  See iedge in GiaDeflectionCore');
-
-		end % }}}
-		function marshall(self,prefix,md,fid) % {{{
-			WriteData(fid,prefix,'object',self,'fieldname','mantle_viscosity','format','DoubleMat','mattype',1);
-			WriteData(fid,prefix,'object',self,'fieldname','lithosphere_thickness','format','DoubleMat','mattype',1,'scale',10^3); %from km to m
-			WriteData(fid,prefix,'object',self,'fieldname','cross_section_shape','format','Integer');
-		end % }}}
-		function savemodeljs(self,fid,modelname) % {{{
-		
-			writejsdouble(fid,[modelname '.gia.mantle_viscosity'],self.mantle_viscosity);
-			writejsdouble(fid,[modelname '.gia.lithosphere_thickness'],self.lithosphere_thickness);
-			writejsdouble(fid,[modelname '.gia.cross_section_shape'],self.cross_section_shape);
-
-		end % }}}
-	end
-end
Index: sm/trunk-jpl/src/m/classes/gia.py
===================================================================
--- /issm/trunk-jpl/src/m/classes/gia.py	(revision 21530)
+++ 	(revision )
@@ -1,63 +1,0 @@
-from fielddisplay import fielddisplay
-from project3d import project3d
-from checkfield import checkfield
-from WriteData import WriteData
-
-class gia(object):
-	"""
-	GIA class definition
-
-	   Usage:
-	      gia=gia();
-	"""
-
-	def __init__(self): # {{{
-		self.mantle_viscosity              = float('NaN');
-		self.lithosphere_thickness         = float('NaN');
-		self.cross_section_shape           = 0;
-	
-		#set defaults
-		self.setdefaultparameters()
-
-		#}}}
-	def __repr__(self): # {{{
-		
-		string='   gia solution parameters:' 
-		
-		string="%s\n%s"%(string,fielddisplay(self,'mantle_viscosity','mantle viscosity constraints (NaN means no constraint) (Pa s)'))
-		string="%s\n%s"%(string,fielddisplay(self,'lithosphere_thickness','lithosphere thickness constraints (NaN means no constraint) (m)'))
-		string="%s\n%s"%(string,fielddisplay(self,'cross_section_shape',"1: square-edged, 2: elliptical-edged surface"))
-		return string
-		#}}}
-	def extrude(self,md): # {{{
-		self.mantle_viscosity=project3d(md,'vector',self.mantle_viscosity,'type','node')
-		self.lithosphere_thickness=project3d(md,'vector',self.lithosphere_thickness,'type','node')
-		return self
-	#}}}
-	def setdefaultparameters(self): # {{{
-
-		self.cross_section_shape=1; 
-
-		return self
-	#}}}
-	def checkconsistency(self,md,solution,analyses):    # {{{
-
-		# Early return 
-		if ('GiaAnalysis' not in  analyses):
-			return md 
-		
-		md = checkfield(md,'fieldname','gia.mantle_viscosity','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices],'>',0)
-		md = checkfield(md,'fieldname','gia.lithosphere_thickness','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices],'>',0)
-		md = checkfield(md,'fieldname','gia.cross_section_shape','numel',[1],'values',[1,2])
-
-		#be sure that if we are running a masstransport ice flow model coupled with gia, that thickness forcings 
-		#are not provided into the future.
-
-		return md
-	# }}}
-	def marshall(self,prefix,md,fid):    # {{{
-
-		WriteData(fid,prefix,'object',self,'fieldname','mantle_viscosity','format','DoubleMat','mattype',1);
-		WriteData(fid,prefix,'object',self,'fieldname','lithosphere_thickness','format','DoubleMat','mattype',1,'scale',10.**3.);
-		WriteData(fid,prefix,'object',self,'fieldname','cross_section_shape','format','Integer');
-	# }}}
Index: /issm/trunk-jpl/src/m/classes/giaivins.js
===================================================================
--- /issm/trunk-jpl/src/m/classes/giaivins.js	(revision 21531)
+++ /issm/trunk-jpl/src/m/classes/giaivins.js	(revision 21531)
@@ -0,0 +1,64 @@
+//GIA class definition for Ivins and James model 
+//
+//   Usage:
+//      giaivins=new giaivins();
+
+function giaivins (){
+	//methods
+	this.setdefaultparameters = function(){// {{{
+
+		this.cross_section_shape=1; //square as default (see iedge in GiaDeflectionCorex)
+	
+	}// }}}
+	this.disp= function(){// {{{
+
+		console.log(sprintf('   giaivins parameters:'));
+
+		fielddisplay(this,'mantle_viscosity','mantle viscosity[Pa s]');
+		fielddisplay(this,'lithosphere_thickness','lithosphere thickness (km)');
+		fielddisplay(this,'cross_section_shape','1: square-edged (default). 2: elliptical.  See iedge in GiaDeflectionCore');
+
+	}// }}}
+	this.classname= function(){// {{{
+		return "giaivins";
+	}// }}}
+	this.checkconsistency = function(md,solution,analyses) { // {{{
+
+		if(!ArrayAnyEqual(ArrayIsMember('GiaAnalysis',analyses),1))return;
+
+		checkfield(md,'fieldname','giaivins.mantle_viscosity','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices,1],'>',0);
+		checkfield(md,'fieldname','giaivins.lithosphere_thickness','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices,1],'>',0);
+		checkfield(md,'fieldname','giaivins.cross_section_shape','numel',[1],'values',[1,2]);
+
+		//be sure that if we are running a masstransport ice flow model coupled with giaivins, that thickness forcings 
+		//are not provided into the future.
+		if (solution=='TransientSolution' & md.trans.ismasstransport & md.trans.isgiaivins){
+			//figure out if thickness is a transient forcing: 
+			if (md.geometry.thickness.length == (md.mesh.numberofvertices+1)){
+				//recover the furthest time "in time": 
+				t=md.geometry.thickness[0].length;
+				if(md.geometry.thickness[md.geometry.thickness.length-1][t-1]!=md.timestepping.start_time){
+					md.checkmessage('if ismasstransport is on, transient thickness forcing for the giaivins model should not be provided in the future. Synchronize your start_time to correspond to the most recent transient thickness forcing timestep');
+				}
+			}
+		}
+	} // }}}
+		this.marshall=function(md,prefix,fid) { //{{{
+			WriteData(fid,prefix,'object',this,'fieldname','mantle_viscosity','format','DoubleMat','mattype',1);
+			WriteData(fid,prefix,'object',this,'fieldname','lithosphere_thickness','format','DoubleMat','mattype',1,'scale',Math.pow(10,3)); //from km to m
+			WriteData(fid,prefix,'object',this,'fieldname','cross_section_shape','format','Integer');
+		}//}}}
+		this.fix=function() { //{{{
+			this.mantle_viscosity=NullFix(this.mantle_viscosity,NaN);
+			this.lithosphere_thickness=NullFix(this.lithosphere_thickness,NaN);
+		}//}}}
+	//properties 
+	// {{{
+
+	this.mantle_viscosity              = NaN;
+	this.lithosphere_thickness         = NaN;
+	this.cross_section_shape           = 0;
+
+	this.setdefaultparameters();
+	//}}}
+}
Index: /issm/trunk-jpl/src/m/classes/giaivins.m
===================================================================
--- /issm/trunk-jpl/src/m/classes/giaivins.m	(revision 21531)
+++ /issm/trunk-jpl/src/m/classes/giaivins.m	(revision 21531)
@@ -0,0 +1,72 @@
+%GIA class definition for Ivins and James model 
+%
+%   Usage:
+%      giaivins=giaivins();
+
+classdef giaivins
+	properties (SetAccess=public) 
+		mantle_viscosity              = NaN;
+		lithosphere_thickness         = NaN;
+		cross_section_shape           = 0;
+	end
+	methods
+		function self = extrude(self,md) % {{{
+			self.mantle_viscosity=project3d(md,'vector',self.mantle_viscosity,'type','node');
+			self.lithosphere_thickness=project3d(md,'vector',self.lithosphere_thickness,'type','node');
+		end % }}}
+		function self = giaivins(varargin) % {{{
+			switch nargin
+				case 0
+					self=setdefaultparameters(self);
+				otherwise
+					error('constructor not supported');
+			end
+		end % }}}
+		function self = setdefaultparameters(self) % {{{
+		self.cross_section_shape=1; %square as default (see iedge in GiaDeflectionCorex)
+		end % }}}
+		function md = checkconsistency(self,md,solution,analyses) % {{{
+
+			if ~ismember('GiaAnalysis',analyses), return; end
+			md = checkfield(md,'fieldname','giaivins.mantle_viscosity','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices 1],'>',0);
+			md = checkfield(md,'fieldname','giaivins.lithosphere_thickness','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices 1],'>',0);
+			md = checkfield(md,'fieldname','giaivins.cross_section_shape','numel',[1],'values',[1,2]);
+
+			%be sure that if we are running a masstransport ice flow model coupled with giaivins, that thickness forcings 
+			%are not provided into the future.
+			if strcmp(solution,'TransientSolution') & md.transient.ismasstransport & md.transient.isgiaivins,
+				%figure out if thickness is a transient forcing: 
+				if size(md.geometry.thickness,1)==md.mesh.numberofvertices+1,
+					%recover the furthest time "in time": 
+					if(thickness(end,end)~=md.timestepping.start_time),
+						md = checkmessage(md,['if ismasstransport is on, transient thickness forcing'...
+							' for the giaivins model should not be provided in the future.'...
+							' Synchronize your start_time to correspond to the most recent transient'...
+							' thickness forcing timestep']);
+					end
+				end
+			end
+
+		end % }}}
+		function disp(self) % {{{
+			disp(sprintf('   giaivins parameters:'));
+
+			fielddisplay(self,'mantle_viscosity','mantle viscosity[Pa s]');
+			fielddisplay(self,'lithosphere_thickness','lithosphere thickness (km)');
+			fielddisplay(self,'cross_section_shape','1: square-edged (default). 2: elliptical.  See iedge in GiaDeflectionCore');
+
+		end % }}}
+		function marshall(self,prefix,md,fid) % {{{
+			WriteData(fid,prefix,'object',self,'fieldname','mantle_viscosity','format','DoubleMat','mattype',1);
+			WriteData(fid,prefix,'object',self,'fieldname','lithosphere_thickness','format','DoubleMat','mattype',1,'scale',10^3); %from km to m
+			WriteData(fid,prefix,'object',self,'fieldname','cross_section_shape','format','Integer');
+		end % }}}
+		function savemodeljs(self,fid,modelname) % {{{
+		
+			writejsdouble(fid,[modelname '.giaivins.mantle_viscosity'],self.mantle_viscosity);
+			writejsdouble(fid,[modelname '.giaivins.lithosphere_thickness'],self.lithosphere_thickness);
+			writejsdouble(fid,[modelname '.giaivins.cross_section_shape'],self.cross_section_shape);
+
+		end % }}}
+	end
+end
Index: /issm/trunk-jpl/src/m/classes/giaivins.py
===================================================================
--- /issm/trunk-jpl/src/m/classes/giaivins.py	(revision 21531)
+++ /issm/trunk-jpl/src/m/classes/giaivins.py	(revision 21531)
@@ -0,0 +1,63 @@
+from fielddisplay import fielddisplay
+from project3d import project3d
+from checkfield import checkfield
+from WriteData import WriteData
+
+class giaivins(object):
+	"""
+	GIA class definition
+
+	   Usage:
+	      giaivins=giaivins();
+	"""
+
+	def __init__(self): # {{{
+		self.mantle_viscosity              = float('NaN');
+		self.lithosphere_thickness         = float('NaN');
+		self.cross_section_shape           = 0;
+	
+		#set defaults
+		self.setdefaultparameters()
+
+		#}}}
+	def __repr__(self): # {{{
+		
+		string='   giaivins solution parameters:' 
+		
+		string="%s\n%s"%(string,fielddisplay(self,'mantle_viscosity','mantle viscosity constraints (NaN means no constraint) (Pa s)'))
+		string="%s\n%s"%(string,fielddisplay(self,'lithosphere_thickness','lithosphere thickness constraints (NaN means no constraint) (m)'))
+		string="%s\n%s"%(string,fielddisplay(self,'cross_section_shape',"1: square-edged, 2: elliptical-edged surface"))
+		return string
+		#}}}
+	def extrude(self,md): # {{{
+		self.mantle_viscosity=project3d(md,'vector',self.mantle_viscosity,'type','node')
+		self.lithosphere_thickness=project3d(md,'vector',self.lithosphere_thickness,'type','node')
+		return self
+	#}}}
+	def setdefaultparameters(self): # {{{
+
+		self.cross_section_shape=1; 
+
+		return self
+	#}}}
+	def checkconsistency(self,md,solution,analyses):    # {{{
+
+		# Early return 
+		if ('GiaAnalysis' not in  analyses):
+			return md 
+		
+		md = checkfield(md,'fieldname','giaivins.mantle_viscosity','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices],'>',0)
+		md = checkfield(md,'fieldname','giaivins.lithosphere_thickness','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices],'>',0)
+		md = checkfield(md,'fieldname','giaivins.cross_section_shape','numel',[1],'values',[1,2])
+
+		#be sure that if we are running a masstransport ice flow model coupled with giaivins, that thickness forcings 
+		#are not provided into the future.
+
+		return md
+	# }}}
+	def marshall(self,prefix,md,fid):    # {{{
+
+		WriteData(fid,prefix,'object',self,'fieldname','mantle_viscosity','format','DoubleMat','mattype',1);
+		WriteData(fid,prefix,'object',self,'fieldname','lithosphere_thickness','format','DoubleMat','mattype',1,'scale',10.**3.);
+		WriteData(fid,prefix,'object',self,'fieldname','cross_section_shape','format','Integer');
+	# }}}
