Index: /issm/trunk-jpl/src/m/classes/solidearthsettings.m
===================================================================
--- /issm/trunk-jpl/src/m/classes/solidearthsettings.m	(revision 26059)
+++ /issm/trunk-jpl/src/m/classes/solidearthsettings.m	(revision 26060)
@@ -16,5 +16,5 @@
 		computesealevelchange  = 1; %will sea-level be coputed? 
 		isgrd                  = 1; %will GRD patterns be computed? 
-		compute_bp_grd         = 1; %will GRD patterns for bottomo pressures be computed? 
+		compute_bp_grd         = 1; %will GRD patterns for bottom pressures be computed? 
 		degacc                 = 0; %degree increment for resolution of Green tables
 		horiz                  = 0; %compute horizontal deformation
@@ -35,6 +35,6 @@
 		
 		%Convergence criterion: absolute, relative and residual
-		self.reltol=0.01; % 1 per cent 
-		self.abstol=NaN;  % default 
+		self.reltol=0.01; % 1 percent
+		self.abstol=NaN;  % default
 
 		%maximum of non-linear iterations.
@@ -89,5 +89,5 @@
 			end
 
-			%a GRD computation has been requested, makes somes checks on the nature of the meshes provided. 
+			%a GRD computation has been requested, make some checks on the nature of the meshes provided. 
 			if self.isgrd,
 				if strcmpi(class(md.mesh),'mesh3dsurface'),
@@ -97,5 +97,5 @@
 				else
 					if self.grdmodel==1,
-						error('model requires a 3D surface mesh to run GRD computations ( change mesh from mesh2d to mesh3dsurface)');
+						error('model requires a 3D surface mesh to run GRD computations (change mesh from mesh2d to mesh3dsurface)');
 					end
 				end
@@ -125,5 +125,5 @@
 			fielddisplay(self,'glfraction','contribute fractionally (default, 1) to barystatic sea level');
 			fielddisplay(self,'grdmodel','type of deformation model, 1 for elastic, 2 for visco-elastic from Ivins');
