Index: /issm/trunk-jpl/src/m/classes/dsl.py
===================================================================
--- /issm/trunk-jpl/src/m/classes/dsl.py	(revision 26316)
+++ /issm/trunk-jpl/src/m/classes/dsl.py	(revision 26317)
@@ -49,5 +49,5 @@
 
         if md.solidearth.settings.compute_bp_grd:
-            md = checkfield(md, 'fieldname', dsl.sea_water_pressure_at_sea_floor, 'empty', 1)
+            md = checkfield(md, 'fieldname', 'dsl.sea_water_pressure_at_sea_floor', 'empty', 1)
 
         return md
Index: /issm/trunk-jpl/src/m/classes/dslmme.py
===================================================================
--- /issm/trunk-jpl/src/m/classes/dslmme.py	(revision 26316)
+++ /issm/trunk-jpl/src/m/classes/dslmme.py	(revision 26317)
@@ -41,5 +41,5 @@
     def checkconsistency(self, md, solution, analyses):  # {{{
         # Early return
-        if ('SealevelriseAnalysis' not in analyses) or (solution == 'TransientSolution' and not md.transient.isslc):
+        if ('SealevelchangeAnalysis' not in analyses) or (solution == 'TransientSolution' and not md.transient.isslc):
             return md
 
Index: /issm/trunk-jpl/src/m/classes/lovenumbers.py
===================================================================
--- /issm/trunk-jpl/src/m/classes/lovenumbers.py	(revision 26316)
+++ /issm/trunk-jpl/src/m/classes/lovenumbers.py	(revision 26317)
@@ -1,2 +1,3 @@
+import numpy as np
 from checkfield import checkfield
 from fielddisplay import fielddisplay
@@ -55,10 +56,10 @@
     def setdefaultparameters(self, maxdeg, referenceframe):  #{{{
         # Initialize love numbers
-        self.h = getlovenumbers('type', 'loadingverticaldisplacement', 'referenceframe', referenceframe, 'maxdeg', maxdeg)
-        self.k = getlovenumbers('type', 'loadinggravitationalpotential', 'referenceframe', referenceframe, 'maxdeg', maxdeg)
-        self.l = getlovenumbers('type', 'loadinghorizontaldisplacement', 'referenceframe', referenceframe, 'maxdeg', maxdeg)
-        self.th = getlovenumbers('type', 'tidalverticaldisplacement', 'referenceframe', referenceframe, 'maxdeg', maxdeg)
-        self.tk = getlovenumbers('type', 'tidalgravitationalpotential', 'referenceframe', referenceframe, 'maxdeg', maxdeg)
-        self.tl = getlovenumbers('type', 'tidalhorizontaldisplacement', 'referenceframe', referenceframe, 'maxdeg', maxdeg)
+        self.h = getlovenumbers('type', 'loadingverticaldisplacement', 'referenceframe', referenceframe, 'maxdeg', maxdeg).reshape(-1,1)
+        self.k = getlovenumbers('type', 'loadinggravitationalpotential', 'referenceframe', referenceframe, 'maxdeg', maxdeg).reshape(-1,1)
+        self.l = getlovenumbers('type', 'loadinghorizontaldisplacement', 'referenceframe', referenceframe, 'maxdeg', maxdeg).reshape(-1,1)
+        self.th = getlovenumbers('type', 'tidalverticaldisplacement', 'referenceframe', referenceframe, 'maxdeg', maxdeg).reshape(-1,1)
+        self.tk = getlovenumbers('type', 'tidalgravitationalpotential', 'referenceframe', referenceframe, 'maxdeg', maxdeg).reshape(-1,1)
+        self.tl = getlovenumbers('type', 'tidalhorizontaldisplacement', 'referenceframe', referenceframe, 'maxdeg', maxdeg).reshape(-1,1)
 
         # Secular fluid love number
