Index: /issm/trunk-jpl/src/m/classes/clusters/generic.py
===================================================================
--- /issm/trunk-jpl/src/m/classes/clusters/generic.py	(revision 25153)
+++ /issm/trunk-jpl/src/m/classes/clusters/generic.py	(revision 25154)
@@ -102,10 +102,10 @@
                 if self.interactive:
                     if IssmConfig('_HAVE_MPI_')[0]:
-                        fid.write('operf mpiexec -np {} {}/{} {} {}/{} {}'.format(self.np, self.codepath, executable, solution, self.executionpath, dirname, modelname))
+                        fid.write('mpiexec -np {} {}/{} {} {}/{} {}'.format(self.np, self.codepath, executable, solution, self.executionpath, dirname, modelname))
                     else:
                         fid.write('{}/{} {} {}/{} {} '.format(self.codepath, executable, solution, self.executionpath, dirname, modelname))
                 else:
                     if IssmConfig('_HAVE_MPI_')[0]:
-                        fid.write('operf mpiexec -np {} {}/{} {} {}/{} {} 2>{}.errlog>{}.outlog'.
+                        fid.write('mpiexec -np {} {}/{} {} {}/{} {} 2>{}.errlog>{}.outlog'.
                                   format(self.np, self.codepath, executable, solution, self.executionpath, dirname, modelname, modelname, modelname))
                     else:
Index: /issm/trunk-jpl/src/m/classes/lovenumbers.py
===================================================================
--- /issm/trunk-jpl/src/m/classes/lovenumbers.py	(revision 25154)
+++ /issm/trunk-jpl/src/m/classes/lovenumbers.py	(revision 25154)
@@ -0,0 +1,90 @@
+import numpy as np
+from checkfield import checkfield
+from fielddisplay import fielddisplay
+
+
+class lovenumbers(object):
+    '''
+    LOVENUMBERS numbers class definition
+
+    Usage:
+      lovenumbers = lovenumbers() #will setup love numbers deg 1001 by default
+      lovenumbers = lovenumbers('maxdeg', 10001);  #supply numbers of degrees required (here, 10001)
+    '''
+
+    def __init__(sefl, *args):  #{{{
+
+        #regular love numbers:
+        self.h = []  #provided by PREM model
+        self.k = []  #idem
+        self.l = []  #idem
+
+        #tidal love numbers for computing rotational feedback:
+        self.th = []
+        self.tk = []
+        self.tl = []
+        self.tk2secular = 0  #deg 2 secular number.
+    # }}}
+
+    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)
+
+        #secular fluid love number:
+        self.tk2secular = 0.942
+    # }}}
+
+    def checkconsistency(self, md, solution, analyses):  # {{{
+
+        if 'SealevelriseAnalysis' not in analyses or (solution == 'TransientSolution' and md.transient.isslr == 0):
+            return
+
+        md = checkfield(md, 'fieldname', 'solidearth.lovenumbers.h', 'NaN', 1, 'Inf', 1)
+        md = checkfield(md, 'fieldname', 'solidearth.lovenumbers.k', 'NaN', 1, 'Inf', 1)
+        md = checkfield(md, 'fieldname', 'solidearth.lovenumbers.l', 'NaN', 1, 'Inf', 1)
+
+        md = checkfield(md, 'fieldname', 'solidearth.lovenumbers.th', 'NaN', 1, 'Inf', 1)
+        md = checkfield(md, 'fieldname', 'solidearth.lovenumbers.tk', 'NaN', 1, 'Inf', 1)
+        md = checkfield(md, 'fieldname', 'solidearth.lovenumbers.tk2secular', 'NaN', 1, 'Inf', 1)
+
+        #check that love numbers are provided at the same level of accuracy:
+        if np.shape(self.h)[0] != np.shape(self.k)[0] or np.shape(self.h)[0] != np.shape(self.l)[0]:
+            raise ValueError('lovenumbers error message: love numbers should be provided at the same level of accuracy')
+    # }}}
+
+    def defaultoutputs(self, md):  # {{{
+        return[]
+    # }}}
+
+    def __repr__(self):  # {{{
+        s = '   lovenumbers parameters:'
+
+        s += '{}\n'.format(fielddisplay(self, 'h', 'load Love number for radial displacement'))
+        s += '{}\n'.format(fielddisplay(self, 'k', 'load Love number for gravitational potential perturbation'))
+        s += '{}\n'.format(fielddisplay(self, 'l', 'load Love number for horizontal displacements'))
+        s += '{}\n'.format(fielddisplay(self, 'th', 'tidal load Love number (deg 2)'))
+        s += '{}\n'.format(fielddisplay(self, 'tk', 'tidal load Love number (deg 2)'))
+        s += '{}\n'.format(fielddisplay(self, 'tk2secular', 'secular fluid Love number'))
+    # }}}
+
+    def marshall(self, prefix, md, fid):  # {{{
+
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'h', 'name', 'md.solidearth.lovenumbers.h', 'format', 'DoubleMat', 'mattype', 1)
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'k', 'name', 'md.solidearth.lovenumbers.k', 'format', 'DoubleMat', 'mattype', 1)
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'l', 'name', 'md.solidearth.lovenumbers.l', 'format', 'DoubleMat', 'mattype', 1)
+
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'th', 'name', 'md.solidearth.lovenumbers.th', 'format', 'DoubleMat', 'mattype', 1)
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'tk', 'name', 'md.solidearth.lovenumbers.tk', 'format', 'DoubleMat', 'mattype', 1)
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'tl', 'name', 'md.solidearth.lovenumbers.tl', 'format', 'DoubleMat', 'mattype', 1)
+        WriteData(fid, prefix, 'object', self, 'data', self.tk2secular, 'fieldname', 'lovenumbers.tk2secular', 'format', 'Double')
+    # }}}
+
+    def extrude(self, md): # {{{
+        return
+# }}}