-			fielddisplay(self,'cross_section_shape','1: square-edged (default). 2: elliptical.  See iedge in GiaDeflectionCore');
+			fielddisplay(self,'cross_section_shape','1: square-edged (default). 2: elliptical. See iedge in GiaDeflectionCore');
 		end % }}}
 		function marshall(self,prefix,md,fid) % {{{
Index: /issm/trunk-jpl/src/m/classes/solidearthsettings.py
===================================================================
--- /issm/trunk-jpl/src/m/classes/solidearthsettings.py	(revision 26059)
+++ /issm/trunk-jpl/src/m/classes/solidearthsettings.py	(revision 26060)
@@ -24,7 +24,10 @@
         self.computesealevelchange  = 1 # Will grd_core compute sea level?
         self.isgrd                  = 1 # Will GRD patterns be computed?
+        self.compute_bp_grd         = 1 # Will GRD patterns for bottom pressures be computed?
         self.degacc                 = 0 # Degree increment for resolution of Green tables
         self.horiz                  = 0 # Compute horizontal displacement?
         self.glfraction             = 1 # Barystatic contribution: full or fractional (default: fractional)
+        self.grdmodel               = 0 # GRD model (0 by default, 1 for elastic, 2 for Ivins)
+        self.cross_section_shape    = 0 # Cross section only used when GRD model is Ivins
 
         nargin = len(args)
@@ -44,4 +47,5 @@
         s += '{}\n'.format(fielddisplay(self, 'computesealevelchange', 'compute sealevel change from GRD in addition to steric?) default 0'))
         s += '{}\n'.format(fielddisplay(self, 'isgrd', 'compute GRD patterns (default: 1'))
+        s += '{}\n'.format(fielddisplay(self, 'compute_bp_grd', 'compute GRD patterns for bottom pressure loads (default 1)'))
         s += '{}\n'.format(fielddisplay(self, 'runfrequency', 'how many time steps we skip before we run solidearthsettings solver during transient (default: 1)'))
         s += '{}\n'.format(fielddisplay(self, 'rigid', 'rigid earth graviational potential perturbation'))
@@ -49,4 +53,6 @@
         s += '{}\n'.format(fielddisplay(self, 'degacc', 'accuracy (default .01 deg) for numerical discretization of the Green\'s functions'))
         s += '{}\n'.format(fielddisplay(self, 'glfraction', 'contribute fractionally (default, 1) to barystatic sea level'))
+        s += '{}\n'.format(fielddisplay(self, 'grdmodel', 'type of deformation model, 1 for elastic, 2 for visco-elastic from Ivins'))
+        s += '{}\n'.format(fielddisplay(self, 'cross_section_shape', '1: square-edged (default). 2: elliptical. See iedge in GiaDeflectionCore'))
         return s
     #}}}
@@ -65,5 +71,6 @@
         self.rotation = 1
         self.ocean_area_scaling = 0
-        self.isgrd = 1
+        self.compute_bp_grd = 1
+        self.isgrd = 0
         self.computesealevelchange = 1
 
@@ -79,4 +86,10 @@
         # Horizontal displacement? (not on by default)
         self.horiz = 0
+
+        # Cross section for Ivins model
+        self.cross_section_shape = 1 # Square as default (see iedde in GiaDeflectionCorex)
+
+        # No GRD model by default
+        self.grdmodel = 0
     #}}}
 
@@ -91,4 +104,6 @@
         md = checkfield(md, 'fieldname', 'solidearth.settings.horiz', 'NaN', 1, 'Inf', 1, 'values', [0, 1])
         md = checkfield(md, 'fieldname', 'solidearth.settings.glfraction', 'values', [0, 1])
+        md = checkfield(md, 'fieldname', 'solidearth.settings.grdmodel', 'values', [1, 2])
+        md = checkfield(md, 'fieldname', 'solidearth.settings.cross_section_shape', 'numel', [1], 'values', [1, 2])
 
         # Checks on computational flags
@@ -96,15 +111,16 @@
             raise Exception('solidearthsettings checkconsistency error message: need rigid on if elastic flag is set')
 
-        # A coupler to planet model is provided
+        # A GRD computation has been requested, make some checks on the nature of the meshes provided
         if self.isgrd:
-            if md.transient.iscoupler:
-                # We are good
-                pass
-            else:
-                if md.mesh.__class__.__name__ == 'mesh3dsurface':
-                    # We are good
-                    pass
+            if md.mesh.__class__.__name__ is 'mesh3dsurface':
+                if self.grdmodel == 2:
+                    raise RuntimeException('model requires a 2D mesh to run gia Ivins computations (change mesh from mesh3dsurface to mesh2d)')
                 else:
-                    raise Exception('model is requesting sealevel computations without being a mesh3dsurface, or being coupled to one!')
+                    if self.grdmodel == 1:
+                        raise RuntimeException('model requires a 3D surface mesh to run GRD computations (change mesh from mesh2d to mesh3dsurface)')
+
+        if self.compute_bp_grd and not md.solidearth.settings.isgrd:
+            raise RuntimeException('solidearthsettings checkconsistency error message; if bottom pressure grd patterns are requested, solidearth settings class should have isgrd flag on')
+
         return md
     #}}}
@@ -123,5 +139,8 @@
         WriteData(fid, prefix, 'object', self, 'fieldname', 'computesealevelchange', 'name', 'md.solidearth.settings.computesealevelchange', 'format', 'Integer')
         WriteData(fid, prefix, 'object', self, 'fieldname','isgrd', 'name', 'md.solidearth.settings.isgrd', 'format', 'Integer')
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'compute_bp_grd', 'name', 'md.solidearth.settings.compute_bp_grd', 'format', 'Integer')
         WriteData(fid, prefix, 'object', self, 'fieldname','glfraction', 'name', 'md.solidearth.settings.glfraction', 'format', 'Integer')
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'grdmodel', 'name', 'md.solidearth.settings.grdmodel', 'format', 'Integer')
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'cross_section_shape', 'name', 'md.solidearth.settings.cross_section_shape', 'format', 'Integer')
     #}}}
 
