Index: /issm/trunk-jpl/src/c/cores/love_core.cpp
===================================================================
--- /issm/trunk-jpl/src/c/cores/love_core.cpp	(revision 22381)
+++ /issm/trunk-jpl/src/c/cores/love_core.cpp	(revision 22382)
@@ -22,4 +22,5 @@
 	IssmDouble  g0,r0,mu0;
 	bool        allow_layer_deletion;
+	bool        love_kernels;
 	int         forcing_type;
 	bool        verbosemod = (int)VerboseModule();
@@ -42,4 +43,5 @@
 	femmodel->parameters->FindParam(&mu0,LoveMu0Enum);
 	femmodel->parameters->FindParam(&allow_layer_deletion,LoveAllowLayerDeletionEnum);
+	femmodel->parameters->FindParam(&love_kernels,LoveKernelsEnum);
 	femmodel->parameters->FindParam(&forcing_type,LoveForcingTypeEnum);
 	
@@ -59,7 +61,11 @@
 	IssmDouble*  LoveHi = xNewZeroInit<IssmDouble>(nfreq*(sh_nmax+1));
 	IssmDouble*  LoveLi = xNewZeroInit<IssmDouble>(nfreq*(sh_nmax+1));
-	
+
+	/*Initialize love kernels (real and imaginary parts): */
+	IssmDouble*  LoveKernelsReal = xNewZeroInit<IssmDouble>(nfreq*(sh_nmax+1)*(matlitho->numlayers+1)*6);
+	IssmDouble*  LoveKernelsImag = xNewZeroInit<IssmDouble>(nfreq*(sh_nmax+1)*(matlitho->numlayers+1)*6);
+
 	/*call the main module: */