@@ -67,5 +68,5 @@
         # Time
         self.istime = 1 # Temporal love numbers by default
-        self.timefreq = 0 # Elastic case by default
+        self.timefreq = np.zeros(1) # Elastic case by default
         return self
     #}}}
@@ -89,5 +90,5 @@
 
         ntf = len(self.timefreq)
-        if (self.h.shape[1] != ntf or self.k.shape[1] != ntf or self.l.shape[1] != ntf or self.th.shape[1] != ntf or self.tk.shape[1] != ntf or self.tl.shape[1] != ntf):
+        if (np.shape(self.h)[1] != ntf or np.shape(self.k)[1] != ntf or np.shape(self.l)[1] != ntf or np.shape(self.th)[1] != ntf or np.shape(self.tk)[1] != ntf or np.shape(self.tl)[1] != ntf):
             raise ValueError('lovenumbers error message: love numbers should have as many time/frequency steps as the time/frequency vector')
 
Index: /issm/trunk-jpl/src/m/classes/matdamageice.py
===================================================================
--- /issm/trunk-jpl/src/m/classes/matdamageice.py	(revision 26316)
+++ /issm/trunk-jpl/src/m/classes/matdamageice.py	(revision 26317)
@@ -115,5 +115,5 @@
         md = checkfield(md, 'fieldname', 'materials.effectiveconductivity_averaging', 'numel', [1], 'values', [0, 1, 2])
 
-        if 'SealevelriseAnalysis' in analyses:
+        if 'SealevelchangeAnalysis' in analyses:
                 md = checkfield(md, 'fieldname', 'materials.earth_density', '>', 0, 'numel', 1)
 
Index: /issm/trunk-jpl/src/m/classes/matenhancedice.py
===================================================================
--- /issm/trunk-jpl/src/m/classes/matenhancedice.py	(revision 26316)
+++ /issm/trunk-jpl/src/m/classes/matenhancedice.py	(revision 26317)
@@ -126,5 +126,5 @@
         md = checkfield(md, 'fieldname', 'materials.effectiveconductivity_averaging', 'numel', [1], 'values', [0, 1, 2])
 
-        if 'SealevelriseAnalysis' in analyses:
+        if 'SealevelchangeAnalysis' in analyses:
             md = checkfield(md, 'fieldname', 'materials.earth_density', '>', 0, 'numel', 1)
         return md
Index: /issm/trunk-jpl/src/m/classes/matestar.py
===================================================================
--- /issm/trunk-jpl/src/m/classes/matestar.py	(revision 26316)
+++ /issm/trunk-jpl/src/m/classes/matestar.py	(revision 26317)
@@ -120,5 +120,5 @@
         md = checkfield(md, 'fieldname', 'materials.effectiveconductivity_averaging', 'numel', [1], 'values', [0, 1, 2])
 
-        if 'SealevelriseAnalysis' in analyses:
+        if 'SealevelchangeAnalysis' in analyses:
             md = checkfield(md, 'fieldname', 'materials.earth_density', '>', 0, 'numel', 1)
 
Index: /issm/trunk-jpl/src/m/classes/nodalvalue.py
===================================================================
--- /issm/trunk-jpl/src/m/classes/nodalvalue.py	(revision 26316)
+++ /issm/trunk-jpl/src/m/classes/nodalvalue.py	(revision 26317)
@@ -12,7 +12,7 @@
         nodalvalue=nodalvalue()
         nodalvalue=nodalvalue(
-            'name', 'SealevelriseSNodalValue',
+            'name', 'SealevelchangeSNodalValue',
             'definitionstring', 'Outputdefinition1',
-            'model_string', 'SealevelriseS',
+            'model_string', 'SealevelchangeS',
             'node', 1
         )
Index: /issm/trunk-jpl/src/m/classes/rotational.py
===================================================================
--- /issm/trunk-jpl/src/m/classes/rotational.py	(revision 26316)
+++ /issm/trunk-jpl/src/m/classes/rotational.py	(revision 26317)
@@ -42,5 +42,5 @@
 
     def checkconsistency(self, md, solution, analyses):  # {{{