-	FourierLoveCorex(LoveKr,LoveKi,LoveHr,LoveHi,LoveLr,LoveLi,  //output
+	FourierLoveCorex(LoveKr,LoveKi,LoveHr,LoveHi,LoveLr,LoveLi,LoveKernelsReal,LoveKernelsImag,  //output
 			nfreq,frequencies,sh_nmax,sh_nmin,g0,r0,mu0,allow_layer_deletion,forcing_type,verbosemod, //parameter inputs
 			matlitho->numlayers, matlitho->radius, matlitho->viscosity, matlitho->lame_lambda, matlitho->lame_mu, 
@@ -74,4 +80,9 @@
 	femmodel->results->AddObject(new GenericExternalResult<IssmDouble*>(femmodel->results->Size()+1,LoveHiEnum,LoveHi,sh_nmax+1,nfreq,0,0));
 	femmodel->results->AddObject(new GenericExternalResult<IssmDouble*>(femmodel->results->Size()+1,LoveLiEnum,LoveLi,sh_nmax+1,nfreq,0,0));
+	/*Only when love_kernels is set unity*/
+	if (love_kernels==1) {
+		femmodel->results->AddObject(new GenericExternalResult<IssmDouble*>(femmodel->results->Size()+1,LoveKernelsRealEnum,LoveKernelsReal,(sh_nmax+1)*(matlitho->numlayers+1)*6,nfreq,0,0));
+		femmodel->results->AddObject(new GenericExternalResult<IssmDouble*>(femmodel->results->Size()+1,LoveKernelsImagEnum,LoveKernelsImag,(sh_nmax+1)*(matlitho->numlayers+1)*6,nfreq,0,0));
+	}
 
 	/*Free ressources:*/
@@ -83,3 +94,5 @@
 	xDelete<IssmDouble>(LoveHi);
 	xDelete<IssmDouble>(LoveLi);
+	xDelete<IssmDouble>(LoveKernelsReal);
+	xDelete<IssmDouble>(LoveKernelsImag);
 }
Index: /issm/trunk-jpl/src/c/modules/FourierLoveCorex/FourierLoveCorex.cpp
===================================================================
--- /issm/trunk-jpl/src/c/modules/FourierLoveCorex/FourierLoveCorex.cpp	(revision 22381)
+++ /issm/trunk-jpl/src/c/modules/FourierLoveCorex/FourierLoveCorex.cpp	(revision 22382)
@@ -12,16 +12,15 @@
 extern "C" { 
 	int lnb_setup_( IssmDouble* LoveKr, IssmDouble* LoveKi, IssmDouble* LoveHr, IssmDouble* LoveHi, IssmDouble* LoveLr, 
-		IssmDouble* LoveLi, int* pnfreq, IssmDouble* frequencies, int* psh_nmax, int* psh_nmin, 
-		IssmDouble* pg0, IssmDouble* pr0, IssmDouble* pmu0,bool* pallow_layer_deletion, int* pforcing_type, bool* pverbosemod,
+		IssmDouble* LoveLi, IssmDouble* LoveKernelsReal, IssmDouble* LoveKernelsImag, 
+		int* pnfreq, IssmDouble* frequencies, int* psh_nmax, int* psh_nmin, IssmDouble* pg0, 
+		IssmDouble* pr0, IssmDouble* pmu0,bool* pallow_layer_deletion, int* pforcing_type, bool* pverbosemod,
 		int* pnumlayers, IssmDouble* radius, IssmDouble* viscosity, IssmDouble* lame_lambda, IssmDouble* lame_mu, 
 		IssmDouble* burgers_viscosity, IssmDouble* burgers_mu, IssmDouble* density, IssmDouble* isburgers, IssmDouble* issolid);
-
 }
 
-/*}}}*/
-
 void FourierLoveCorex( IssmDouble* LoveKr, IssmDouble* LoveKi, IssmDouble* LoveHr, IssmDouble* LoveHi, IssmDouble* LoveLr, 
-		IssmDouble* LoveLi, int nfreq, IssmDouble* frequencies, int sh_nmax, int sh_nmin, 
-		IssmDouble g0, IssmDouble r0, IssmDouble mu0,bool allow_layer_deletion, int forcing_type, bool verbosemod,
+		IssmDouble* LoveLi, IssmDouble* LoveKernelsReal, IssmDouble* LoveKernelsImag, 
+		int nfreq, IssmDouble* frequencies, int sh_nmax, int sh_nmin, IssmDouble g0, 
+		IssmDouble r0, IssmDouble mu0,bool allow_layer_deletion, int forcing_type, bool verbosemod,
 		int numlayers, IssmDouble* radius, IssmDouble* viscosity, IssmDouble* lame_lambda, IssmDouble* lame_mu, 
 		IssmDouble* burgers_viscosity, IssmDouble* burgers_mu, IssmDouble* density, IssmDouble* isburgers, IssmDouble* issolid){
@@ -29,10 +28,8 @@
 	/*Call fortran driver: */
 	lnb_setup_(  LoveKr,  LoveKi,  LoveHr,  LoveHi,  LoveLr, 
-		 LoveLi,  &nfreq,  frequencies,  &sh_nmax,  &sh_nmin, 
-		 &g0,  &r0,  &mu0, &allow_layer_deletion,  &forcing_type, &verbosemod,
+		 LoveLi, LoveKernelsReal, LoveKernelsImag, 
+		 &nfreq,  frequencies,  &sh_nmax,  &sh_nmin, &g0,  
+		 &r0,  &mu0, &allow_layer_deletion, &forcing_type, &verbosemod,
 		 &numlayers,  radius,  viscosity,  lame_lambda,  lame_mu, 
 		 burgers_viscosity,  burgers_mu,  density,  isburgers,  issolid);
-
-	
-	
 }
Index: /issm/trunk-jpl/src/c/modules/FourierLoveCorex/FourierLoveCorex.h
===================================================================
--- /issm/trunk-jpl/src/c/modules/FourierLoveCorex/FourierLoveCorex.h	(revision 22381)
+++ /issm/trunk-jpl/src/c/modules/FourierLoveCorex/FourierLoveCorex.h	(revision 22382)
@@ -10,8 +10,9 @@
 /* local prototypes: */
 void FourierLoveCorex( IssmDouble* LoveKr, IssmDouble* LoveKi, IssmDouble* LoveHr, IssmDouble* LoveHi, IssmDouble* LoveLr, 
-		IssmDouble* LoveLi,int nfreq, IssmDouble* frequencies, int sh_nmax, int sh_nmin, IssmDouble g0, IssmDouble r0, 
-		IssmDouble mu0,bool allow_layer_deletion, int forcing_type, bool verbosemod, int numlayers, IssmDouble* radius,  
-		IssmDouble* viscosity,IssmDouble* lame_lambda, IssmDouble* lame_mu, IssmDouble* burgers_viscosity, IssmDouble* burgers_mu,  
-		IssmDouble* density,IssmDouble* isburgers, IssmDouble* issolid);
+		IssmDouble* LoveLi, IssmDouble* LoveKernelsReal, IssmDouble* LoveKernelsImag, 
+		int nfreq, IssmDouble* frequencies, int sh_nmax, int sh_nmin, IssmDouble g0, 
+		IssmDouble r0, IssmDouble mu0,bool allow_layer_deletion, int forcing_type, bool verbosemod, 
+		int numlayers, IssmDouble* radius, IssmDouble* viscosity,IssmDouble* lame_lambda, IssmDouble* lame_mu, 
+		IssmDouble* burgers_viscosity, IssmDouble* burgers_mu, IssmDouble* density,IssmDouble* isburgers, IssmDouble* issolid);
 
 #endif  /* _FOURIERLOVECOREX_H */
Index: /issm/trunk-jpl/src/c/modules/FourierLoveCorex/love_numbers.f90
===================================================================
--- /issm/trunk-jpl/src/c/modules/FourierLoveCorex/love_numbers.f90	(revision 22381)
+++ /issm/trunk-jpl/src/c/modules/FourierLoveCorex/love_numbers.f90	(revision 22382)
@@ -1,5 +1,8 @@
- subroutine lnb_setup(  ksr, ksi, hsr, hsi, lsr, lsi,  dnfreq,  frequencies,  ddegmax, ddegmin, &
-          dgo0,  dr0,  dmu0, dallow_layer_del,  source_type, ddisplay, dnlayer,  dradius,    &
+ 
+ !subroutine lnb_setup {{{
+ subroutine lnb_setup(  ksr, ksi, hsr, hsi, lsr, lsi, lksr, lksi, dnfreq,  frequencies,  ddegmax, ddegmin, &
+          dgo0,  dr0,  dmu0, dallow_layer_del, source_type, ddisplay, dnlayer,  dradius,    &
           dvic,  dlac,  dmuc, dvic2,  dmuc2,  droc, dburgers,  dsoliddim)
+
  use lnb_param
  use util
@@ -14,4 +17,7 @@
  double precision, dimension(dnfreq) :: frequencies
 
+ double complex :: lks(dnfreq,(ddegmax+1)*(dnlayer+1)*6) 
+ double precision, dimension(dnfreq,(ddegmax+1)*(dnlayer+1)*6) :: lksr, lksi 
+ 
  double precision   :: dmu0,dgo0,dr0
  logical :: dallow_layer_del, ddisplay
@@ -59,5 +65,5 @@
 	ls=hs
  
- call love_numbers(frequencies,source_type,hs,ls,ks)
+ call love_numbers(frequencies,source_type,hs,ls,ks,lks)
 
  hsr=dble(hs)
@@ -67,10 +73,13 @@
  lsr=dble(ls)
  lsi=dimag(ls)
+ !!! love kernels 
+ lksr=dble(lks)
+ lksi=dimag(lks)
 
 end subroutine
-
-!==================== 
- subroutine love_numbers(frequencies,source_type,hs,ls,ks)
-!====================
+! }}}
+
+!subroutine love_numbers {{{
+ subroutine love_numbers(frequencies,source_type,hs,ls,ks,lks)
 
  use model
@@ -89,5 +98,7 @@
  integer :: i,j,k,n, fr,m,l, source_type
  double complex :: hs(nfreq,degmax+1), ls(nfreq,degmax+1), ks(nfreq,degmax+1)
-
+ 
+ double complex, dimension((nlayer+1)*6,1) :: lovekernels
+ double complex :: lks(nfreq,(degmax+1)*(nlayer+1)*6) 
 
  double precision :: cpu_time1(100)
@@ -118,8 +129,10 @@
  ! Test number of interfaces and of boundary conditions
   nbc = 0
-  do i=1,nlayer+1 
- if (radbc(i)) nbc=nbc+6
-  enddo
-
+  !!! >>> SA: 01/27/2018 => following changes are made to retrieve love numbers at depth 
+  !do i=1,nlayer+1 
+ !if (radbc(i)) nbc=nbc+6
+  !enddo
+  nbc = (nlayer+1)*6
+  !!! >>> SA 
 
  ifmin=source_type
@@ -280,5 +293,5 @@
    call external_forcing(deg,f,sourcs,nfext,nbc) 
 	!print*,'forcing ok', layerrap
-   call solution(deg,bc,indx,f,sourcs,nfext,nbc,loveh,lovel,lovek,delta)
+   call solution(deg,bc,indx,f,sourcs,nfext,nbc,loveh,lovel,lovek,delta,lovekernels)
 
 	!print*,'first_sol', layerrap, epsdb
@@ -318,5 +331,5 @@
      call boundary_conditions_matrix(bc,indx,nbc)
      call external_forcing(deg,f,sourcs,nfext,nbc) 
-     call solution(deg,bc,indx,f,sourcs,nfext,nbc,loveh,lovel,lovek,delta)
+     call solution(deg,bc,indx,f,sourcs,nfext,nbc,loveh,lovel,lovek,delta,lovekernels)
 
     end do
@@ -324,9 +337,16 @@
 
    !-- Saving Love numbers
-
-
     hs(fr,deg+1) = loveh
     ks(fr,deg+1) = lovek - 1.d0
     ls(fr,deg+1) = lovel
+    
+    !!! and love kernels 
+    do i=1,nbc
+      lks(fr,deg*nbc+i) = lovekernels(i,1)
+    end do
+    !!! for ks... 6th variable is y5 => love_k
+    do i = 1,nbc/6
+      lks(fr,deg*nbc+6*i) = lks(fr,deg*nbc+6*i) - (radius(i)/ra)**deg
+    end do 
 
 	!print*,dble(hs(fr,deg+1)), dimag(hs(fr,deg+1)),dble(ks(fr,deg+1)), dimag(ks(fr,deg+1))
@@ -362,2 +382,4 @@
  deallocate( bc, indx, f, sourcs )
 end subroutine
+! }}} 
+
Index: /issm/trunk-jpl/src/c/modules/FourierLoveCorex/lovenb_sub.f90
===================================================================
--- /issm/trunk-jpl/src/c/modules/FourierLoveCorex/lovenb_sub.f90	(revision 22381)
+++ /issm/trunk-jpl/src/c/modules/FourierLoveCorex/lovenb_sub.f90	(revision 22382)
@@ -8,6 +8,6 @@
  contains
  
+ ! subroutine boundary_conditions_matrix {{{ 
  subroutine boundary_conditions_matrix(bc,indx,nbc)
-!-------------------------------------
 
   implicit none
@@ -77,14 +77,14 @@
    end if 	
    
-   
    do j = 1,ny
-		! Typing ystart
-		if (radbc(i)) then
-   			ystart(:)=0.d0
+		! Typing ystart 
+      !!! >>> SA: 01/27/2018 => changes made to retrieve love numbers at depth 
+		!!!if (radbc(i)) then
+   		ystart(:)=0.d0
 			ystart(j)= valini
  			k=ibc+1
- 		else
- 			ystart(:)=ystep(j,:)
- 		end if
+ 		!!!else
+ 		!!!	ystart(:)=ystep(j,:)
+ 		!!!end if
  		
 		! Numerical Integration 
@@ -95,5 +95,5 @@
  		
  		! Boundary Condition matrix - propagation part 
-		if (radbc(i+1)) then
+		!!!if (radbc(i+1)) then
  			ii = 6*k+is
  			jj = 6*k+j+is-3
@@ -101,11 +101,11 @@
 				bc(ii+kk,jj) = ystart(kk)*one
 			end do
-		else
-			ystep(j,:)=ystart(:) 
- 		end if
+		!!!else
+		!!!	ystep(j,:)=ystart(:) 
+ 		!!!end if
    end do
 	
 	
-   if (radbc(i)) then
+   !!!if (radbc(i)) then
    
 	! Boundary Condition matrix - solid regions
@@ -118,5 +118,4 @@
 			bc(j+6*ibc,j+6*ibc+3) = one
 		end do
-		ibc = ibc+1
 		
 	! Boundary Condition matrix - liquid regions
@@ -143,10 +142,8 @@
 		bc(ii+2,ii)=-1.d0
 		bc(ii+5,ii-1)= 4.d0*pi*GG*ro1*ra/go0
-		ibc = ibc+1
 	end if	
-	
-    end if
-	
-	
+	ibc = ibc+1
+	
+   !! end if
 	
   end do
@@ -172,5 +169,7 @@
 	!print*, bc, imag_eval
  end subroutine boundary_conditions_matrix
- 
+  ! }}} 
+ 
+ ! subroutine sphere {{{
  subroutine sphere(i,n,bc)
 !------------------------
@@ -223,5 +222,7 @@
 
  end subroutine sphere
- 
+ ! }}} 
+ 
+ ! subroutine external_forcing {{{
  subroutine external_forcing(n,source,sourcs,nfext,nbc)
 !-----------------------------------
@@ -297,6 +298,8 @@
  
  end subroutine external_forcing
- 
- subroutine solution(n,bc,indx,f,sourcs,nfext,nbc,loveh,lovel,lovek,delta)
+ ! }}} 
+ 
+ ! subroutine solution {{{ 
+ subroutine solution(n,bc,indx,f,sourcs,nfext,nbc,loveh,lovel,lovek,delta,love_kernels)
 !-------------------------------------------------
 
@@ -305,5 +308,5 @@
   integer,      dimension(:), pointer :: indx
   character*40, dimension(:), pointer :: sourcs	
-  double complex, dimension(nbc,1) :: sc
+  double complex, dimension(nbc,1) :: sc, love_kernels
   double complex :: loveh,lovel,lovek,loveh1,lovel1,lovek1,loveh1s,lovel1s,lovek1s
   double complex :: sumh,suml,sumk,d,val,sumy2,sumy4,sumy6,rads
@@ -362,9 +365,41 @@
 		print*, 'Error in ZGESV : LAPACK linear equation solver couldn''t resolve the system'
 	end if
+   !!! >>> y1, y3, y5 at surface (by default) 
 	loveh = sc(nbc-2,1)*ra*go_surf
 	lovel = sc(nbc-1,1)*ra*go_surf
 	lovek = sc(nbc,1)*ra*go0
 	delta = (1.d0-dble(n+1)/dble(n)*(lovek-1.d0)+2.d0/dble(n)*loveh)
-	
+
+   !!! >>> at depth [by SA on 1/31/2018] 
+   !!! sc outputs as follows (so scale it accordingly) 
+   !!!      y4 y2 y6 y1 y3 y5 
+   !!!      at center of mass of the earth (top row) => at surface (bottom row) 
+   !print *, nbc 
+   do j = 1,nbc/6
+      !!! y4, y2, y6 are not scaled yet =>>> ask lambert ==>>> 
+      love_kernels((j-1)*6+1,1) = sc((j-1)*6+1,1)               ! y4 NOT SCALED YET 
+      love_kernels((j-1)*6+2,1) = sc((j-1)*6+2,1)               ! y2 NOT SCALED YET 
+      love_kernels((j-1)*6+3,1) = sc((j-1)*6+3,1)               ! y6 NOT SCALED YET 
+      love_kernels((j-1)*6+4,1) = sc((j-1)*6+4,1)*ra*go_surf    ! y1 => love_h 
+      love_kernels((j-1)*6+5,1) = sc((j-1)*6+5,1)*ra*go_surf    ! y3 => love_l 
+      love_kernels((j-1)*6+6,1) = sc((j-1)*6+6,1)*ra*go0        ! y5 => love_k
+      !if (deg==2) then 
+      !   print *, real(love_kernels((j-1)*6+1,1)), real(love_kernels((j-1)*6+4,1))
+      !end if 
+   end do
+
+   !if (deg==2) then
+   !  do ibc=1,nbc/6
+   !      print *, real(sc( (ibc-1)*6+1:(ibc-1)*6+6 , 1))
+   !   end do 
+   !   print *, ' ************* ' 
+   !   do ibc=1,nbc/6
+   !      print *, real(love_kernels( (ibc-1)*6+1:(ibc-1)*6+6 , 1))
+   !   end do 
+   !   print *, ' ************* ' 
+   !   print*, ra*go_surf, ra*go0, mu0
+   !end if 
+   !!! >>> SA 
+
 	sumy2=0.d0
 	sumy4=0.d0
@@ -448,6 +483,7 @@
 
  end subroutine solution 
- 
- 
+ ! }}}
+ 
+  ! subroutine solution_nbloutput {{{ 
   subroutine solution_nbloutput(n,bc,indx,f,sourcs,nfext,nbc,loveh,lovel,lovek,delta)
 !-------------------------------------------------
@@ -593,8 +629,6 @@
    !write(*,*),dlog10(aimag(freq)*365.d0*24.d0*3600.d0*1000.d0),'   Matrix det = ',d, lovek
   
-
  end subroutine solution_nbloutput 
-
-
+ ! }}}
 
 end module lovenb_sub
Index: /issm/trunk-jpl/src/c/modules/FourierLoveCorex/model.f90
===================================================================
--- /issm/trunk-jpl/src/c/modules/FourierLoveCorex/model.f90	(revision 22381)
+++ /issm/trunk-jpl/src/c/modules/FourierLoveCorex/model.f90	(revision 22382)
@@ -73,7 +73,10 @@
   ! Test number of interfaces and of boundary conditions
   n = 0
-  do i=1,nlayer+1 
- if (radbc(i)) n=n+1
-  enddo
+  !!! >>> SA: 01/27/2018 => following changes made to retrieve love numbers at depth 
+  !do i=1,nlayer+1 
+ !if (radbc(i)) n=n+1
+  !enddo
+  n = nlayer+1 
+  !!! >>> SA 
   if (nbc/=(6*n)) then
  !write(101,*),
Index: /issm/trunk-jpl/src/c/modules/ModelProcessorx/CreateParameters.cpp
===================================================================
--- /issm/trunk-jpl/src/c/modules/ModelProcessorx/CreateParameters.cpp	(revision 22381)
+++ /issm/trunk-jpl/src/c/modules/ModelProcessorx/CreateParameters.cpp	(revision 22382)
@@ -86,4 +86,5 @@
 	parameters->AddObject(iomodel->CopyConstantObject("md.love.mu0",LoveMu0Enum));
 	parameters->AddObject(iomodel->CopyConstantObject("md.love.allow_layer_deletion",LoveAllowLayerDeletionEnum));
+	parameters->AddObject(iomodel->CopyConstantObject("md.love.love_kernels",LoveKernelsEnum));
 	parameters->AddObject(iomodel->CopyConstantObject("md.love.forcing_type",LoveForcingTypeEnum));
 
Index: /issm/trunk-jpl/src/c/shared/Enum/EnumDefinitions.h
===================================================================
--- /issm/trunk-jpl/src/c/shared/Enum/EnumDefinitions.h	(revision 22381)
+++ /issm/trunk-jpl/src/c/shared/Enum/EnumDefinitions.h	(revision 22382)
@@ -866,4 +866,7 @@
 	LoveKiEnum,
 	LoveLiEnum,
+	LoveKernelsEnum,
+	LoveKernelsRealEnum,
+	LoveKernelsImagEnum,
 
 	/*}}}*/
Index: /issm/trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp
===================================================================
--- /issm/trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp	(revision 22381)
+++ /issm/trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp	(revision 22382)
@@ -844,4 +844,7 @@
 		case LoveKiEnum : return "LoveKi";
 		case LoveLiEnum : return "LoveLi";
+		case LoveKernelsEnum : return "LoveKernels";
+		case LoveKernelsRealEnum : return "LoveKernelsReal";
+		case LoveKernelsImagEnum : return "LoveKernelsImag";
 		case EsaUmotionEnum : return "EsaUmotion";
 		case EsaNmotionEnum : return "EsaNmotion";
Index: /issm/trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp
===================================================================
--- /issm/trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp	(revision 22381)
+++ /issm/trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp	(revision 22382)
@@ -862,4 +862,7 @@
 	      else if (strcmp(name,"LoveKi")==0) return LoveKiEnum;
 	      else if (strcmp(name,"LoveLi")==0) return LoveLiEnum;
+	      else if (strcmp(name,"LoveKernels")==0) return LoveKernelsEnum;
+	      else if (strcmp(name,"LoveKernelsReal")==0) return LoveKernelsRealEnum;
+	      else if (strcmp(name,"LoveKernelsImag")==0) return LoveKernelsImagEnum;
 	      else if (strcmp(name,"EsaUmotion")==0) return EsaUmotionEnum;
 	      else if (strcmp(name,"EsaNmotion")==0) return EsaNmotionEnum;
@@ -872,11 +875,11 @@
 	      else if (strcmp(name,"EsaStrainrateyy")==0) return EsaStrainrateyyEnum;
 	      else if (strcmp(name,"EsaRotationrate")==0) return EsaRotationrateEnum;
-	      else if (strcmp(name,"EsaDeltathickness")==0) return EsaDeltathicknessEnum;
-	      else if (strcmp(name,"EsaUElastic")==0) return EsaUElasticEnum;
-	      else if (strcmp(name,"EsaHElastic")==0) return EsaHElasticEnum;
          else stage=8;
    }
    if(stage==8){
-	      if (strcmp(name,"EsaTransitions")==0) return EsaTransitionsEnum;
+	      if (strcmp(name,"EsaDeltathickness")==0) return EsaDeltathicknessEnum;
+	      else if (strcmp(name,"EsaUElastic")==0) return EsaUElasticEnum;
+	      else if (strcmp(name,"EsaHElastic")==0) return EsaHElasticEnum;
+	      else if (strcmp(name,"EsaTransitions")==0) return EsaTransitionsEnum;
 	      else if (strcmp(name,"EsaRequestedOutputs")==0) return EsaRequestedOutputsEnum;
 	      else if (strcmp(name,"EsaNumRequestedOutputs")==0) return EsaNumRequestedOutputsEnum;
@@ -995,11 +998,11 @@
 	      else if (strcmp(name,"StressbalanceSIAAnalysis")==0) return StressbalanceSIAAnalysisEnum;
 	      else if (strcmp(name,"StressbalanceSolution")==0) return StressbalanceSolutionEnum;
-	      else if (strcmp(name,"StressbalanceVerticalAnalysis")==0) return StressbalanceVerticalAnalysisEnum;
-	      else if (strcmp(name,"EnthalpyAnalysis")==0) return EnthalpyAnalysisEnum;
-	      else if (strcmp(name,"HydrologyShreveAnalysis")==0) return HydrologyShreveAnalysisEnum;
          else stage=9;
    }
    if(stage==9){
-	      if (strcmp(name,"HydrologyDCInefficientAnalysis")==0) return HydrologyDCInefficientAnalysisEnum;
+	      if (strcmp(name,"StressbalanceVerticalAnalysis")==0) return StressbalanceVerticalAnalysisEnum;
+	      else if (strcmp(name,"EnthalpyAnalysis")==0) return EnthalpyAnalysisEnum;
+	      else if (strcmp(name,"HydrologyShreveAnalysis")==0) return HydrologyShreveAnalysisEnum;
+	      else if (strcmp(name,"HydrologyDCInefficientAnalysis")==0) return HydrologyDCInefficientAnalysisEnum;
 	      else if (strcmp(name,"HydrologyDCEfficientAnalysis")==0) return HydrologyDCEfficientAnalysisEnum;
 	      else if (strcmp(name,"HydrologySommersAnalysis")==0) return HydrologySommersAnalysisEnum;