-        if ('SealevelriseAnalysis' not in analyses) or (solution == 'TransientSolution' and not md.transient.isslc):
+        if ('SealevelchangeAnalysis' not in analyses) or (solution == 'TransientSolution' and not md.transient.isslc):
             return md
         md = checkfield(md, 'fieldname', 'solidearth.rotational.equatorialmoi', 'NaN', 1, 'Inf', 1)
Index: /issm/trunk-jpl/src/m/classes/slr.py
===================================================================
--- /issm/trunk-jpl/src/m/classes/slr.py	(revision 26316)
+++ /issm/trunk-jpl/src/m/classes/slr.py	(revision 26317)
@@ -7,4 +7,5 @@
 from planetradius import planetradius
 from WriteData import WriteData
+from project3d import project3d
 
 
@@ -120,5 +121,5 @@
     def checkconsistency(self, md, solution, analyses):  # {{{
         # Early return
-        if 'SealevelriseAnalysis' not in analyses or (solution == 'TransientSolution' and not md.transient.isslr):
+        if 'SealevelchangeAnalysis' not in analyses or (solution == 'TransientSolution' and not md.transient.isslr):
             return md
 
Index: /issm/trunk-jpl/src/m/classes/solidearth.py
===================================================================
--- /issm/trunk-jpl/src/m/classes/solidearth.py	(revision 26316)
+++ /issm/trunk-jpl/src/m/classes/solidearth.py	(revision 26317)
@@ -8,4 +8,6 @@
 from rotational import rotational
 from solidearthsettings import solidearthsettings
+from solidearthsolution import solidearthsolution
+from offlinesolidearthsolution import offlinesolidearthsolution
 from surfaceload import surfaceload
 from WriteData import WriteData
@@ -79,5 +81,5 @@
     #}}}
     def checkconsistency(self, md, solution, analyses): #{{{
-        if ('SealevelriseAnalysis' not in analyses) or (solution == 'TransientSolution' and not md.transient.isslc):
+        if ('SealevelchangeAnalysis' not in analyses) or (solution == 'TransientSolution' and not md.transient.isslc):
             return md
 
@@ -88,7 +90,6 @@
         self.rotational.checkconsistency(md, solution, analyses)
         if self.external:
-            if not isinstance(self.external, 'solidearthsolution'):
+            if (not isinstance(self.external,solidearthsolution)) and (not isinstance(self.external,offlinesolidearthsolution)):
                 raise Exception('solidearth consistency check: external field should be a solidearthsolution')
-            end
             self.external.checkconsistency(md, solution, analyses)
         return md
Index: /issm/trunk-jpl/src/m/classes/solidearthsettings.py
===================================================================
--- /issm/trunk-jpl/src/m/classes/solidearthsettings.py	(revision 26316)
+++ /issm/trunk-jpl/src/m/classes/solidearthsettings.py	(revision 26317)
@@ -98,5 +98,5 @@
 
     def checkconsistency(self, md, solution, analyses): #{{{
-        if ('SealevelriseAnalysis' not in analyses) or (solution == 'TransientSolution' and not md.transient.isslc):
+        if ('SealevelchangeAnalysis' not in analyses) or (solution == 'TransientSolution' and not md.transient.isslc):
             return md
 
Index: /issm/trunk-jpl/src/m/classes/solidearthsolution.m
===================================================================
--- /issm/trunk-jpl/src/m/classes/solidearthsolution.m	(revision 26316)
+++ /issm/trunk-jpl/src/m/classes/solidearthsolution.m	(revision 26317)
@@ -66,4 +66,6 @@
 				geoid_rate(end+1,:)=time(1:end-1);
 			end
+
+			WriteData(fid, prefix, 'name', 'md.solidearth.external.nature', 'data', 0, 'format', 'Integer');
 			WriteData(fid,prefix,'object',self,'fieldname','displacementeast','data',displacementeast_rate,'format','DoubleMat','name', 'md.solidearth.external.displacementeast','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1,'yts',yts);
 			WriteData(fid,prefix,'object',self,'fieldname','displacementup','data',displacementup_rate,'format','DoubleMat','name', 'md.solidearth.external.displacementup','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1,'yts',yts);
Index: /issm/trunk-jpl/src/m/classes/solidearthsolution.py
===================================================================
--- /issm/trunk-jpl/src/m/classes/solidearthsolution.py	(revision 26316)
+++ /issm/trunk-jpl/src/m/classes/solidearthsolution.py	(revision 26317)
@@ -53,5 +53,5 @@
 
         # Transform our time series into time series rates
-        if np.shape(self.displacementeast, 1) == 1:
+        if len(np.shape(self.displacementeast)) == 1:
             print('External solidearthsolution warning: only one time step provided, assuming the values are rates per year')
             displacementeast_rate = np.append(np.array(self.displacementeast).reshape(-1, 1), 0)
@@ -61,13 +61,15 @@
         else:
             time = self.displacementeast[-1, :]
-            dt = np.diff(time, 1, 1)
+            dt = np.diff(time, axis=0)
             displacementeast_rate = np.diff(self.displacementeast[0:-2, :], 1, 1) / dt
-            displacementeast_rate.append(time[0:-2])
+            displacementeast_rate = np.append(displacementeast_rate,time[:-1].reshape(1,-1),axis=0)
             displacementnorth_rate = np.diff(self.displacementnorth[0:-2, :], 1, 1) / dt
-            displacementnorth_rate.append(time[0:-2])
+            displacementnorth_rate = np.append(displacementnorth_rate,time[:-1].reshape(1,-1),axis=0)
             displacementup_rate = np.diff(self.displacementup[0:-2, :], 1, 1) / dt
-            displacementup_rate.append(time[0:-2])
+            displacementup_rate = np.append(displacementup_rate,time[:-1].reshape(1,-1),axis=0)
             geoid_rate = np.diff(self.geoid[0:-2, :], 1, 1) / dt
-            geoid_rate.append(time[0:-2])
+            geoid_rate = np.append(geoid_rate,time[:-1].reshape(1,-1),axis=0)
+
+        WriteData(fid, prefix, 'name', 'md.solidearth.external.nature', 'data', 0, 'format', 'Integer')
         WriteData(fid, prefix, 'object', self, 'fieldname', 'displacementeast', 'data', displacementeast_rate, 'format', 'DoubleMat', 'name', 'md.solidearth.external.displacementeast', 'mattype', 1, 'scale', 1 / yts,'timeserieslength', md.mesh.numberofvertices + 1, 'yts', yts);
         WriteData(fid, prefix, 'object', self, 'fieldname', 'displacementup', 'data', displacementup_rate,'format', 'DoubleMat', 'name', 'md.solidearth.external.displacementup', 'mattype', 1, 'scale', 1 / yts,'timeserieslength', md.mesh.numberofvertices + 1, 'yts', yts);
Index: /issm/trunk-jpl/src/m/classes/surfaceload.py
===================================================================
--- /issm/trunk-jpl/src/m/classes/surfaceload.py	(revision 26316)
+++ /issm/trunk-jpl/src/m/classes/surfaceload.py	(revision 26317)
@@ -39,5 +39,5 @@
 
     def checkconsistency(self, md, solution, analyses):  # {{{
-        if ('SealevelriseAnalysis' not in analyses) or (solution == 'TransientSolution' and not md.transient.isslc):
+        if ('SealevelchangeAnalysis' not in analyses) or (solution == 'TransientSolution' and not md.transient.isslc):
             return md
         if type(self.icethicknesschange) == np.ndarray:
