Index: /issm/trunk-jpl-damage/INSTALL
===================================================================
--- /issm/trunk-jpl-damage/INSTALL	(revision 11424)
+++ /issm/trunk-jpl-damage/INSTALL	(revision 11425)
@@ -1,3 +1,2 @@
-For the installation process please go to the ISSM website:
-
+For the installation process please go to the ISSM website 
 http://issm.jpl.nasa.gov/
Index: sm/trunk-jpl-damage/configs/config-greenplanet.sh
===================================================================
--- /issm/trunk-jpl-damage/configs/config-greenplanet.sh	(revision 11424)
+++ 	(revision )
@@ -1,24 +1,0 @@
-#!/bin/csh
-
-#PETSc 3.2
-#MPI /sopt/mpi/openmpi-1.5.4_psm/intel
-
-./configure \
- --prefix=$ISSM_TIER \
- --with-serial=no \
- --with-triangle-dir=$ISSM_TIER/externalpackages/triangle/install \
- --with-metis-dir=$ISSM_TIER/externalpackages/metis/install \
- --with-petsc-dir=$ISSM_TIER/externalpackages/petsc/install \
- --with-mpi-include="/sopt/mpi/openmpi-1.5.4_psm/intel/include/" \
- --with-mpi-lib="-L/sopt/mpi/openmpi-1.5.4_psm/intel/lib/ -lmpi -lmpi_f77" \
- --with-petsc-arch=$ISSM_ARCH \
- --with-dakota-dir=$ISSM_TIER/externalpackages/dakota/install \
- --with-mkl-dir=/opt/intel/mkl/10.2.4.032/ \
- --with-plapack-lib="-L$ISSM_TIER/externalpackages/petsc/install/ -lPLAPACK" \
- --with-plapack-include="-I$ISSM_TIER/externalpackages/petsc/install/externalpackages/PLAPACKR32-hg/INCLUDE" \
- --with-mumps-dir=$ISSM_TIER/externalpackages/petsc/install/ \
- --with-scalapack-dir=$ISSM_TIER/externalpackages/petsc/install/ \
- --with-blacs-dir=$ISSM_TIER/externalpackages/petsc/install/ \
- --with-graphics-lib=/usr/lib64/libX11.so \
- --with-cxxoptflags="-O3 -xS" \
- --with-vendor=intel-linux
Index: /issm/trunk-jpl-damage/cron/cronfiles/linux_cronfile
===================================================================
--- /issm/trunk-jpl-damage/cron/cronfiles/linux_cronfile	(revision 11424)
+++ /issm/trunk-jpl-damage/cron/cronfiles/linux_cronfile	(revision 11425)
@@ -6,14 +6,9 @@
 
 #cronjob
-00 09 * * 1-5 cd /u/astrid-r1b/schlegel/issmuci/trunk-jpl/cron/ && ./nightlyrun.sh configs/linux64_schlegel_daily
-30 12 * * 1-5 cd /u/astrid-r1b/schlegel/issmuci/trunk-jpl/cron/ && ./nightlyrun.sh configs/linux64_schlegel_daily
-00 15 * * 1-5 cd /u/astrid-r1b/schlegel/issmuci/trunk-jpl/cron/ && ./nightlyrun.sh configs/linux64_schlegel_daily
-00 18 * * 1-5 cd /u/astrid-r1b/schlegel/issmuci/trunk-jpl/cron/ && ./nightlyrun.sh configs/linux64_schlegel_daily
-00 23 * * 1-5 cd /u/astrid-r1b/schlegel/issmuci/trunk-jpl/cron/ && ./nightlyrun.sh configs/linux64_schlegel_nightly
-00 20 * * 6   cd /u/astrid-r1b/schlegel/ExecutionNightlyRun && rm -r test*
-00 21 * * 6   cd /u/astrid-r1b/schlegel/issmuci/trunk-jpl/cron/trunk-jpl/test/NightlyRun && make clean
-00 22 * * 6   cd /u/astrid-r1b/schlegel/issmuci/trunk-jpl/cron/trunk-jpl/test/NightlyRun && rm -r qmu*
-00 23 * * 6   cd /u/astrid-r1b/schlegel/issmuci/trunk-jpl/cron/ && ./nightlyrun.sh configs/linux64_schlegel_validation
-00 21 * * 7   cd /u/astrid-r1b/schlegel/issmuci/trunk-jpl/cron/trunk/test/NightlyRun && make clean
-00 22 * * 7   cd /u/astrid-r1b/schlegel/issmuci/trunk-jpl/cron/trunk/test/NightlyRun && rm -r qmu*
-00 23 * * 7   cd /u/astrid-r1b/schlegel/issmuci/trunk-jpl/cron/ && ./nightlyrun.sh configs/linux64_schlegel_ucitrunk
+00 09 * * 1-5 cd /u/astrid-r1b/seroussi/issm/trunk-jpl/cron/ && ./nightlyrun.sh configs/linux64_seroussi_daily
+30 12 * * 1-5 cd /u/astrid-r1b/seroussi/issm/trunk-jpl/cron/ && ./nightlyrun.sh configs/linux64_seroussi_daily
+00 15 * * 1-5 cd /u/astrid-r1b/seroussi/issm/trunk-jpl/cron/ && ./nightlyrun.sh configs/linux64_seroussi_daily
+00 18 * * 1-5 cd /u/astrid-r1b/seroussi/issm/trunk-jpl/cron/ && ./nightlyrun.sh configs/linux64_seroussi_daily
+00 23 * * 1-5 cd /u/astrid-r1b/seroussi/issm/trunk-jpl/cron/ && ./nightlyrun.sh configs/linux64_seroussi_nightly
+00 23 * * 6   cd /u/astrid-r1b/seroussi/issm/trunk-jpl/cron/ && ./nightlyrun.sh configs/linux64_seroussi_validation
+00 23 * * 7   cd /u/astrid-r1b/seroussi/issm/trunk-jpl/cron/ && ./nightlyrun.sh configs/linux64_seroussi_ucitrunk
Index: sm/trunk-jpl-damage/externalpackages/intel/.bashrc
===================================================================
--- /issm/trunk-jpl-damage/externalpackages/intel/.bashrc	(revision 11424)
+++ 	(revision )
@@ -1,1 +1,0 @@
-link .bash_profile
Index: sm/trunk-jpl-damage/externalpackages/intel/.exrc
===================================================================
--- /issm/trunk-jpl-damage/externalpackages/intel/.exrc	(revision 11424)
+++ 	(revision )
@@ -1,55 +1,0 @@
-set noic
-set autoindent
-set wrapmargin=0
-set tabstop=4
-set shiftwidth=4
-set nomesg
-map #5 o$.......2.......3.......4.......5.......6.......7.......8.......9.......0.......
-map #6 !}fmt -w 80
- 
-map #7 o$........1.........2.........3.........4.........5.........6.........7..
-map #9 i/*50a-
-map #10 2i 50a-a*/
-ab bc /*
-ab ec */
-ab IOMS IMOS
-ab TF THISFUNCTION
-ab PS PetscSynchronizedPrintf(MPI_COMM_WORLD,"");
-PetscSynchronizedFlush(MPI_COMM_WORLD);
-ab As /*Assign output pointers:*/
-ab Fe /*Free ressources:*/
-ab p1 printf("ok1\n");
-ab p2 printf("ok2\n");
-ab p3 printf("ok3\n");
-ab p4 printf("ok4\n");
-ab p5 printf("ok5\n");
-ab p6 printf("ok6\n");
-ab p7 printf("ok7\n");
-ab p8 printf("ok8\n");
-ab p9 printf("ok9\n");
-
-ab cit \textit{temp} [2001] \cite{temp2001}
-ab xf xfree((void**)&);<left><left>
-
-:function! ReverseBackground() 
-:   let Mysyn=&syntax 
-:   if &bg=="light" 
-:       se bg=dark 
-:       highlight Normal guibg=black guifg=white 
-:   else 
-:       se bg=light 
-:       highlight Normal guibg=white guifg=black 
-:   endif   
-:   syn on   
-:   exe "set syntax=" . Mysyn 
-:   echo "now syntax is "&syntax 
-:endfunction 
-:command! Invbg call ReverseBackground() 
-:noremap <F11> :Invbg<CR>
-
-
-"  Abbreviations {{{1
-" ----------------------------------------------------------------------
-au BufRead,BufNewFile *.c* iab <expr> des  "printf(\"file: ".expand('%')." line: %i\\n\",__LINE__);"
-au BufRead,BufNewFile *.c* iab <expr> dep "PetscSynchronizedPrintf(MPI_COMM_WORLD,\"file: ".expand('%:p')." line: ".line(".")."\\n\");\nPetscSynchronizedFlush(MPI_COMM_WORLD);"
-"}}}
Index: sm/trunk-jpl-damage/externalpackages/intel/.vimrc
===================================================================
--- /issm/trunk-jpl-damage/externalpackages/intel/.vimrc	(revision 11424)
+++ 	(revision )
@@ -1,96 +1,0 @@
-
-" Use Vim settings, rather then Vi settings (much better!).
-" This must be first, because it changes other options as a side effect.
-set nocompatible
-set foldmethod=marker
-
-" allow backspacing over everything in insert mode
-set backspace=indent,eol,start
-
-set autoindent		" always set autoindenting on
-set history=50		" keep 50 lines of command line history
-set ruler		" show the cursor position all the time
-set showcmd		" display incomplete commands
-set incsearch		" do incremental searching 
-set softtabstop=3 
-set uc=0                " disable swap files
-set shell=/bin/bash  
-set nobackup
-
-" For Win32 GUI: remove 't' flag from 'guioptions': no tearoff menu entries
-" let &guioptions = substitute(&guioptions, "t", "", "g")
-
-" Don't use Ex mode, use Q for formatting
-map Q gq
-
-" Make p in Visual mode replace the selected text with the "" register.
-vnoremap p <Esc>:let current_reg = @"<CR>gvs<C-R>=current_reg<CR><Esc>
-
-" This is an alternative that also works in block mode, but the deleted
-" text is lost and it only works for putting the current register.
-"vnoremap p "_dp
-
-" Switch syntax highlighting on, when the terminal has colors
-" Also switch on highlighting the last used search pattern.
-syntax on
-set hlsearch 
-
-" Only do this part when compiled with support for autocommands.
-if has("autocmd")
-
-  " Enable file type detection.
-  " Use the default filetype settings, so that mail gets 'tw' set to 72,
-  " 'cindent' is on in C files, etc.
-  " Also load indent files, to automatically do language-dependent indenting.
-  filetype plugin indent on
-
-  " For all text files set 'textwidth' to 78 characters.
-  autocmd FileType text setlocal textwidth=0
-
-  " When editing a file, always jump to the last known cursor position.
-  " Don't do it when the position is invalid or when inside an event handler
-  " (happens when dropping a file on gvim).
-  autocmd BufReadPost *
-    \ if line("'\"") > 0 && line("'\"") <= line("$") |
-    \   exe "normal g`\"" |
-    \ endif |
-	 \ if foldlevel('.') > 0 |
-    \   exe ":foldopen!" |
-	 \ endif
-
-
-
-endif " has("autocmd")
-colo default  
-
-
-"execute "source ~/.vim/plugin/FeralToggleCommentify.vim" 
-"map <M-c> : call ToggleCommentify()<CR>j
-"imap <M-c> <ESC>:call ToggleCommentify()<CR>j
-
-
-
-function! InsertTabWrapper(direction) 
-let col = col('.') - 1 
-if !col || getline('.')[col - 1] !~ '\k' 
-   return "\<tab>" 
-elseif "backward" == a:direction 
-   return "\<c-p>" 
-else 
-   return "\<c-n>" 
-endif 
-endfunction 
-
-inoremap <tab> <c-r>=InsertTabWrapper ("forward")<cr>
-inoremap <s-tab> <c-r>=InsertTabWrapper ("backward")<cr>
-
-source ~/.exrc 
-set wildmenu
-set  background=dark
-
-"Do local Makefile
-map <F2> :!/home/larour/bin/cs <CR>
-"Compile server code
-map <F1> :!/home/larour/bin/c <CR>
-"Change to directory of current file automatically
-autocmd BufEnter * lcd %:p:h
Index: /issm/trunk-jpl-damage/externalpackages/matlab/install.sh
===================================================================
--- /issm/trunk-jpl-damage/externalpackages/matlab/install.sh	(revision 11424)
+++ /issm/trunk-jpl-damage/externalpackages/matlab/install.sh	(revision 11425)
@@ -5,8 +5,8 @@
 
 #Select or create a new simlink
-#ln -s /usr/local/pkgs/matlab-7.6/ install
+ln -s /usr/local/pkgs/matlab-7.6/ install
 #ln -s /usr/local/matlab704/ install
 #ln -s /usr/local/matlab711/ install
-ln -s /usr/local/matlab712/ install
+#ln -s /usr/local/matlab712/ install
 #ln -s /usr/local/pkgs/matlab-7.6/ install
 #ln -s /Applications/MATLAB_R2008a/ install
Index: sm/trunk-jpl-damage/externalpackages/metis/install-4.0-greenplanet.sh
===================================================================
--- /issm/trunk-jpl-damage/externalpackages/metis/install-4.0-greenplanet.sh	(revision 11424)
+++ 	(revision )
@@ -1,20 +1,0 @@
-#!/bin/bash
-
-#Some cleanup
-rm -rf install metis-4.0
-mkdir install
-
-#Untar 
-tar -zxvf  metis-4.0.tar.gz
-
-#Move metis into install directory
-mv metis-4.0/* install
-rm -rf metis-4.0
-
-#Apply patches
-cd install 
-patch -p1 < ../metis-4.0.patch
-patch Makefile.in ../configs/4.0/greenplanet/Makefile.in.patch
-
-#Compile
-make
Index: sm/trunk-jpl-damage/externalpackages/metis/install-4.0-win7.sh
===================================================================
--- /issm/trunk-jpl-damage/externalpackages/metis/install-4.0-win7.sh	(revision 11424)
+++ 	(revision )
@@ -1,21 +1,0 @@
-#!/bin/bash
-
-#Some cleanup
-rm -rf install metis-4.0
-mkdir install
-
-#Untar 
-tar -zxvf  metis-4.0.tar.gz
-
-#Move metis into install directory
-mv metis-4.0/* install
-rm -rf metis-4.0
-
-#Apply patches
-cd install 
-patch -p1 < ../metis-4.0.patch
-patch -R Lib/Makefile ../configs/4.0/win7/Makefile.patch
-patch -R Makefile.in ../configs/4.0/win7/Makefile.in.patch
-
-#Compile
-make
Index: sm/trunk-jpl-damage/externalpackages/petsc/install-2.3.2-win7.sh
===================================================================
--- /issm/trunk-jpl-damage/externalpackages/petsc/install-2.3.2-win7.sh	(revision 11424)
+++ 	(revision )
@@ -1,25 +1,0 @@
-#!/bin/bash
-
-#Some cleanup
-rm -rf install petsc-2.3.2-p3 src
-mkdir install src
-
-#Untar and move petsc to install directory
-tar -zxvf  petsc-2.3.2-p3.tar.gz
-mv petsc-2.3.2-p3/* install/
-rm -rf petsc-2.3.2-p3
-
-#configure
-cd install
-./config/configure.py  \
-	--with-parallel-no \
-	--prefix="$ISSM_TIER/externalpackages/petsc/install" \
-	--PETSC_ARCH=cygwin-intel \
-	--PETSC_DIR="$ISSM_TIER/externalpackages/petsc/install" \
-	--with-debugging=0 \
-	--with-mpi=0 \
-	--download-c-blas-lapack=1
-
-#Compile petsc and install it
-make
-make install
Index: sm/trunk-jpl-damage/externalpackages/petsc/install-3.1-win7.sh
===================================================================
--- /issm/trunk-jpl-damage/externalpackages/petsc/install-3.1-win7.sh	(revision 11424)
+++ 	(revision )
@@ -1,44 +1,0 @@
-#!/bin/bash
-
-#Some cleanup
-rm -rf install petsc-3.1-p7 src
-mkdir install src
-
-#Untar and move petsc to install directory
-tar -zxvf  petsc-3.1-p7.tar.gz
-mv petsc-3.1-p7/* src/
-rm -rf petsc-3.1-p7
-
-#configure
-cd src
-./config/configure.py  \
-	--with-parallel-no \
-	--prefix="$ISSM_TIER/externalpackages/petsc/install" \
-	--PETSC_ARCH=cygwin-intel \
-	--PETSC_DIR="$ISSM_TIER/externalpackages/petsc/src" \
-	--with-debugging=0 \
-	--with-mpi=0 \
-	--download-c-blas-lapack=1
-
-#./config/configure.py  \
-# --prefix="$ISSM_TIER/externalpackages/petsc/install" \
-# --PETSC_DIR="$ISSM_TIER/externalpackages/petsc/src" \
-# --PETSC_ARCH=macosx-gnu \
-# --with-mpi-dir=$ISSM_TIER/externalpackages/mpich2/install \
-# --with-debugging=0 \
-# --with-shared=0 \
-# --download-mumps=yes \
-# --download-scalapack=yes \
-# --download-blacs=yes \
-# --download-blas=yes \
-# --download-f-blas-lapack=yes \
-# --download-plapack=yes \
-# --FFLAGS="-I$ISSM_TIER/externalpackages/mpich2/install/include -arch i386" \
-# --COPTFLAGS="-march=opteron -O2 -arch i386" \
-# --FOPTFLAGS="-march=opteron -O2 -arch i386" \
-# --CXXOPTFLAGS="-march=opteron -O2 -arch i386" \
-# --download-parmetis=yes
-
-#Compile petsc and install it
-make
-make install
Index: sm/trunk-jpl-damage/externalpackages/petsc/install-3.2-greenplanet.sh
===================================================================
--- /issm/trunk-jpl-damage/externalpackages/petsc/install-3.2-greenplanet.sh	(revision 11424)
+++ 	(revision )
@@ -1,31 +1,0 @@
-#!/bin/bash
-
-#Some cleanup
-rm -rf install petsc-3.2-p3 src
-mkdir install src
-
-#Untar and move petsc to install directory
-tar -zxvf  petsc-3.2-p3.tar.gz
-mv petsc-3.2-p3/* src/
-rm -rf petsc-3.2-p3
-
-#configure
-cd src
-./config/configure.py \
-	--prefix="$ISSM_TIER/externalpackages/petsc/install" \
-	--PETSC_DIR="$ISSM_TIER/externalpackages/petsc/src" \
-	--PETSC_ARCH="$ISSM_ARCH" \
-	--with-batch=1 \
-	--with-debugging=0 \
-	--with-shared-libraries=0 \
-	--known-mpi-shared-libraries=1 \
-	--with-mpi-dir=/sopt/mpi/openmpi-1.5.4_psm/intel/ \
-	--with-blas-lapack-dir=/opt/intel/mkl/10.2.4.032/ \
-	--download-mumps=yes \
-	--download-scalapack=yes \
-	--download-blacs=yes \
-	--download-plapack=yes \
-	--download-parmetis=yes \
-	--with-pic=1
-
-echo "== Follow PETSc's instructions"
Index: sm/trunk-jpl-damage/externalpackages/triangle/install-win7.sh
===================================================================
--- /issm/trunk-jpl-damage/externalpackages/triangle/install-win7.sh	(revision 11424)
+++ 	(revision )
@@ -1,23 +1,0 @@
-#!/bin/bash
-
-#Some cleanup 
-rm -rf install triangle
-mkdir install
-
-#Untar 
-cd install
-cp ../triangle.zip ./
-unzip triangle.zip
-
-#copy new makefile
-cp ../configs/win7/configure.make ./
-cp ../configs/win7/makefile ./
-
-#Patch triangle.c 
-patch triangle.c ../triangle.c.patch
-
-#Compile triangle
-make
-
-#Patch triangle.h
-patch triangle.h ../triangle.h.patch
Index: /issm/trunk-jpl-damage/src/c/EnumDefinitions/EnumDefinitions.h
===================================================================
--- /issm/trunk-jpl-damage/src/c/EnumDefinitions/EnumDefinitions.h	(revision 11424)
+++ /issm/trunk-jpl-damage/src/c/EnumDefinitions/EnumDefinitions.h	(revision 11425)
@@ -162,5 +162,4 @@
 	ThermalSpctemperatureEnum,
 	ThermalStabilizationEnum,
-	ThermalIsenthalpyEnum,
 	ThicknessEnum,
 	TimesteppingCflCoefficientEnum,
Index: /issm/trunk-jpl-damage/src/c/EnumDefinitions/Synchronize.sh
===================================================================
--- /issm/trunk-jpl-damage/src/c/EnumDefinitions/Synchronize.sh	(revision 11424)
+++ /issm/trunk-jpl-damage/src/c/EnumDefinitions/Synchronize.sh	(revision 11425)
@@ -9,7 +9,4 @@
 rm $ISSM_TIER/src/c/modules/EnumToStringx/EnumToStringx.cpp
 rm $ISSM_TIER/src/c/modules/StringToEnumx/StringToEnumx.cpp
-
-#Get number of enums
-NUMENUMS=$(wc -l temp | awk '{printf("%s",$1);}');
 
 #Take care of EnumToModelField.m first (easy)
@@ -98,33 +95,20 @@
 int  StringToEnumx(const char* name){
 
-   int  stage=1;
+END
+#core
+cat temp |  awk '{print "\t" ((NR==1)?"if":"else if") " (strcmp(name,\"" substr($2,1,length($2)-4) "\")==0) return " $2 ";"}' >> $ISSM_TIER//src/c/modules/StringToEnumx/StringToEnumx.cpp
+#Footer
+cat <<END >> $ISSM_TIER/src/c/modules/StringToEnumx/StringToEnumx.cpp
+	else _error_("Enum %s not found",name);
 
-END
-
-#core
-i1=1;
-i2=120;
-for (( i=1 ; i<=100 ; i++ )); do
-	echo "   if(stage==$i){" >> $ISSM_TIER//src/c/modules/StringToEnumx/StringToEnumx.cpp
-	awk -v i1=$i1 -v i2=$i2 '{if(NR>=i1 && NR<=i2) print $0 }' temp |
-	awk '{print "\t" ((NR==1)?"      if":"      else if") " (strcmp(name,\"" substr($2,1,length($2)-4) "\")==0) return " $2 ";"}' >> $ISSM_TIER//src/c/modules/StringToEnumx/StringToEnumx.cpp
-	echo "         else stage=$(($i+1));" >> $ISSM_TIER//src/c/modules/StringToEnumx/StringToEnumx.cpp
-	echo "   }" >> $ISSM_TIER//src/c/modules/StringToEnumx/StringToEnumx.cpp
-	
-	if [ $i2 -ge $NUMENUMS ]; then break; fi
-	let i1=$i1+120
-	let i2=$i2+120
-done
-
-#footer
-cat <<END >> $ISSM_TIER/src/c/modules/StringToEnumx/StringToEnumx.cpp
-	/*If we reach this point, the string provided has not been found*/
-   _error_("Enum %s not found",name);
 }
 END
 #}}}
 
+#get number of lines in temp
+NUMBEROFLINES=$(wc -l temp | awk '{printf("%s",$1);}');
+
 # go through the lines of temp
-for (( i=1 ; i<=$NUMENUMS ; i++ )); do
+for (( i=1 ; i<=$NUMBEROFLINES ; i++ )); do
 
 	#Get name and enum of the line i
@@ -139,13 +123,13 @@
 	then
 		printf "\r                                                                      "
-		printf "\r  $i/$NUMENUMS Adding "$NAME"..."
+		printf "\r  $i/$NUMBEROFLINES Adding "$NAME"..."
 	else
 		if [ $i -lt 100 ]
 		then
 			printf "\r                                                                      "
-			printf "\r $i/$NUMENUMS Adding "$NAME"..."
+			printf "\r $i/$NUMBEROFLINES Adding "$NAME"..."
 		else
 			printf "\r                                                                      "
-			printf "\r$i/$NUMENUMS Adding "$NAME"..."
+			printf "\r$i/$NUMBEROFLINES Adding "$NAME"..."
 		fi
 	fi
@@ -169,4 +153,5 @@
 done
 
+
 #clean up{{{
 rm temp
Index: /issm/trunk-jpl-damage/src/c/modules/BamgTriangulatex/BamgTriangulatex.cpp
===================================================================
--- /issm/trunk-jpl-damage/src/c/modules/BamgTriangulatex/BamgTriangulatex.cpp	(revision 11424)
+++ /issm/trunk-jpl-damage/src/c/modules/BamgTriangulatex/BamgTriangulatex.cpp	(revision 11425)
@@ -17,5 +17,4 @@
 	Th.WriteIndex(pindex,pnels);
 	//delete &Th;
-	return 0;
 
 }
Index: /issm/trunk-jpl-damage/src/c/modules/Chacox/Chacox.cpp
===================================================================
--- /issm/trunk-jpl-damage/src/c/modules/Chacox/Chacox.cpp	(revision 11424)
+++ /issm/trunk-jpl-damage/src/c/modules/Chacox/Chacox.cpp	(revision 11425)
@@ -191,6 +191,4 @@
 
 
-	#else //ifdef _HAVE_CHACO_
-	return (0);
-	#endif
+	#endif //ifdef _HAVE_CHACO_
 }
Index: /issm/trunk-jpl-damage/src/c/modules/Chacox/input_parse.cpp
===================================================================
--- /issm/trunk-jpl-damage/src/c/modules/Chacox/input_parse.cpp	(revision 11424)
+++ /issm/trunk-jpl-damage/src/c/modules/Chacox/input_parse.cpp	(revision 11425)
@@ -262,6 +262,4 @@
 	return(0);
 
-	#else //#ifdef _HAVE_CHACO_ 
-	return(0);
-	#endif
+	#endif //#ifdef _HAVE_CHACO_ 
 }
Index: /issm/trunk-jpl-damage/src/c/modules/ContourToMeshx/ContourToMeshxt.cpp
===================================================================
--- /issm/trunk-jpl-damage/src/c/modules/ContourToMeshx/ContourToMeshxt.cpp	(revision 11424)
+++ /issm/trunk-jpl-damage/src/c/modules/ContourToMeshx/ContourToMeshxt.cpp	(revision 11425)
@@ -69,5 +69,3 @@
 	}
 
-	return NULL;
-
 }
Index: /issm/trunk-jpl-damage/src/c/modules/ContourToNodesx/ContourToNodesx.cpp
===================================================================
--- /issm/trunk-jpl-damage/src/c/modules/ContourToNodesx/ContourToNodesx.cpp	(revision 11424)
+++ /issm/trunk-jpl-damage/src/c/modules/ContourToNodesx/ContourToNodesx.cpp	(revision 11425)
@@ -36,5 +36,4 @@
 	/*Assign output pointers: */
 	*pflags=flags;
-	
-	return 1;
+
 }
Index: /issm/trunk-jpl-damage/src/c/modules/EnumToStringx/EnumToStringx.cpp
===================================================================
--- /issm/trunk-jpl-damage/src/c/modules/EnumToStringx/EnumToStringx.cpp	(revision 11424)
+++ /issm/trunk-jpl-damage/src/c/modules/EnumToStringx/EnumToStringx.cpp	(revision 11425)
@@ -166,5 +166,4 @@
 		case ThermalSpctemperatureEnum : return "ThermalSpctemperature";
 		case ThermalStabilizationEnum : return "ThermalStabilization";
-		case ThermalIsenthalpyEnum : return "ThermalIsenthalpy";
 		case ThicknessEnum : return "Thickness";
 		case TimesteppingCflCoefficientEnum : return "TimesteppingCflCoefficient";
Index: /issm/trunk-jpl-damage/src/c/modules/InterpFromMesh2dx/InterpFromMesh2dxt.cpp
===================================================================
--- /issm/trunk-jpl-damage/src/c/modules/InterpFromMesh2dx/InterpFromMesh2dxt.cpp	(revision 11424)
+++ /issm/trunk-jpl-damage/src/c/modules/InterpFromMesh2dx/InterpFromMesh2dxt.cpp	(revision 11425)
@@ -126,6 +126,4 @@
 	}
 	if (debug && my_thread==0) printf("\b\b\b\b\b\b\b%5.2lf %%\n",100.0);
-	
-	return NULL;
 
 }
Index: /issm/trunk-jpl-damage/src/c/modules/ModelProcessorx/CreateParameters.cpp
===================================================================
--- /issm/trunk-jpl-damage/src/c/modules/ModelProcessorx/CreateParameters.cpp	(revision 11424)
+++ /issm/trunk-jpl-damage/src/c/modules/ModelProcessorx/CreateParameters.cpp	(revision 11425)
@@ -78,5 +78,4 @@
 	parameters->AddObject(iomodel->CopyConstantObject(TransientIsthermalEnum));
 	parameters->AddObject(iomodel->CopyConstantObject(TransientIsgroundinglineEnum));
-	parameters->AddObject(iomodel->CopyConstantObject(ThermalIsenthalpyEnum));
 	parameters->AddObject(iomodel->CopyConstantObject(MaterialsRheologyLawEnum));
 	parameters->AddObject(iomodel->CopyConstantObject(AutodiffIsautodiffEnum));
Index: /issm/trunk-jpl-damage/src/c/modules/ModelProcessorx/ModelProcessorx.cpp
===================================================================
--- /issm/trunk-jpl-damage/src/c/modules/ModelProcessorx/ModelProcessorx.cpp	(revision 11424)
+++ /issm/trunk-jpl-damage/src/c/modules/ModelProcessorx/ModelProcessorx.cpp	(revision 11425)
@@ -20,5 +20,5 @@
 
 	int   i,analysis_type,dim,verbose;
-	bool  isthermal,isprognostic,isdiagnostic,isgroundingline,isenthalpy;
+	bool  isthermal,isprognostic,isdiagnostic,isgroundingline;
 	
 	/*output: */
@@ -39,5 +39,4 @@
 	iomodel->Constant(&verbose,VerboseEnum);
 	iomodel->Constant(&isthermal,TransientIsthermalEnum);
-	iomodel->Constant(&isenthalpy,ThermalIsenthalpyEnum);
 	iomodel->Constant(&isprognostic,TransientIsprognosticEnum);
 	iomodel->Constant(&isdiagnostic,TransientIsdiagnosticEnum);
@@ -53,11 +52,6 @@
 		if(solution_type==TransientSolutionEnum && analysis_type==ThermalAnalysisEnum && dim==2) continue;
 		if(solution_type==TransientSolutionEnum && analysis_type==MeltingAnalysisEnum && dim==2) continue;
-		if(solution_type==TransientSolutionEnum && analysis_type==EnthalpyAnalysisEnum && dim==2) continue;
 		if(solution_type==TransientSolutionEnum && analysis_type==ThermalAnalysisEnum && isthermal==false) continue;
 		if(solution_type==TransientSolutionEnum && analysis_type==MeltingAnalysisEnum && isthermal==false) continue;
-		if(solution_type==TransientSolutionEnum && analysis_type==EnthalpyAnalysisEnum && isthermal==false) continue;
-		if(solution_type==TransientSolutionEnum && analysis_type==ThermalAnalysisEnum && isenthalpy==true) continue;
-		if(solution_type==TransientSolutionEnum && analysis_type==MeltingAnalysisEnum && isenthalpy==true) continue;
-		if(solution_type==TransientSolutionEnum && analysis_type==EnthalpyAnalysisEnum && isenthalpy==false) continue;
 		if(solution_type==TransientSolutionEnum && analysis_type==PrognosticAnalysisEnum && isprognostic==false && isgroundingline==false) continue;
 		if(solution_type==TransientSolutionEnum && analysis_type==DiagnosticHorizAnalysisEnum && isdiagnostic==false) continue;
Index: /issm/trunk-jpl-damage/src/c/modules/PointCloudFindNeighborsx/PointCloudFindNeighborsx.cpp
===================================================================
--- /issm/trunk-jpl-damage/src/c/modules/PointCloudFindNeighborsx/PointCloudFindNeighborsx.cpp	(revision 11424)
+++ /issm/trunk-jpl-damage/src/c/modules/PointCloudFindNeighborsx/PointCloudFindNeighborsx.cpp	(revision 11425)
@@ -36,5 +36,3 @@
 	/*Assign output pointers: */
 	*pflags=flags;
-
-	return 1;
 }
Index: /issm/trunk-jpl-damage/src/c/modules/PointCloudFindNeighborsx/PointCloudFindNeighborsxt.cpp
===================================================================
--- /issm/trunk-jpl-damage/src/c/modules/PointCloudFindNeighborsx/PointCloudFindNeighborsxt.cpp	(revision 11424)
+++ /issm/trunk-jpl-damage/src/c/modules/PointCloudFindNeighborsx/PointCloudFindNeighborsxt.cpp	(revision 11425)
@@ -74,5 +74,3 @@
 	/*Free ressources:*/
 	xfree((void**)&already);
-	
-	return NULL;
 }
Index: /issm/trunk-jpl-damage/src/c/modules/Scotchx/Scotchx.cpp
===================================================================
--- /issm/trunk-jpl-damage/src/c/modules/Scotchx/Scotchx.cpp	(revision 11424)
+++ /issm/trunk-jpl-damage/src/c/modules/Scotchx/Scotchx.cpp	(revision 11425)
@@ -339,6 +339,4 @@
   return (0);
 
-#else //#ifdef _HAVE_SCOTCH_ 
-  return(0);
-#endif
+#endif //#ifdef _HAVE_SCOTCH_ 
 }
Index: /issm/trunk-jpl-damage/src/c/modules/Shp2Kmlx/Shp2Kmlx.cpp
===================================================================
--- /issm/trunk-jpl-damage/src/c/modules/Shp2Kmlx/Shp2Kmlx.cpp	(revision 11424)
+++ /issm/trunk-jpl-damage/src/c/modules/Shp2Kmlx/Shp2Kmlx.cpp	(revision 11425)
@@ -24,7 +24,5 @@
 					sgn,cm,sp));
 
-	#else //ifdef _HAVE_SHAPELIB_
-	return 0;
-	#endif
+	#endif //ifdef _HAVE_SHAPELIB_
 }
 
@@ -609,7 +607,5 @@
 	return(iret);
 
-	#else //ifdef _HAVE_SHAPELIB_
-	return 0;
-	#endif
+	#endif //ifdef _HAVE_SHAPELIB_
 }
 
Index: /issm/trunk-jpl-damage/src/c/modules/StringToEnumx/StringToEnumx.cpp
===================================================================
--- /issm/trunk-jpl-damage/src/c/modules/StringToEnumx/StringToEnumx.cpp	(revision 11424)
+++ /issm/trunk-jpl-damage/src/c/modules/StringToEnumx/StringToEnumx.cpp	(revision 11425)
@@ -14,448 +14,433 @@
 int  StringToEnumx(const char* name){
 
-   int  stage=1;
+	if (strcmp(name,"AutodiffForward")==0) return AutodiffForwardEnum;
+	else if (strcmp(name,"AutodiffIsautodiff")==0) return AutodiffIsautodiffEnum;
+	else if (strcmp(name,"AutodiffReverse")==0) return AutodiffReverseEnum;
+	else if (strcmp(name,"BalancethicknessSpcthickness")==0) return BalancethicknessSpcthicknessEnum;
+	else if (strcmp(name,"BalancethicknessStabilization")==0) return BalancethicknessStabilizationEnum;
+	else if (strcmp(name,"BalancethicknessThickeningRate")==0) return BalancethicknessThickeningRateEnum;
+	else if (strcmp(name,"BasalforcingsGeothermalflux")==0) return BasalforcingsGeothermalfluxEnum;
+	else if (strcmp(name,"BasalforcingsMeltingRateCorrection")==0) return BasalforcingsMeltingRateCorrectionEnum;
+	else if (strcmp(name,"BasalforcingsMeltingRate")==0) return BasalforcingsMeltingRateEnum;
+	else if (strcmp(name,"Bathymetry")==0) return BathymetryEnum;
+	else if (strcmp(name,"Bed")==0) return BedEnum;
+	else if (strcmp(name,"ConstantsG")==0) return ConstantsGEnum;
+	else if (strcmp(name,"ConstantsReferencetemperature")==0) return ConstantsReferencetemperatureEnum;
+	else if (strcmp(name,"ConstantsYts")==0) return ConstantsYtsEnum;
+	else if (strcmp(name,"DiagnosticAbstol")==0) return DiagnosticAbstolEnum;
+	else if (strcmp(name,"DiagnosticIcefront")==0) return DiagnosticIcefrontEnum;
+	else if (strcmp(name,"DiagnosticMaxiter")==0) return DiagnosticMaxiterEnum;
+	else if (strcmp(name,"DiagnosticNumRequestedOutputs")==0) return DiagnosticNumRequestedOutputsEnum;
+	else if (strcmp(name,"DiagnosticPenaltyFactor")==0) return DiagnosticPenaltyFactorEnum;
+	else if (strcmp(name,"DiagnosticReferential")==0) return DiagnosticReferentialEnum;
+	else if (strcmp(name,"DiagnosticReltol")==0) return DiagnosticReltolEnum;
+	else if (strcmp(name,"DiagnosticRequestedOutputs")==0) return DiagnosticRequestedOutputsEnum;
+	else if (strcmp(name,"DiagnosticRestol")==0) return DiagnosticRestolEnum;
+	else if (strcmp(name,"DiagnosticRiftPenaltyLock")==0) return DiagnosticRiftPenaltyLockEnum;
+	else if (strcmp(name,"DiagnosticRiftPenaltyThreshold")==0) return DiagnosticRiftPenaltyThresholdEnum;
+	else if (strcmp(name,"DiagnosticShelfDampening")==0) return DiagnosticShelfDampeningEnum;
+	else if (strcmp(name,"DiagnosticSpcvx")==0) return DiagnosticSpcvxEnum;
+	else if (strcmp(name,"DiagnosticSpcvy")==0) return DiagnosticSpcvyEnum;
+	else if (strcmp(name,"DiagnosticSpcvz")==0) return DiagnosticSpcvzEnum;
+	else if (strcmp(name,"DiagnosticStokesreconditioning")==0) return DiagnosticStokesreconditioningEnum;
+	else if (strcmp(name,"DiagnosticVertexPairing")==0) return DiagnosticVertexPairingEnum;
+	else if (strcmp(name,"DiagnosticViscosityOvershoot")==0) return DiagnosticViscosityOvershootEnum;
+	else if (strcmp(name,"FlowequationBordermacayeal")==0) return FlowequationBordermacayealEnum;
+	else if (strcmp(name,"FlowequationBorderpattyn")==0) return FlowequationBorderpattynEnum;
+	else if (strcmp(name,"FlowequationBorderstokes")==0) return FlowequationBorderstokesEnum;
+	else if (strcmp(name,"FlowequationElementEquation")==0) return FlowequationElementEquationEnum;
+	else if (strcmp(name,"FlowequationIshutter")==0) return FlowequationIshutterEnum;
+	else if (strcmp(name,"FlowequationIsmacayealpattyn")==0) return FlowequationIsmacayealpattynEnum;
+	else if (strcmp(name,"FlowequationIsstokes")==0) return FlowequationIsstokesEnum;
+	else if (strcmp(name,"FlowequationVertexEquation")==0) return FlowequationVertexEquationEnum;
+	else if (strcmp(name,"FrictionCoefficient")==0) return FrictionCoefficientEnum;
+	else if (strcmp(name,"FrictionP")==0) return FrictionPEnum;
+	else if (strcmp(name,"FrictionQ")==0) return FrictionQEnum;
+	else if (strcmp(name,"GeometryHydrostaticRatio")==0) return GeometryHydrostaticRatioEnum;
+	else if (strcmp(name,"HydrologyCR")==0) return HydrologyCREnum;
+	else if (strcmp(name,"HydrologyKn")==0) return HydrologyKnEnum;
+	else if (strcmp(name,"HydrologyN")==0) return HydrologyNEnum;
+	else if (strcmp(name,"HydrologyP")==0) return HydrologyPEnum;
+	else if (strcmp(name,"HydrologyQ")==0) return HydrologyQEnum;
+	else if (strcmp(name,"HydrologySpcwatercolumn")==0) return HydrologySpcwatercolumnEnum;
+	else if (strcmp(name,"HydrologyStabilization")==0) return HydrologyStabilizationEnum;
+	else if (strcmp(name,"InversionControlParameters")==0) return InversionControlParametersEnum;
+	else if (strcmp(name,"InversionCostFunction")==0) return InversionCostFunctionEnum;
+	else if (strcmp(name,"InversionCostFunctionThreshold")==0) return InversionCostFunctionThresholdEnum;
+	else if (strcmp(name,"InversionCostFunctionsCoefficients")==0) return InversionCostFunctionsCoefficientsEnum;
+	else if (strcmp(name,"InversionCostFunctions")==0) return InversionCostFunctionsEnum;
+	else if (strcmp(name,"InversionGradientOnly")==0) return InversionGradientOnlyEnum;
+	else if (strcmp(name,"InversionGradientScaling")==0) return InversionGradientScalingEnum;
+	else if (strcmp(name,"InversionIscontrol")==0) return InversionIscontrolEnum;
+	else if (strcmp(name,"InversionTao")==0) return InversionTaoEnum;
+	else if (strcmp(name,"InversionMaxParameters")==0) return InversionMaxParametersEnum;
+	else if (strcmp(name,"InversionMaxiterPerStep")==0) return InversionMaxiterPerStepEnum;
+	else if (strcmp(name,"InversionMinParameters")==0) return InversionMinParametersEnum;
+	else if (strcmp(name,"InversionNsteps")==0) return InversionNstepsEnum;
+	else if (strcmp(name,"InversionNumControlParameters")==0) return InversionNumControlParametersEnum;
+	else if (strcmp(name,"InversionNumCostFunctions")==0) return InversionNumCostFunctionsEnum;
+	else if (strcmp(name,"InversionStepThreshold")==0) return InversionStepThresholdEnum;
+	else if (strcmp(name,"InversionThicknessObs")==0) return InversionThicknessObsEnum;
+	else if (strcmp(name,"InversionVelObs")==0) return InversionVelObsEnum;
+	else if (strcmp(name,"InversionVxObs")==0) return InversionVxObsEnum;
+	else if (strcmp(name,"InversionVyObs")==0) return InversionVyObsEnum;
+	else if (strcmp(name,"InversionVzObs")==0) return InversionVzObsEnum;
+	else if (strcmp(name,"MaskElementonfloatingice")==0) return MaskElementonfloatingiceEnum;
+	else if (strcmp(name,"MaskElementongroundedice")==0) return MaskElementongroundediceEnum;
+	else if (strcmp(name,"MaskElementonwater")==0) return MaskElementonwaterEnum;
+	else if (strcmp(name,"MaskVertexonfloatingice")==0) return MaskVertexonfloatingiceEnum;
+	else if (strcmp(name,"MaskVertexongroundedice")==0) return MaskVertexongroundediceEnum;
+	else if (strcmp(name,"MaskVertexonwater")==0) return MaskVertexonwaterEnum;
+	else if (strcmp(name,"MaterialsBeta")==0) return MaterialsBetaEnum;
+	else if (strcmp(name,"MaterialsHeatcapacity")==0) return MaterialsHeatcapacityEnum;
+	else if (strcmp(name,"MaterialsLatentheat")==0) return MaterialsLatentheatEnum;
+	else if (strcmp(name,"MaterialsMeltingpoint")==0) return MaterialsMeltingpointEnum;
+	else if (strcmp(name,"MaterialsMixedLayerCapacity")==0) return MaterialsMixedLayerCapacityEnum;
+	else if (strcmp(name,"MaterialsRheologyB")==0) return MaterialsRheologyBEnum;
+	else if (strcmp(name,"MaterialsRheologyBbar")==0) return MaterialsRheologyBbarEnum;
+	else if (strcmp(name,"MaterialsRheologyLaw")==0) return MaterialsRheologyLawEnum;
+	else if (strcmp(name,"MaterialsRheologyN")==0) return MaterialsRheologyNEnum;
+	else if (strcmp(name,"MaterialsRheologyZ")==0) return MaterialsRheologyZEnum;
+	else if (strcmp(name,"MaterialsRheologyZbar")==0) return MaterialsRheologyZbarEnum;
+	else if (strcmp(name,"MaterialsRhoIce")==0) return MaterialsRhoIceEnum;
+	else if (strcmp(name,"MaterialsRhoWater")==0) return MaterialsRhoWaterEnum;
+	else if (strcmp(name,"MaterialsMuWater")==0) return MaterialsMuWaterEnum;
+	else if (strcmp(name,"MaterialsThermalExchangeVelocity")==0) return MaterialsThermalExchangeVelocityEnum;
+	else if (strcmp(name,"MaterialsThermalconductivity")==0) return MaterialsThermalconductivityEnum;
+	else if (strcmp(name,"MeshAverageVertexConnectivity")==0) return MeshAverageVertexConnectivityEnum;
+	else if (strcmp(name,"MeshDimension")==0) return MeshDimensionEnum;
+	else if (strcmp(name,"MeshEdges")==0) return MeshEdgesEnum;
+	else if (strcmp(name,"MeshElementconnectivity")==0) return MeshElementconnectivityEnum;
+	else if (strcmp(name,"MeshElementonbed")==0) return MeshElementonbedEnum;
+	else if (strcmp(name,"MeshElementonsurface")==0) return MeshElementonsurfaceEnum;
+	else if (strcmp(name,"MeshElements2d")==0) return MeshElements2dEnum;
+	else if (strcmp(name,"MeshElements")==0) return MeshElementsEnum;
+	else if (strcmp(name,"MeshLowerelements")==0) return MeshLowerelementsEnum;
+	else if (strcmp(name,"MeshNumberofedges")==0) return MeshNumberofedgesEnum;
+	else if (strcmp(name,"MeshNumberofelements2d")==0) return MeshNumberofelements2dEnum;
+	else if (strcmp(name,"MeshNumberofelements")==0) return MeshNumberofelementsEnum;
+	else if (strcmp(name,"MeshNumberoflayers")==0) return MeshNumberoflayersEnum;
+	else if (strcmp(name,"MeshNumberofvertices2d")==0) return MeshNumberofvertices2dEnum;
+	else if (strcmp(name,"MeshNumberofvertices")==0) return MeshNumberofverticesEnum;
+	else if (strcmp(name,"MeshUpperelements")==0) return MeshUpperelementsEnum;
+	else if (strcmp(name,"MeshVertexonbed")==0) return MeshVertexonbedEnum;
+	else if (strcmp(name,"MeshVertexonsurface")==0) return MeshVertexonsurfaceEnum;
+	else if (strcmp(name,"MeshX")==0) return MeshXEnum;
+	else if (strcmp(name,"MeshY")==0) return MeshYEnum;
+	else if (strcmp(name,"MeshZ")==0) return MeshZEnum;
+	else if (strcmp(name,"MiscellaneousName")==0) return MiscellaneousNameEnum;
+	else if (strcmp(name,"PrognosticHydrostaticAdjustment")==0) return PrognosticHydrostaticAdjustmentEnum;
+	else if (strcmp(name,"PrognosticMinThickness")==0) return PrognosticMinThicknessEnum;
+	else if (strcmp(name,"PrognosticPenaltyFactor")==0) return PrognosticPenaltyFactorEnum;
+	else if (strcmp(name,"PrognosticSpcthickness")==0) return PrognosticSpcthicknessEnum;
+	else if (strcmp(name,"PrognosticStabilization")==0) return PrognosticStabilizationEnum;
+	else if (strcmp(name,"PrognosticVertexPairing")==0) return PrognosticVertexPairingEnum;
+	else if (strcmp(name,"QmuIsdakota")==0) return QmuIsdakotaEnum;
+	else if (strcmp(name,"QmuMassFluxSegments")==0) return QmuMassFluxSegmentsEnum;
+	else if (strcmp(name,"QmuNumberofpartitions")==0) return QmuNumberofpartitionsEnum;
+	else if (strcmp(name,"QmuNumberofresponses")==0) return QmuNumberofresponsesEnum;
+	else if (strcmp(name,"QmuPartition")==0) return QmuPartitionEnum;
+	else if (strcmp(name,"QmuResponsedescriptors")==0) return QmuResponsedescriptorsEnum;
+	else if (strcmp(name,"QmuVariabledescriptors")==0) return QmuVariabledescriptorsEnum;
+	else if (strcmp(name,"RiftsNumrifts")==0) return RiftsNumriftsEnum;
+	else if (strcmp(name,"RiftsRiftstruct")==0) return RiftsRiftstructEnum;
+	else if (strcmp(name,"SettingsIoGather")==0) return SettingsIoGatherEnum;
+	else if (strcmp(name,"SettingsLowmem")==0) return SettingsLowmemEnum;
+	else if (strcmp(name,"SettingsOutputFrequency")==0) return SettingsOutputFrequencyEnum;
+	else if (strcmp(name,"SettingsResultsAsPatches")==0) return SettingsResultsAsPatchesEnum;
+	else if (strcmp(name,"SettingsWaitonlock")==0) return SettingsWaitonlockEnum;
+	else if (strcmp(name,"SteadystateMaxiter")==0) return SteadystateMaxiterEnum;
+	else if (strcmp(name,"SteadystateNumRequestedOutputs")==0) return SteadystateNumRequestedOutputsEnum;
+	else if (strcmp(name,"SteadystateReltol")==0) return SteadystateReltolEnum;
+	else if (strcmp(name,"SteadystateRequestedOutputs")==0) return SteadystateRequestedOutputsEnum;
+	else if (strcmp(name,"Surface")==0) return SurfaceEnum;
+	else if (strcmp(name,"SurfaceforcingsAblationRate")==0) return SurfaceforcingsAblationRateEnum;
+	else if (strcmp(name,"SurfaceforcingsAccumulationRate")==0) return SurfaceforcingsAccumulationRateEnum;
+	else if (strcmp(name,"SurfaceforcingsMassBalance")==0) return SurfaceforcingsMassBalanceEnum;
+	else if (strcmp(name,"ThermalMaxiter")==0) return ThermalMaxiterEnum;
+	else if (strcmp(name,"ThermalPenaltyFactor")==0) return ThermalPenaltyFactorEnum;
+	else if (strcmp(name,"ThermalPenaltyLock")==0) return ThermalPenaltyLockEnum;
+	else if (strcmp(name,"ThermalPenaltyThreshold")==0) return ThermalPenaltyThresholdEnum;
+	else if (strcmp(name,"ThermalSpctemperature")==0) return ThermalSpctemperatureEnum;
+	else if (strcmp(name,"ThermalStabilization")==0) return ThermalStabilizationEnum;
+	else if (strcmp(name,"Thickness")==0) return ThicknessEnum;
+	else if (strcmp(name,"TimesteppingCflCoefficient")==0) return TimesteppingCflCoefficientEnum;
+	else if (strcmp(name,"TimesteppingFinalTime")==0) return TimesteppingFinalTimeEnum;
+	else if (strcmp(name,"TimesteppingTimeAdapt")==0) return TimesteppingTimeAdaptEnum;
+	else if (strcmp(name,"TimesteppingTimeStep")==0) return TimesteppingTimeStepEnum;
+	else if (strcmp(name,"TransientIsdiagnostic")==0) return TransientIsdiagnosticEnum;
+	else if (strcmp(name,"TransientIsgroundingline")==0) return TransientIsgroundinglineEnum;
+	else if (strcmp(name,"TransientIsprognostic")==0) return TransientIsprognosticEnum;
+	else if (strcmp(name,"TransientIsthermal")==0) return TransientIsthermalEnum;
+	else if (strcmp(name,"TransientNumRequestedOutputs")==0) return TransientNumRequestedOutputsEnum;
+	else if (strcmp(name,"TransientRequestedOutputs")==0) return TransientRequestedOutputsEnum;
+	else if (strcmp(name,"SolutionType")==0) return SolutionTypeEnum;
+	else if (strcmp(name,"AnalysisType")==0) return AnalysisTypeEnum;
+	else if (strcmp(name,"ConfigurationType")==0) return ConfigurationTypeEnum;
+	else if (strcmp(name,"AdjointBalancethicknessAnalysis")==0) return AdjointBalancethicknessAnalysisEnum;
+	else if (strcmp(name,"AdjointHorizAnalysis")==0) return AdjointHorizAnalysisEnum;
+	else if (strcmp(name,"AdjointSolution")==0) return AdjointSolutionEnum;
+	else if (strcmp(name,"AnalysisCounter")==0) return AnalysisCounterEnum;
+	else if (strcmp(name,"BalancethicknessAnalysis")==0) return BalancethicknessAnalysisEnum;
+	else if (strcmp(name,"BalancethicknessSolution")==0) return BalancethicknessSolutionEnum;
+	else if (strcmp(name,"BedSlopeAnalysis")==0) return BedSlopeAnalysisEnum;
+	else if (strcmp(name,"BedSlopeSolution")==0) return BedSlopeSolutionEnum;
+	else if (strcmp(name,"BedSlopeXAnalysis")==0) return BedSlopeXAnalysisEnum;
+	else if (strcmp(name,"BedSlopeYAnalysis")==0) return BedSlopeYAnalysisEnum;
+	else if (strcmp(name,"DiagnosticHorizAnalysis")==0) return DiagnosticHorizAnalysisEnum;
+	else if (strcmp(name,"DiagnosticHutterAnalysis")==0) return DiagnosticHutterAnalysisEnum;
+	else if (strcmp(name,"DiagnosticSolution")==0) return DiagnosticSolutionEnum;
+	else if (strcmp(name,"DiagnosticVertAnalysis")==0) return DiagnosticVertAnalysisEnum;
+	else if (strcmp(name,"EnthalpyAnalysis")==0) return EnthalpyAnalysisEnum;
+	else if (strcmp(name,"EnthalpySolution")==0) return EnthalpySolutionEnum;
+	else if (strcmp(name,"FlaimAnalysis")==0) return FlaimAnalysisEnum;
+	else if (strcmp(name,"FlaimSolution")==0) return FlaimSolutionEnum;
+	else if (strcmp(name,"HydrologyAnalysis")==0) return HydrologyAnalysisEnum;
+	else if (strcmp(name,"HydrologySolution")==0) return HydrologySolutionEnum;
+	else if (strcmp(name,"MeltingAnalysis")==0) return MeltingAnalysisEnum;
+	else if (strcmp(name,"NoneAnalysis")==0) return NoneAnalysisEnum;
+	else if (strcmp(name,"PrognosticAnalysis")==0) return PrognosticAnalysisEnum;
+	else if (strcmp(name,"PrognosticSolution")==0) return PrognosticSolutionEnum;
+	else if (strcmp(name,"SteadystateSolution")==0) return SteadystateSolutionEnum;
+	else if (strcmp(name,"SurfaceSlopeAnalysis")==0) return SurfaceSlopeAnalysisEnum;
+	else if (strcmp(name,"SurfaceSlopeSolution")==0) return SurfaceSlopeSolutionEnum;
+	else if (strcmp(name,"SurfaceSlopeXAnalysis")==0) return SurfaceSlopeXAnalysisEnum;
+	else if (strcmp(name,"SurfaceSlopeYAnalysis")==0) return SurfaceSlopeYAnalysisEnum;
+	else if (strcmp(name,"ThermalAnalysis")==0) return ThermalAnalysisEnum;
+	else if (strcmp(name,"ThermalSolution")==0) return ThermalSolutionEnum;
+	else if (strcmp(name,"TransientSolution")==0) return TransientSolutionEnum;
+	else if (strcmp(name,"Approximation")==0) return ApproximationEnum;
+	else if (strcmp(name,"HutterApproximation")==0) return HutterApproximationEnum;
+	else if (strcmp(name,"MacAyealApproximation")==0) return MacAyealApproximationEnum;
+	else if (strcmp(name,"MacAyealPattynApproximation")==0) return MacAyealPattynApproximationEnum;
+	else if (strcmp(name,"MacAyealStokesApproximation")==0) return MacAyealStokesApproximationEnum;
+	else if (strcmp(name,"NoneApproximation")==0) return NoneApproximationEnum;
+	else if (strcmp(name,"PattynApproximation")==0) return PattynApproximationEnum;
+	else if (strcmp(name,"PattynStokesApproximation")==0) return PattynStokesApproximationEnum;
+	else if (strcmp(name,"StokesApproximation")==0) return StokesApproximationEnum;
+	else if (strcmp(name,"Constraints")==0) return ConstraintsEnum;
+	else if (strcmp(name,"Loads")==0) return LoadsEnum;
+	else if (strcmp(name,"Materials")==0) return MaterialsEnum;
+	else if (strcmp(name,"Nodes")==0) return NodesEnum;
+	else if (strcmp(name,"Parameters")==0) return ParametersEnum;
+	else if (strcmp(name,"Vertices")==0) return VerticesEnum;
+	else if (strcmp(name,"Results")==0) return ResultsEnum;
+	else if (strcmp(name,"BoolInput")==0) return BoolInputEnum;
+	else if (strcmp(name,"BoolParam")==0) return BoolParamEnum;
+	else if (strcmp(name,"ControlInput")==0) return ControlInputEnum;
+	else if (strcmp(name,"DatasetInput")==0) return DatasetInputEnum;
+	else if (strcmp(name,"DofIndexing")==0) return DofIndexingEnum;
+	else if (strcmp(name,"DoubleInput")==0) return DoubleInputEnum;
+	else if (strcmp(name,"DoubleMatArrayParam")==0) return DoubleMatArrayParamEnum;
+	else if (strcmp(name,"DoubleMatParam")==0) return DoubleMatParamEnum;
+	else if (strcmp(name,"DoubleParam")==0) return DoubleParamEnum;
+	else if (strcmp(name,"DoubleVecParam")==0) return DoubleVecParamEnum;
+	else if (strcmp(name,"Element")==0) return ElementEnum;
+	else if (strcmp(name,"ElementResult")==0) return ElementResultEnum;
+	else if (strcmp(name,"ExternalResult")==0) return ExternalResultEnum;
+	else if (strcmp(name,"FileParam")==0) return FileParamEnum;
+	else if (strcmp(name,"Hook")==0) return HookEnum;
+	else if (strcmp(name,"Icefront")==0) return IcefrontEnum;
+	else if (strcmp(name,"Input")==0) return InputEnum;
+	else if (strcmp(name,"IntInput")==0) return IntInputEnum;
+	else if (strcmp(name,"IntParam")==0) return IntParamEnum;
+	else if (strcmp(name,"IntVecParam")==0) return IntVecParamEnum;
+	else if (strcmp(name,"MacAyeal2dIceFront")==0) return MacAyeal2dIceFrontEnum;
+	else if (strcmp(name,"MacAyeal3dIceFront")==0) return MacAyeal3dIceFrontEnum;
+	else if (strcmp(name,"Matice")==0) return MaticeEnum;
+	else if (strcmp(name,"Matpar")==0) return MatparEnum;
+	else if (strcmp(name,"Node")==0) return NodeEnum;
+	else if (strcmp(name,"Numericalflux")==0) return NumericalfluxEnum;
+	else if (strcmp(name,"Param")==0) return ParamEnum;
+	else if (strcmp(name,"PattynIceFront")==0) return PattynIceFrontEnum;
+	else if (strcmp(name,"Pengrid")==0) return PengridEnum;
+	else if (strcmp(name,"Penpair")==0) return PenpairEnum;
+	else if (strcmp(name,"Penta")==0) return PentaEnum;
+	else if (strcmp(name,"PentaP1Input")==0) return PentaP1InputEnum;
+	else if (strcmp(name,"PetscMatParam")==0) return PetscMatParamEnum;
+	else if (strcmp(name,"PetscVecParam")==0) return PetscVecParamEnum;
+	else if (strcmp(name,"Riftfront")==0) return RiftfrontEnum;
+	else if (strcmp(name,"Segment")==0) return SegmentEnum;
+	else if (strcmp(name,"SegmentRiftfront")==0) return SegmentRiftfrontEnum;
+	else if (strcmp(name,"SpcDynamic")==0) return SpcDynamicEnum;
+	else if (strcmp(name,"SpcStatic")==0) return SpcStaticEnum;
+	else if (strcmp(name,"SpcTransient")==0) return SpcTransientEnum;
+	else if (strcmp(name,"StokesIceFront")==0) return StokesIceFrontEnum;
+	else if (strcmp(name,"StringArrayParam")==0) return StringArrayParamEnum;
+	else if (strcmp(name,"StringParam")==0) return StringParamEnum;
+	else if (strcmp(name,"Tria")==0) return TriaEnum;
+	else if (strcmp(name,"TriaP1Input")==0) return TriaP1InputEnum;
+	else if (strcmp(name,"Vertex")==0) return VertexEnum;
+	else if (strcmp(name,"Air")==0) return AirEnum;
+	else if (strcmp(name,"Ice")==0) return IceEnum;
+	else if (strcmp(name,"Melange")==0) return MelangeEnum;
+	else if (strcmp(name,"Water")==0) return WaterEnum;
+	else if (strcmp(name,"Closed")==0) return ClosedEnum;
+	else if (strcmp(name,"Free")==0) return FreeEnum;
+	else if (strcmp(name,"Open")==0) return OpenEnum;
+	else if (strcmp(name,"Adjointp")==0) return AdjointpEnum;
+	else if (strcmp(name,"Adjointx")==0) return AdjointxEnum;
+	else if (strcmp(name,"Adjointy")==0) return AdjointyEnum;
+	else if (strcmp(name,"Adjointz")==0) return AdjointzEnum;
+	else if (strcmp(name,"BedSlopeX")==0) return BedSlopeXEnum;
+	else if (strcmp(name,"BedSlopeY")==0) return BedSlopeYEnum;
+	else if (strcmp(name,"Boundary")==0) return BoundaryEnum;
+	else if (strcmp(name,"Constant")==0) return ConstantEnum;
+	else if (strcmp(name,"Converged")==0) return ConvergedEnum;
+	else if (strcmp(name,"ExtToIu")==0) return ExtToIuEnum;
+	else if (strcmp(name,"Fill")==0) return FillEnum;
+	else if (strcmp(name,"FractionIncrement")==0) return FractionIncrementEnum;
+	else if (strcmp(name,"Friction")==0) return FrictionEnum;
+	else if (strcmp(name,"GroundinglineMeltingRate")==0) return GroundinglineMeltingRateEnum;
+	else if (strcmp(name,"Internal")==0) return InternalEnum;
+	else if (strcmp(name,"IuToExt")==0) return IuToExtEnum;
+	else if (strcmp(name,"MassFlux")==0) return MassFluxEnum;
+	else if (strcmp(name,"MaxPenetration")==0) return MaxPenetrationEnum;
+	else if (strcmp(name,"MeltingOffset")==0) return MeltingOffsetEnum;
+	else if (strcmp(name,"Misfit")==0) return MisfitEnum;
+	else if (strcmp(name,"NumberNodeToElementConnectivity")==0) return NumberNodeToElementConnectivityEnum;
+	else if (strcmp(name,"Pressure")==0) return PressureEnum;
+	else if (strcmp(name,"PressurePicard")==0) return PressurePicardEnum;
+	else if (strcmp(name,"QmuPressure")==0) return QmuPressureEnum;
+	else if (strcmp(name,"QmuVx")==0) return QmuVxEnum;
+	else if (strcmp(name,"QmuVy")==0) return QmuVyEnum;
+	else if (strcmp(name,"QmuVz")==0) return QmuVzEnum;
+	else if (strcmp(name,"QmuThickness")==0) return QmuThicknessEnum;
+	else if (strcmp(name,"QmuBed")==0) return QmuBedEnum;
+	else if (strcmp(name,"QmuSurface")==0) return QmuSurfaceEnum;
+	else if (strcmp(name,"QmuMelting")==0) return QmuMeltingEnum;
+	else if (strcmp(name,"ResetPenalties")==0) return ResetPenaltiesEnum;
+	else if (strcmp(name,"SegmentOnIceShelf")==0) return SegmentOnIceShelfEnum;
+	else if (strcmp(name,"SurfaceAbsVelMisfit")==0) return SurfaceAbsVelMisfitEnum;
+	else if (strcmp(name,"SurfaceArea")==0) return SurfaceAreaEnum;
+	else if (strcmp(name,"SurfaceAverageVelMisfit")==0) return SurfaceAverageVelMisfitEnum;
+	else if (strcmp(name,"SurfaceLogVelMisfit")==0) return SurfaceLogVelMisfitEnum;
+	else if (strcmp(name,"SurfaceLogVxVyMisfit")==0) return SurfaceLogVxVyMisfitEnum;
+	else if (strcmp(name,"SurfaceRelVelMisfit")==0) return SurfaceRelVelMisfitEnum;
+	else if (strcmp(name,"SurfaceSlopeX")==0) return SurfaceSlopeXEnum;
+	else if (strcmp(name,"SurfaceSlopeY")==0) return SurfaceSlopeYEnum;
+	else if (strcmp(name,"Temperature")==0) return TemperatureEnum;
+	else if (strcmp(name,"TemperatureOld")==0) return TemperatureOldEnum;
+	else if (strcmp(name,"TemperaturePicard")==0) return TemperaturePicardEnum;
+	else if (strcmp(name,"ThicknessAbsMisfit")==0) return ThicknessAbsMisfitEnum;
+	else if (strcmp(name,"Type")==0) return TypeEnum;
+	else if (strcmp(name,"Vel")==0) return VelEnum;
+	else if (strcmp(name,"Velocity")==0) return VelocityEnum;
+	else if (strcmp(name,"VxAverage")==0) return VxAverageEnum;
+	else if (strcmp(name,"Vx")==0) return VxEnum;
+	else if (strcmp(name,"VxPicard")==0) return VxPicardEnum;
+	else if (strcmp(name,"VyAverage")==0) return VyAverageEnum;
+	else if (strcmp(name,"Vy")==0) return VyEnum;
+	else if (strcmp(name,"VyPicard")==0) return VyPicardEnum;
+	else if (strcmp(name,"Vz")==0) return VzEnum;
+	else if (strcmp(name,"VzMacAyeal")==0) return VzMacAyealEnum;
+	else if (strcmp(name,"VzPattyn")==0) return VzPattynEnum;
+	else if (strcmp(name,"VzPicard")==0) return VzPicardEnum;
+	else if (strcmp(name,"VzStokes")==0) return VzStokesEnum;
+	else if (strcmp(name,"VxMesh")==0) return VxMeshEnum;
+	else if (strcmp(name,"VyMesh")==0) return VyMeshEnum;
+	else if (strcmp(name,"VzMesh")==0) return VzMeshEnum;
+	else if (strcmp(name,"Enthalpy")==0) return EnthalpyEnum;
+	else if (strcmp(name,"EnthalpyPicard")==0) return EnthalpyPicardEnum;
+	else if (strcmp(name,"ThicknessAbsGradient")==0) return ThicknessAbsGradientEnum;
+	else if (strcmp(name,"StepResponses")==0) return StepResponsesEnum;
+	else if (strcmp(name,"IntMatParam")==0) return IntMatParamEnum;
+	else if (strcmp(name,"RheologyBbarAbsGradient")==0) return RheologyBbarAbsGradientEnum;
+	else if (strcmp(name,"DragCoefficientAbsGradient")==0) return DragCoefficientAbsGradientEnum;
+	else if (strcmp(name,"TransientInput")==0) return TransientInputEnum;
+	else if (strcmp(name,"Outputfilename")==0) return OutputfilenameEnum;
+	else if (strcmp(name,"Waterfraction")==0) return WaterfractionEnum;
+	else if (strcmp(name,"Watercolumn")==0) return WatercolumnEnum;
+	else if (strcmp(name,"BasalFriction")==0) return BasalFrictionEnum;
+	else if (strcmp(name,"ViscousHeating")==0) return ViscousHeatingEnum;
+	else if (strcmp(name,"QmuTemperature")==0) return QmuTemperatureEnum;
+	else if (strcmp(name,"HydrologyWaterVx")==0) return HydrologyWaterVxEnum;
+	else if (strcmp(name,"HydrologyWaterVy")==0) return HydrologyWaterVyEnum;
+	else if (strcmp(name,"StressTensor")==0) return StressTensorEnum;
+	else if (strcmp(name,"StressTensorxx")==0) return StressTensorxxEnum;
+	else if (strcmp(name,"StressTensorxy")==0) return StressTensorxyEnum;
+	else if (strcmp(name,"StressTensorxz")==0) return StressTensorxzEnum;
+	else if (strcmp(name,"StressTensoryy")==0) return StressTensoryyEnum;
+	else if (strcmp(name,"StressTensoryz")==0) return StressTensoryzEnum;
+	else if (strcmp(name,"StressTensorzz")==0) return StressTensorzzEnum;
+	else if (strcmp(name,"IceVolume")==0) return IceVolumeEnum;
+	else if (strcmp(name,"P0")==0) return P0Enum;
+	else if (strcmp(name,"P1")==0) return P1Enum;
+	else if (strcmp(name,"P1DG")==0) return P1DGEnum;
+	else if (strcmp(name,"BoolElementResult")==0) return BoolElementResultEnum;
+	else if (strcmp(name,"BoolExternalResult")==0) return BoolExternalResultEnum;
+	else if (strcmp(name,"DoubleElementResult")==0) return DoubleElementResultEnum;
+	else if (strcmp(name,"DoubleExternalResult")==0) return DoubleExternalResultEnum;
+	else if (strcmp(name,"DoubleMatExternalResult")==0) return DoubleMatExternalResultEnum;
+	else if (strcmp(name,"DoubleVecExternalResult")==0) return DoubleVecExternalResultEnum;
+	else if (strcmp(name,"IntExternalResult")==0) return IntExternalResultEnum;
+	else if (strcmp(name,"J")==0) return JEnum;
+	else if (strcmp(name,"Patch")==0) return PatchEnum;
+	else if (strcmp(name,"PatchNodes")==0) return PatchNodesEnum;
+	else if (strcmp(name,"PatchVertices")==0) return PatchVerticesEnum;
+	else if (strcmp(name,"PentaP1ElementResult")==0) return PentaP1ElementResultEnum;
+	else if (strcmp(name,"PetscVecExternalResult")==0) return PetscVecExternalResultEnum;
+	else if (strcmp(name,"StringExternalResult")==0) return StringExternalResultEnum;
+	else if (strcmp(name,"Time")==0) return TimeEnum;
+	else if (strcmp(name,"TriaP1ElementResult")==0) return TriaP1ElementResultEnum;
+	else if (strcmp(name,"WaterColumnOld")==0) return WaterColumnOldEnum;
+	else if (strcmp(name,"MinVel")==0) return MinVelEnum;
+	else if (strcmp(name,"MaxVel")==0) return MaxVelEnum;
+	else if (strcmp(name,"MinVx")==0) return MinVxEnum;
+	else if (strcmp(name,"MaxVx")==0) return MaxVxEnum;
+	else if (strcmp(name,"MaxAbsVx")==0) return MaxAbsVxEnum;
+	else if (strcmp(name,"MinVy")==0) return MinVyEnum;
+	else if (strcmp(name,"MaxVy")==0) return MaxVyEnum;
+	else if (strcmp(name,"MaxAbsVy")==0) return MaxAbsVyEnum;
+	else if (strcmp(name,"MinVz")==0) return MinVzEnum;
+	else if (strcmp(name,"MaxVz")==0) return MaxVzEnum;
+	else if (strcmp(name,"MaxAbsVz")==0) return MaxAbsVzEnum;
+	else if (strcmp(name,"Relative")==0) return RelativeEnum;
+	else if (strcmp(name,"Absolute")==0) return AbsoluteEnum;
+	else if (strcmp(name,"Incremental")==0) return IncrementalEnum;
+	else if (strcmp(name,"AgressiveMigration")==0) return AgressiveMigrationEnum;
+	else if (strcmp(name,"None")==0) return NoneEnum;
+	else if (strcmp(name,"SoftMigration")==0) return SoftMigrationEnum;
+	else if (strcmp(name,"StokesSolver")==0) return StokesSolverEnum;
+	else if (strcmp(name,"Adjoint")==0) return AdjointEnum;
+	else if (strcmp(name,"Colinear")==0) return ColinearEnum;
+	else if (strcmp(name,"ControlSteady")==0) return ControlSteadyEnum;
+	else if (strcmp(name,"Fset")==0) return FsetEnum;
+	else if (strcmp(name,"Gradient1")==0) return Gradient1Enum;
+	else if (strcmp(name,"Gradient2")==0) return Gradient2Enum;
+	else if (strcmp(name,"Gradient3")==0) return Gradient3Enum;
+	else if (strcmp(name,"Gradient")==0) return GradientEnum;
+	else if (strcmp(name,"GroundinglineMigration")==0) return GroundinglineMigrationEnum;
+	else if (strcmp(name,"Gset")==0) return GsetEnum;
+	else if (strcmp(name,"Index")==0) return IndexEnum;
+	else if (strcmp(name,"Indexed")==0) return IndexedEnum;
+	else if (strcmp(name,"Intersect")==0) return IntersectEnum;
+	else if (strcmp(name,"Nodal")==0) return NodalEnum;
+	else if (strcmp(name,"OldGradient")==0) return OldGradientEnum;
+	else if (strcmp(name,"OutputFilePointer")==0) return OutputFilePointerEnum;
+	else if (strcmp(name,"PetscOptionsAnalyses")==0) return PetscOptionsAnalysesEnum;
+	else if (strcmp(name,"PetscOptionsStrings")==0) return PetscOptionsStringsEnum;
+	else if (strcmp(name,"QmuErrName")==0) return QmuErrNameEnum;
+	else if (strcmp(name,"QmuInName")==0) return QmuInNameEnum;
+	else if (strcmp(name,"QmuOutName")==0) return QmuOutNameEnum;
+	else if (strcmp(name,"Regular")==0) return RegularEnum;
+	else if (strcmp(name,"Scaled")==0) return ScaledEnum;
+	else if (strcmp(name,"Separate")==0) return SeparateEnum;
+	else if (strcmp(name,"Sset")==0) return SsetEnum;
+	else if (strcmp(name,"Verbose")==0) return VerboseEnum;
+	else if (strcmp(name,"TriangleInterp")==0) return TriangleInterpEnum;
+	else if (strcmp(name,"BilinearInterp")==0) return BilinearInterpEnum;
+	else if (strcmp(name,"NearestInterp")==0) return NearestInterpEnum;
+	else if (strcmp(name,"XY")==0) return XYEnum;
+	else if (strcmp(name,"XYZP")==0) return XYZPEnum;
+	else if (strcmp(name,"Option")==0) return OptionEnum;
+	else if (strcmp(name,"OptionCell")==0) return OptionCellEnum;
+	else if (strcmp(name,"OptionChar")==0) return OptionCharEnum;
+	else if (strcmp(name,"OptionStruct")==0) return OptionStructEnum;
+	else if (strcmp(name,"OptionDouble")==0) return OptionDoubleEnum;
+	else if (strcmp(name,"OptionLogical")==0) return OptionLogicalEnum;
+	else if (strcmp(name,"Paterson")==0) return PatersonEnum;
+	else if (strcmp(name,"Arrhenius")==0) return ArrheniusEnum;
+	else _error_("Enum %s not found",name);
 
-   if(stage==1){
-	      if (strcmp(name,"AutodiffForward")==0) return AutodiffForwardEnum;
-	      else if (strcmp(name,"AutodiffIsautodiff")==0) return AutodiffIsautodiffEnum;
-	      else if (strcmp(name,"AutodiffReverse")==0) return AutodiffReverseEnum;
-	      else if (strcmp(name,"BalancethicknessSpcthickness")==0) return BalancethicknessSpcthicknessEnum;
-	      else if (strcmp(name,"BalancethicknessStabilization")==0) return BalancethicknessStabilizationEnum;
-	      else if (strcmp(name,"BalancethicknessThickeningRate")==0) return BalancethicknessThickeningRateEnum;
-	      else if (strcmp(name,"BasalforcingsGeothermalflux")==0) return BasalforcingsGeothermalfluxEnum;
-	      else if (strcmp(name,"BasalforcingsMeltingRateCorrection")==0) return BasalforcingsMeltingRateCorrectionEnum;
-	      else if (strcmp(name,"BasalforcingsMeltingRate")==0) return BasalforcingsMeltingRateEnum;
-	      else if (strcmp(name,"Bathymetry")==0) return BathymetryEnum;
-	      else if (strcmp(name,"Bed")==0) return BedEnum;
-	      else if (strcmp(name,"ConstantsG")==0) return ConstantsGEnum;
-	      else if (strcmp(name,"ConstantsReferencetemperature")==0) return ConstantsReferencetemperatureEnum;
-	      else if (strcmp(name,"ConstantsYts")==0) return ConstantsYtsEnum;
-	      else if (strcmp(name,"DiagnosticAbstol")==0) return DiagnosticAbstolEnum;
-	      else if (strcmp(name,"DiagnosticIcefront")==0) return DiagnosticIcefrontEnum;
-	      else if (strcmp(name,"DiagnosticMaxiter")==0) return DiagnosticMaxiterEnum;
-	      else if (strcmp(name,"DiagnosticNumRequestedOutputs")==0) return DiagnosticNumRequestedOutputsEnum;
-	      else if (strcmp(name,"DiagnosticPenaltyFactor")==0) return DiagnosticPenaltyFactorEnum;
-	      else if (strcmp(name,"DiagnosticReferential")==0) return DiagnosticReferentialEnum;
-	      else if (strcmp(name,"DiagnosticReltol")==0) return DiagnosticReltolEnum;
-	      else if (strcmp(name,"DiagnosticRequestedOutputs")==0) return DiagnosticRequestedOutputsEnum;
-	      else if (strcmp(name,"DiagnosticRestol")==0) return DiagnosticRestolEnum;
-	      else if (strcmp(name,"DiagnosticRiftPenaltyLock")==0) return DiagnosticRiftPenaltyLockEnum;
-	      else if (strcmp(name,"DiagnosticRiftPenaltyThreshold")==0) return DiagnosticRiftPenaltyThresholdEnum;
-	      else if (strcmp(name,"DiagnosticShelfDampening")==0) return DiagnosticShelfDampeningEnum;
-	      else if (strcmp(name,"DiagnosticSpcvx")==0) return DiagnosticSpcvxEnum;
-	      else if (strcmp(name,"DiagnosticSpcvy")==0) return DiagnosticSpcvyEnum;
-	      else if (strcmp(name,"DiagnosticSpcvz")==0) return DiagnosticSpcvzEnum;
-	      else if (strcmp(name,"DiagnosticStokesreconditioning")==0) return DiagnosticStokesreconditioningEnum;
-	      else if (strcmp(name,"DiagnosticVertexPairing")==0) return DiagnosticVertexPairingEnum;
-	      else if (strcmp(name,"DiagnosticViscosityOvershoot")==0) return DiagnosticViscosityOvershootEnum;
-	      else if (strcmp(name,"FlowequationBordermacayeal")==0) return FlowequationBordermacayealEnum;
-	      else if (strcmp(name,"FlowequationBorderpattyn")==0) return FlowequationBorderpattynEnum;
-	      else if (strcmp(name,"FlowequationBorderstokes")==0) return FlowequationBorderstokesEnum;
-	      else if (strcmp(name,"FlowequationElementEquation")==0) return FlowequationElementEquationEnum;
-	      else if (strcmp(name,"FlowequationIshutter")==0) return FlowequationIshutterEnum;
-	      else if (strcmp(name,"FlowequationIsmacayealpattyn")==0) return FlowequationIsmacayealpattynEnum;
-	      else if (strcmp(name,"FlowequationIsstokes")==0) return FlowequationIsstokesEnum;
-	      else if (strcmp(name,"FlowequationVertexEquation")==0) return FlowequationVertexEquationEnum;
-	      else if (strcmp(name,"FrictionCoefficient")==0) return FrictionCoefficientEnum;
-	      else if (strcmp(name,"FrictionP")==0) return FrictionPEnum;
-	      else if (strcmp(name,"FrictionQ")==0) return FrictionQEnum;
-	      else if (strcmp(name,"GeometryHydrostaticRatio")==0) return GeometryHydrostaticRatioEnum;
-	      else if (strcmp(name,"HydrologyCR")==0) return HydrologyCREnum;
-	      else if (strcmp(name,"HydrologyKn")==0) return HydrologyKnEnum;
-	      else if (strcmp(name,"HydrologyN")==0) return HydrologyNEnum;
-	      else if (strcmp(name,"HydrologyP")==0) return HydrologyPEnum;
-	      else if (strcmp(name,"HydrologyQ")==0) return HydrologyQEnum;
-	      else if (strcmp(name,"HydrologySpcwatercolumn")==0) return HydrologySpcwatercolumnEnum;
-	      else if (strcmp(name,"HydrologyStabilization")==0) return HydrologyStabilizationEnum;
-	      else if (strcmp(name,"InversionControlParameters")==0) return InversionControlParametersEnum;
-	      else if (strcmp(name,"InversionCostFunction")==0) return InversionCostFunctionEnum;
-	      else if (strcmp(name,"InversionCostFunctionThreshold")==0) return InversionCostFunctionThresholdEnum;
-	      else if (strcmp(name,"InversionCostFunctionsCoefficients")==0) return InversionCostFunctionsCoefficientsEnum;
-	      else if (strcmp(name,"InversionCostFunctions")==0) return InversionCostFunctionsEnum;
-	      else if (strcmp(name,"InversionGradientOnly")==0) return InversionGradientOnlyEnum;
-	      else if (strcmp(name,"InversionGradientScaling")==0) return InversionGradientScalingEnum;
-	      else if (strcmp(name,"InversionIscontrol")==0) return InversionIscontrolEnum;
-	      else if (strcmp(name,"InversionTao")==0) return InversionTaoEnum;
-	      else if (strcmp(name,"InversionMaxParameters")==0) return InversionMaxParametersEnum;
-	      else if (strcmp(name,"InversionMaxiterPerStep")==0) return InversionMaxiterPerStepEnum;
-	      else if (strcmp(name,"InversionMinParameters")==0) return InversionMinParametersEnum;
-	      else if (strcmp(name,"InversionNsteps")==0) return InversionNstepsEnum;
-	      else if (strcmp(name,"InversionNumControlParameters")==0) return InversionNumControlParametersEnum;
-	      else if (strcmp(name,"InversionNumCostFunctions")==0) return InversionNumCostFunctionsEnum;
-	      else if (strcmp(name,"InversionStepThreshold")==0) return InversionStepThresholdEnum;
-	      else if (strcmp(name,"InversionThicknessObs")==0) return InversionThicknessObsEnum;
-	      else if (strcmp(name,"InversionVelObs")==0) return InversionVelObsEnum;
-	      else if (strcmp(name,"InversionVxObs")==0) return InversionVxObsEnum;
-	      else if (strcmp(name,"InversionVyObs")==0) return InversionVyObsEnum;
-	      else if (strcmp(name,"InversionVzObs")==0) return InversionVzObsEnum;
-	      else if (strcmp(name,"MaskElementonfloatingice")==0) return MaskElementonfloatingiceEnum;
-	      else if (strcmp(name,"MaskElementongroundedice")==0) return MaskElementongroundediceEnum;
-	      else if (strcmp(name,"MaskElementonwater")==0) return MaskElementonwaterEnum;
-	      else if (strcmp(name,"MaskVertexonfloatingice")==0) return MaskVertexonfloatingiceEnum;
-	      else if (strcmp(name,"MaskVertexongroundedice")==0) return MaskVertexongroundediceEnum;
-	      else if (strcmp(name,"MaskVertexonwater")==0) return MaskVertexonwaterEnum;
-	      else if (strcmp(name,"MaterialsBeta")==0) return MaterialsBetaEnum;
-	      else if (strcmp(name,"MaterialsHeatcapacity")==0) return MaterialsHeatcapacityEnum;
-	      else if (strcmp(name,"MaterialsLatentheat")==0) return MaterialsLatentheatEnum;
-	      else if (strcmp(name,"MaterialsMeltingpoint")==0) return MaterialsMeltingpointEnum;
-	      else if (strcmp(name,"MaterialsMixedLayerCapacity")==0) return MaterialsMixedLayerCapacityEnum;
-	      else if (strcmp(name,"MaterialsRheologyB")==0) return MaterialsRheologyBEnum;
-	      else if (strcmp(name,"MaterialsRheologyBbar")==0) return MaterialsRheologyBbarEnum;
-	      else if (strcmp(name,"MaterialsRheologyLaw")==0) return MaterialsRheologyLawEnum;
-	      else if (strcmp(name,"MaterialsRheologyN")==0) return MaterialsRheologyNEnum;
-	      else if (strcmp(name,"MaterialsRheologyZ")==0) return MaterialsRheologyZEnum;
-	      else if (strcmp(name,"MaterialsRheologyZbar")==0) return MaterialsRheologyZbarEnum;
-	      else if (strcmp(name,"MaterialsRhoIce")==0) return MaterialsRhoIceEnum;
-	      else if (strcmp(name,"MaterialsRhoWater")==0) return MaterialsRhoWaterEnum;
-	      else if (strcmp(name,"MaterialsMuWater")==0) return MaterialsMuWaterEnum;
-	      else if (strcmp(name,"MaterialsThermalExchangeVelocity")==0) return MaterialsThermalExchangeVelocityEnum;
-	      else if (strcmp(name,"MaterialsThermalconductivity")==0) return MaterialsThermalconductivityEnum;
-	      else if (strcmp(name,"MeshAverageVertexConnectivity")==0) return MeshAverageVertexConnectivityEnum;
-	      else if (strcmp(name,"MeshDimension")==0) return MeshDimensionEnum;
-	      else if (strcmp(name,"MeshEdges")==0) return MeshEdgesEnum;
-	      else if (strcmp(name,"MeshElementconnectivity")==0) return MeshElementconnectivityEnum;
-	      else if (strcmp(name,"MeshElementonbed")==0) return MeshElementonbedEnum;
-	      else if (strcmp(name,"MeshElementonsurface")==0) return MeshElementonsurfaceEnum;
-	      else if (strcmp(name,"MeshElements2d")==0) return MeshElements2dEnum;
-	      else if (strcmp(name,"MeshElements")==0) return MeshElementsEnum;
-	      else if (strcmp(name,"MeshLowerelements")==0) return MeshLowerelementsEnum;
-	      else if (strcmp(name,"MeshNumberofedges")==0) return MeshNumberofedgesEnum;
-	      else if (strcmp(name,"MeshNumberofelements2d")==0) return MeshNumberofelements2dEnum;
-	      else if (strcmp(name,"MeshNumberofelements")==0) return MeshNumberofelementsEnum;
-	      else if (strcmp(name,"MeshNumberoflayers")==0) return MeshNumberoflayersEnum;
-	      else if (strcmp(name,"MeshNumberofvertices2d")==0) return MeshNumberofvertices2dEnum;
-	      else if (strcmp(name,"MeshNumberofvertices")==0) return MeshNumberofverticesEnum;
-	      else if (strcmp(name,"MeshUpperelements")==0) return MeshUpperelementsEnum;
-	      else if (strcmp(name,"MeshVertexonbed")==0) return MeshVertexonbedEnum;
-	      else if (strcmp(name,"MeshVertexonsurface")==0) return MeshVertexonsurfaceEnum;
-	      else if (strcmp(name,"MeshX")==0) return MeshXEnum;
-	      else if (strcmp(name,"MeshY")==0) return MeshYEnum;
-	      else if (strcmp(name,"MeshZ")==0) return MeshZEnum;
-	      else if (strcmp(name,"MiscellaneousName")==0) return MiscellaneousNameEnum;
-	      else if (strcmp(name,"PrognosticHydrostaticAdjustment")==0) return PrognosticHydrostaticAdjustmentEnum;
-	      else if (strcmp(name,"PrognosticMinThickness")==0) return PrognosticMinThicknessEnum;
-	      else if (strcmp(name,"PrognosticPenaltyFactor")==0) return PrognosticPenaltyFactorEnum;
-	      else if (strcmp(name,"PrognosticSpcthickness")==0) return PrognosticSpcthicknessEnum;
-         else stage=2;
-   }
-   if(stage==2){
-	      if (strcmp(name,"PrognosticStabilization")==0) return PrognosticStabilizationEnum;
-	      else if (strcmp(name,"PrognosticVertexPairing")==0) return PrognosticVertexPairingEnum;
-	      else if (strcmp(name,"QmuIsdakota")==0) return QmuIsdakotaEnum;
-	      else if (strcmp(name,"QmuMassFluxSegments")==0) return QmuMassFluxSegmentsEnum;
-	      else if (strcmp(name,"QmuNumberofpartitions")==0) return QmuNumberofpartitionsEnum;
-	      else if (strcmp(name,"QmuNumberofresponses")==0) return QmuNumberofresponsesEnum;
-	      else if (strcmp(name,"QmuPartition")==0) return QmuPartitionEnum;
-	      else if (strcmp(name,"QmuResponsedescriptors")==0) return QmuResponsedescriptorsEnum;
-	      else if (strcmp(name,"QmuVariabledescriptors")==0) return QmuVariabledescriptorsEnum;
-	      else if (strcmp(name,"RiftsNumrifts")==0) return RiftsNumriftsEnum;
-	      else if (strcmp(name,"RiftsRiftstruct")==0) return RiftsRiftstructEnum;
-	      else if (strcmp(name,"SettingsIoGather")==0) return SettingsIoGatherEnum;
-	      else if (strcmp(name,"SettingsLowmem")==0) return SettingsLowmemEnum;
-	      else if (strcmp(name,"SettingsOutputFrequency")==0) return SettingsOutputFrequencyEnum;
-	      else if (strcmp(name,"SettingsResultsAsPatches")==0) return SettingsResultsAsPatchesEnum;
-	      else if (strcmp(name,"SettingsWaitonlock")==0) return SettingsWaitonlockEnum;
-	      else if (strcmp(name,"SteadystateMaxiter")==0) return SteadystateMaxiterEnum;
-	      else if (strcmp(name,"SteadystateNumRequestedOutputs")==0) return SteadystateNumRequestedOutputsEnum;
-	      else if (strcmp(name,"SteadystateReltol")==0) return SteadystateReltolEnum;
-	      else if (strcmp(name,"SteadystateRequestedOutputs")==0) return SteadystateRequestedOutputsEnum;
-	      else if (strcmp(name,"Surface")==0) return SurfaceEnum;
-	      else if (strcmp(name,"SurfaceforcingsAblationRate")==0) return SurfaceforcingsAblationRateEnum;
-	      else if (strcmp(name,"SurfaceforcingsAccumulationRate")==0) return SurfaceforcingsAccumulationRateEnum;
-	      else if (strcmp(name,"SurfaceforcingsMassBalance")==0) return SurfaceforcingsMassBalanceEnum;
-	      else if (strcmp(name,"ThermalMaxiter")==0) return ThermalMaxiterEnum;
-	      else if (strcmp(name,"ThermalPenaltyFactor")==0) return ThermalPenaltyFactorEnum;
-	      else if (strcmp(name,"ThermalPenaltyLock")==0) return ThermalPenaltyLockEnum;
-	      else if (strcmp(name,"ThermalPenaltyThreshold")==0) return ThermalPenaltyThresholdEnum;
-	      else if (strcmp(name,"ThermalSpctemperature")==0) return ThermalSpctemperatureEnum;
-	      else if (strcmp(name,"ThermalStabilization")==0) return ThermalStabilizationEnum;
-	      else if (strcmp(name,"ThermalIsenthalpy")==0) return ThermalIsenthalpyEnum;
-	      else if (strcmp(name,"Thickness")==0) return ThicknessEnum;
-	      else if (strcmp(name,"TimesteppingCflCoefficient")==0) return TimesteppingCflCoefficientEnum;
-	      else if (strcmp(name,"TimesteppingFinalTime")==0) return TimesteppingFinalTimeEnum;
-	      else if (strcmp(name,"TimesteppingTimeAdapt")==0) return TimesteppingTimeAdaptEnum;
-	      else if (strcmp(name,"TimesteppingTimeStep")==0) return TimesteppingTimeStepEnum;
-	      else if (strcmp(name,"TransientIsdiagnostic")==0) return TransientIsdiagnosticEnum;
-	      else if (strcmp(name,"TransientIsgroundingline")==0) return TransientIsgroundinglineEnum;
-	      else if (strcmp(name,"TransientIsprognostic")==0) return TransientIsprognosticEnum;
-	      else if (strcmp(name,"TransientIsthermal")==0) return TransientIsthermalEnum;
-	      else if (strcmp(name,"TransientNumRequestedOutputs")==0) return TransientNumRequestedOutputsEnum;
-	      else if (strcmp(name,"TransientRequestedOutputs")==0) return TransientRequestedOutputsEnum;
-	      else if (strcmp(name,"SolutionType")==0) return SolutionTypeEnum;
-	      else if (strcmp(name,"AnalysisType")==0) return AnalysisTypeEnum;
-	      else if (strcmp(name,"ConfigurationType")==0) return ConfigurationTypeEnum;
-	      else if (strcmp(name,"AdjointBalancethicknessAnalysis")==0) return AdjointBalancethicknessAnalysisEnum;
-	      else if (strcmp(name,"AdjointHorizAnalysis")==0) return AdjointHorizAnalysisEnum;
-	      else if (strcmp(name,"AdjointSolution")==0) return AdjointSolutionEnum;
-	      else if (strcmp(name,"AnalysisCounter")==0) return AnalysisCounterEnum;
-	      else if (strcmp(name,"BalancethicknessAnalysis")==0) return BalancethicknessAnalysisEnum;
-	      else if (strcmp(name,"BalancethicknessSolution")==0) return BalancethicknessSolutionEnum;
-	      else if (strcmp(name,"BedSlopeAnalysis")==0) return BedSlopeAnalysisEnum;
-	      else if (strcmp(name,"BedSlopeSolution")==0) return BedSlopeSolutionEnum;
-	      else if (strcmp(name,"BedSlopeXAnalysis")==0) return BedSlopeXAnalysisEnum;
-	      else if (strcmp(name,"BedSlopeYAnalysis")==0) return BedSlopeYAnalysisEnum;
-	      else if (strcmp(name,"DiagnosticHorizAnalysis")==0) return DiagnosticHorizAnalysisEnum;
-	      else if (strcmp(name,"DiagnosticHutterAnalysis")==0) return DiagnosticHutterAnalysisEnum;
-	      else if (strcmp(name,"DiagnosticSolution")==0) return DiagnosticSolutionEnum;
-	      else if (strcmp(name,"DiagnosticVertAnalysis")==0) return DiagnosticVertAnalysisEnum;
-	      else if (strcmp(name,"EnthalpyAnalysis")==0) return EnthalpyAnalysisEnum;
-	      else if (strcmp(name,"EnthalpySolution")==0) return EnthalpySolutionEnum;
-	      else if (strcmp(name,"FlaimAnalysis")==0) return FlaimAnalysisEnum;
-	      else if (strcmp(name,"FlaimSolution")==0) return FlaimSolutionEnum;
-	      else if (strcmp(name,"HydrologyAnalysis")==0) return HydrologyAnalysisEnum;
-	      else if (strcmp(name,"HydrologySolution")==0) return HydrologySolutionEnum;
-	      else if (strcmp(name,"MeltingAnalysis")==0) return MeltingAnalysisEnum;
-	      else if (strcmp(name,"NoneAnalysis")==0) return NoneAnalysisEnum;
-	      else if (strcmp(name,"PrognosticAnalysis")==0) return PrognosticAnalysisEnum;
-	      else if (strcmp(name,"PrognosticSolution")==0) return PrognosticSolutionEnum;
-	      else if (strcmp(name,"SteadystateSolution")==0) return SteadystateSolutionEnum;
-	      else if (strcmp(name,"SurfaceSlopeAnalysis")==0) return SurfaceSlopeAnalysisEnum;
-	      else if (strcmp(name,"SurfaceSlopeSolution")==0) return SurfaceSlopeSolutionEnum;
-	      else if (strcmp(name,"SurfaceSlopeXAnalysis")==0) return SurfaceSlopeXAnalysisEnum;
-	      else if (strcmp(name,"SurfaceSlopeYAnalysis")==0) return SurfaceSlopeYAnalysisEnum;
-	      else if (strcmp(name,"ThermalAnalysis")==0) return ThermalAnalysisEnum;
-	      else if (strcmp(name,"ThermalSolution")==0) return ThermalSolutionEnum;
-	      else if (strcmp(name,"TransientSolution")==0) return TransientSolutionEnum;
-	      else if (strcmp(name,"Approximation")==0) return ApproximationEnum;
-	      else if (strcmp(name,"HutterApproximation")==0) return HutterApproximationEnum;
-	      else if (strcmp(name,"MacAyealApproximation")==0) return MacAyealApproximationEnum;
-	      else if (strcmp(name,"MacAyealPattynApproximation")==0) return MacAyealPattynApproximationEnum;
-	      else if (strcmp(name,"MacAyealStokesApproximation")==0) return MacAyealStokesApproximationEnum;
-	      else if (strcmp(name,"NoneApproximation")==0) return NoneApproximationEnum;
-	      else if (strcmp(name,"PattynApproximation")==0) return PattynApproximationEnum;
-	      else if (strcmp(name,"PattynStokesApproximation")==0) return PattynStokesApproximationEnum;
-	      else if (strcmp(name,"StokesApproximation")==0) return StokesApproximationEnum;
-	      else if (strcmp(name,"Constraints")==0) return ConstraintsEnum;
-	      else if (strcmp(name,"Loads")==0) return LoadsEnum;
-	      else if (strcmp(name,"Materials")==0) return MaterialsEnum;
-	      else if (strcmp(name,"Nodes")==0) return NodesEnum;
-	      else if (strcmp(name,"Parameters")==0) return ParametersEnum;
-	      else if (strcmp(name,"Vertices")==0) return VerticesEnum;
-	      else if (strcmp(name,"Results")==0) return ResultsEnum;
-	      else if (strcmp(name,"BoolInput")==0) return BoolInputEnum;
-	      else if (strcmp(name,"BoolParam")==0) return BoolParamEnum;
-	      else if (strcmp(name,"ControlInput")==0) return ControlInputEnum;
-	      else if (strcmp(name,"DatasetInput")==0) return DatasetInputEnum;
-	      else if (strcmp(name,"DofIndexing")==0) return DofIndexingEnum;
-	      else if (strcmp(name,"DoubleInput")==0) return DoubleInputEnum;
-	      else if (strcmp(name,"DoubleMatArrayParam")==0) return DoubleMatArrayParamEnum;
-	      else if (strcmp(name,"DoubleMatParam")==0) return DoubleMatParamEnum;
-	      else if (strcmp(name,"DoubleParam")==0) return DoubleParamEnum;
-	      else if (strcmp(name,"DoubleVecParam")==0) return DoubleVecParamEnum;
-	      else if (strcmp(name,"Element")==0) return ElementEnum;
-	      else if (strcmp(name,"ElementResult")==0) return ElementResultEnum;
-	      else if (strcmp(name,"ExternalResult")==0) return ExternalResultEnum;
-	      else if (strcmp(name,"FileParam")==0) return FileParamEnum;
-	      else if (strcmp(name,"Hook")==0) return HookEnum;
-	      else if (strcmp(name,"Icefront")==0) return IcefrontEnum;
-	      else if (strcmp(name,"Input")==0) return InputEnum;
-	      else if (strcmp(name,"IntInput")==0) return IntInputEnum;
-	      else if (strcmp(name,"IntParam")==0) return IntParamEnum;
-	      else if (strcmp(name,"IntVecParam")==0) return IntVecParamEnum;
-	      else if (strcmp(name,"MacAyeal2dIceFront")==0) return MacAyeal2dIceFrontEnum;
-	      else if (strcmp(name,"MacAyeal3dIceFront")==0) return MacAyeal3dIceFrontEnum;
-	      else if (strcmp(name,"Matice")==0) return MaticeEnum;
-	      else if (strcmp(name,"Matpar")==0) return MatparEnum;
-	      else if (strcmp(name,"Node")==0) return NodeEnum;
-	      else if (strcmp(name,"Numericalflux")==0) return NumericalfluxEnum;
-	      else if (strcmp(name,"Param")==0) return ParamEnum;
-         else stage=3;
-   }
-   if(stage==3){
-	      if (strcmp(name,"PattynIceFront")==0) return PattynIceFrontEnum;
-	      else if (strcmp(name,"Pengrid")==0) return PengridEnum;
-	      else if (strcmp(name,"Penpair")==0) return PenpairEnum;
-	      else if (strcmp(name,"Penta")==0) return PentaEnum;
-	      else if (strcmp(name,"PentaP1Input")==0) return PentaP1InputEnum;
-	      else if (strcmp(name,"PetscMatParam")==0) return PetscMatParamEnum;
-	      else if (strcmp(name,"PetscVecParam")==0) return PetscVecParamEnum;
-	      else if (strcmp(name,"Riftfront")==0) return RiftfrontEnum;
-	      else if (strcmp(name,"Segment")==0) return SegmentEnum;
-	      else if (strcmp(name,"SegmentRiftfront")==0) return SegmentRiftfrontEnum;
-	      else if (strcmp(name,"SpcDynamic")==0) return SpcDynamicEnum;
-	      else if (strcmp(name,"SpcStatic")==0) return SpcStaticEnum;
-	      else if (strcmp(name,"SpcTransient")==0) return SpcTransientEnum;
-	      else if (strcmp(name,"StokesIceFront")==0) return StokesIceFrontEnum;
-	      else if (strcmp(name,"StringArrayParam")==0) return StringArrayParamEnum;
-	      else if (strcmp(name,"StringParam")==0) return StringParamEnum;
-	      else if (strcmp(name,"Tria")==0) return TriaEnum;
-	      else if (strcmp(name,"TriaP1Input")==0) return TriaP1InputEnum;
-	      else if (strcmp(name,"Vertex")==0) return VertexEnum;
-	      else if (strcmp(name,"Air")==0) return AirEnum;
-	      else if (strcmp(name,"Ice")==0) return IceEnum;
-	      else if (strcmp(name,"Melange")==0) return MelangeEnum;
-	      else if (strcmp(name,"Water")==0) return WaterEnum;
-	      else if (strcmp(name,"Closed")==0) return ClosedEnum;
-	      else if (strcmp(name,"Free")==0) return FreeEnum;
-	      else if (strcmp(name,"Open")==0) return OpenEnum;
-	      else if (strcmp(name,"Adjointp")==0) return AdjointpEnum;
-	      else if (strcmp(name,"Adjointx")==0) return AdjointxEnum;
-	      else if (strcmp(name,"Adjointy")==0) return AdjointyEnum;
-	      else if (strcmp(name,"Adjointz")==0) return AdjointzEnum;
-	      else if (strcmp(name,"BedSlopeX")==0) return BedSlopeXEnum;
-	      else if (strcmp(name,"BedSlopeY")==0) return BedSlopeYEnum;
-	      else if (strcmp(name,"Boundary")==0) return BoundaryEnum;
-	      else if (strcmp(name,"Constant")==0) return ConstantEnum;
-	      else if (strcmp(name,"Converged")==0) return ConvergedEnum;
-	      else if (strcmp(name,"ExtToIu")==0) return ExtToIuEnum;
-	      else if (strcmp(name,"Fill")==0) return FillEnum;
-	      else if (strcmp(name,"FractionIncrement")==0) return FractionIncrementEnum;
-	      else if (strcmp(name,"Friction")==0) return FrictionEnum;
-	      else if (strcmp(name,"GroundinglineMeltingRate")==0) return GroundinglineMeltingRateEnum;
-	      else if (strcmp(name,"Internal")==0) return InternalEnum;
-	      else if (strcmp(name,"IuToExt")==0) return IuToExtEnum;
-	      else if (strcmp(name,"MassFlux")==0) return MassFluxEnum;
-	      else if (strcmp(name,"MaxPenetration")==0) return MaxPenetrationEnum;
-	      else if (strcmp(name,"MeltingOffset")==0) return MeltingOffsetEnum;
-	      else if (strcmp(name,"Misfit")==0) return MisfitEnum;
-	      else if (strcmp(name,"NumberNodeToElementConnectivity")==0) return NumberNodeToElementConnectivityEnum;
-	      else if (strcmp(name,"Pressure")==0) return PressureEnum;
-	      else if (strcmp(name,"PressurePicard")==0) return PressurePicardEnum;
-	      else if (strcmp(name,"QmuPressure")==0) return QmuPressureEnum;
-	      else if (strcmp(name,"QmuVx")==0) return QmuVxEnum;
-	      else if (strcmp(name,"QmuVy")==0) return QmuVyEnum;
-	      else if (strcmp(name,"QmuVz")==0) return QmuVzEnum;
-	      else if (strcmp(name,"QmuThickness")==0) return QmuThicknessEnum;
-	      else if (strcmp(name,"QmuBed")==0) return QmuBedEnum;
-	      else if (strcmp(name,"QmuSurface")==0) return QmuSurfaceEnum;
-	      else if (strcmp(name,"QmuMelting")==0) return QmuMeltingEnum;
-	      else if (strcmp(name,"ResetPenalties")==0) return ResetPenaltiesEnum;
-	      else if (strcmp(name,"SegmentOnIceShelf")==0) return SegmentOnIceShelfEnum;
-	      else if (strcmp(name,"SurfaceAbsVelMisfit")==0) return SurfaceAbsVelMisfitEnum;
-	      else if (strcmp(name,"SurfaceArea")==0) return SurfaceAreaEnum;
-	      else if (strcmp(name,"SurfaceAverageVelMisfit")==0) return SurfaceAverageVelMisfitEnum;
-	      else if (strcmp(name,"SurfaceLogVelMisfit")==0) return SurfaceLogVelMisfitEnum;
-	      else if (strcmp(name,"SurfaceLogVxVyMisfit")==0) return SurfaceLogVxVyMisfitEnum;
-	      else if (strcmp(name,"SurfaceRelVelMisfit")==0) return SurfaceRelVelMisfitEnum;
-	      else if (strcmp(name,"SurfaceSlopeX")==0) return SurfaceSlopeXEnum;
-	      else if (strcmp(name,"SurfaceSlopeY")==0) return SurfaceSlopeYEnum;
-	      else if (strcmp(name,"Temperature")==0) return TemperatureEnum;
-	      else if (strcmp(name,"TemperatureOld")==0) return TemperatureOldEnum;
-	      else if (strcmp(name,"TemperaturePicard")==0) return TemperaturePicardEnum;
-	      else if (strcmp(name,"ThicknessAbsMisfit")==0) return ThicknessAbsMisfitEnum;
-	      else if (strcmp(name,"Type")==0) return TypeEnum;
-	      else if (strcmp(name,"Vel")==0) return VelEnum;
-	      else if (strcmp(name,"Velocity")==0) return VelocityEnum;
-	      else if (strcmp(name,"VxAverage")==0) return VxAverageEnum;
-	      else if (strcmp(name,"Vx")==0) return VxEnum;
-	      else if (strcmp(name,"VxPicard")==0) return VxPicardEnum;
-	      else if (strcmp(name,"VyAverage")==0) return VyAverageEnum;
-	      else if (strcmp(name,"Vy")==0) return VyEnum;
-	      else if (strcmp(name,"VyPicard")==0) return VyPicardEnum;
-	      else if (strcmp(name,"Vz")==0) return VzEnum;
-	      else if (strcmp(name,"VzMacAyeal")==0) return VzMacAyealEnum;
-	      else if (strcmp(name,"VzPattyn")==0) return VzPattynEnum;
-	      else if (strcmp(name,"VzPicard")==0) return VzPicardEnum;
-	      else if (strcmp(name,"VzStokes")==0) return VzStokesEnum;
-	      else if (strcmp(name,"VxMesh")==0) return VxMeshEnum;
-	      else if (strcmp(name,"VyMesh")==0) return VyMeshEnum;
-	      else if (strcmp(name,"VzMesh")==0) return VzMeshEnum;
-	      else if (strcmp(name,"Enthalpy")==0) return EnthalpyEnum;
-	      else if (strcmp(name,"EnthalpyPicard")==0) return EnthalpyPicardEnum;
-	      else if (strcmp(name,"ThicknessAbsGradient")==0) return ThicknessAbsGradientEnum;
-	      else if (strcmp(name,"StepResponses")==0) return StepResponsesEnum;
-	      else if (strcmp(name,"IntMatParam")==0) return IntMatParamEnum;
-	      else if (strcmp(name,"RheologyBbarAbsGradient")==0) return RheologyBbarAbsGradientEnum;
-	      else if (strcmp(name,"DragCoefficientAbsGradient")==0) return DragCoefficientAbsGradientEnum;
-	      else if (strcmp(name,"TransientInput")==0) return TransientInputEnum;
-	      else if (strcmp(name,"Outputfilename")==0) return OutputfilenameEnum;
-	      else if (strcmp(name,"Waterfraction")==0) return WaterfractionEnum;
-	      else if (strcmp(name,"Watercolumn")==0) return WatercolumnEnum;
-	      else if (strcmp(name,"BasalFriction")==0) return BasalFrictionEnum;
-	      else if (strcmp(name,"ViscousHeating")==0) return ViscousHeatingEnum;
-	      else if (strcmp(name,"QmuTemperature")==0) return QmuTemperatureEnum;
-	      else if (strcmp(name,"HydrologyWaterVx")==0) return HydrologyWaterVxEnum;
-	      else if (strcmp(name,"HydrologyWaterVy")==0) return HydrologyWaterVyEnum;
-	      else if (strcmp(name,"StressTensor")==0) return StressTensorEnum;
-	      else if (strcmp(name,"StressTensorxx")==0) return StressTensorxxEnum;
-	      else if (strcmp(name,"StressTensorxy")==0) return StressTensorxyEnum;
-	      else if (strcmp(name,"StressTensorxz")==0) return StressTensorxzEnum;
-	      else if (strcmp(name,"StressTensoryy")==0) return StressTensoryyEnum;
-	      else if (strcmp(name,"StressTensoryz")==0) return StressTensoryzEnum;
-	      else if (strcmp(name,"StressTensorzz")==0) return StressTensorzzEnum;
-	      else if (strcmp(name,"IceVolume")==0) return IceVolumeEnum;
-	      else if (strcmp(name,"P0")==0) return P0Enum;
-	      else if (strcmp(name,"P1")==0) return P1Enum;
-	      else if (strcmp(name,"P1DG")==0) return P1DGEnum;
-	      else if (strcmp(name,"BoolElementResult")==0) return BoolElementResultEnum;
-	      else if (strcmp(name,"BoolExternalResult")==0) return BoolExternalResultEnum;
-	      else if (strcmp(name,"DoubleElementResult")==0) return DoubleElementResultEnum;
-	      else if (strcmp(name,"DoubleExternalResult")==0) return DoubleExternalResultEnum;
-	      else if (strcmp(name,"DoubleMatExternalResult")==0) return DoubleMatExternalResultEnum;
-         else stage=4;
-   }
-   if(stage==4){
-	      if (strcmp(name,"DoubleVecExternalResult")==0) return DoubleVecExternalResultEnum;
-	      else if (strcmp(name,"IntExternalResult")==0) return IntExternalResultEnum;
-	      else if (strcmp(name,"J")==0) return JEnum;
-	      else if (strcmp(name,"Patch")==0) return PatchEnum;
-	      else if (strcmp(name,"PatchNodes")==0) return PatchNodesEnum;
-	      else if (strcmp(name,"PatchVertices")==0) return PatchVerticesEnum;
-	      else if (strcmp(name,"PentaP1ElementResult")==0) return PentaP1ElementResultEnum;
-	      else if (strcmp(name,"PetscVecExternalResult")==0) return PetscVecExternalResultEnum;
-	      else if (strcmp(name,"StringExternalResult")==0) return StringExternalResultEnum;
-	      else if (strcmp(name,"Time")==0) return TimeEnum;
-	      else if (strcmp(name,"TriaP1ElementResult")==0) return TriaP1ElementResultEnum;
-	      else if (strcmp(name,"WaterColumnOld")==0) return WaterColumnOldEnum;
-	      else if (strcmp(name,"MinVel")==0) return MinVelEnum;
-	      else if (strcmp(name,"MaxVel")==0) return MaxVelEnum;
-	      else if (strcmp(name,"MinVx")==0) return MinVxEnum;
-	      else if (strcmp(name,"MaxVx")==0) return MaxVxEnum;
-	      else if (strcmp(name,"MaxAbsVx")==0) return MaxAbsVxEnum;
-	      else if (strcmp(name,"MinVy")==0) return MinVyEnum;
-	      else if (strcmp(name,"MaxVy")==0) return MaxVyEnum;
-	      else if (strcmp(name,"MaxAbsVy")==0) return MaxAbsVyEnum;
-	      else if (strcmp(name,"MinVz")==0) return MinVzEnum;
-	      else if (strcmp(name,"MaxVz")==0) return MaxVzEnum;
-	      else if (strcmp(name,"MaxAbsVz")==0) return MaxAbsVzEnum;
-	      else if (strcmp(name,"Relative")==0) return RelativeEnum;
-	      else if (strcmp(name,"Absolute")==0) return AbsoluteEnum;
-	      else if (strcmp(name,"Incremental")==0) return IncrementalEnum;
-	      else if (strcmp(name,"AgressiveMigration")==0) return AgressiveMigrationEnum;
-	      else if (strcmp(name,"None")==0) return NoneEnum;
-	      else if (strcmp(name,"SoftMigration")==0) return SoftMigrationEnum;
-	      else if (strcmp(name,"StokesSolver")==0) return StokesSolverEnum;
-	      else if (strcmp(name,"Adjoint")==0) return AdjointEnum;
-	      else if (strcmp(name,"Colinear")==0) return ColinearEnum;
-	      else if (strcmp(name,"ControlSteady")==0) return ControlSteadyEnum;
-	      else if (strcmp(name,"Fset")==0) return FsetEnum;
-	      else if (strcmp(name,"Gradient1")==0) return Gradient1Enum;
-	      else if (strcmp(name,"Gradient2")==0) return Gradient2Enum;
-	      else if (strcmp(name,"Gradient3")==0) return Gradient3Enum;
-	      else if (strcmp(name,"Gradient")==0) return GradientEnum;
-	      else if (strcmp(name,"GroundinglineMigration")==0) return GroundinglineMigrationEnum;
-	      else if (strcmp(name,"Gset")==0) return GsetEnum;
-	      else if (strcmp(name,"Index")==0) return IndexEnum;
-	      else if (strcmp(name,"Indexed")==0) return IndexedEnum;
-	      else if (strcmp(name,"Intersect")==0) return IntersectEnum;
-	      else if (strcmp(name,"Nodal")==0) return NodalEnum;
-	      else if (strcmp(name,"OldGradient")==0) return OldGradientEnum;
-	      else if (strcmp(name,"OutputFilePointer")==0) return OutputFilePointerEnum;
-	      else if (strcmp(name,"PetscOptionsAnalyses")==0) return PetscOptionsAnalysesEnum;
-	      else if (strcmp(name,"PetscOptionsStrings")==0) return PetscOptionsStringsEnum;
-	      else if (strcmp(name,"QmuErrName")==0) return QmuErrNameEnum;
-	      else if (strcmp(name,"QmuInName")==0) return QmuInNameEnum;
-	      else if (strcmp(name,"QmuOutName")==0) return QmuOutNameEnum;
-	      else if (strcmp(name,"Regular")==0) return RegularEnum;
-	      else if (strcmp(name,"Scaled")==0) return ScaledEnum;
-	      else if (strcmp(name,"Separate")==0) return SeparateEnum;
-	      else if (strcmp(name,"Sset")==0) return SsetEnum;
-	      else if (strcmp(name,"Verbose")==0) return VerboseEnum;
-	      else if (strcmp(name,"TriangleInterp")==0) return TriangleInterpEnum;
-	      else if (strcmp(name,"BilinearInterp")==0) return BilinearInterpEnum;
-	      else if (strcmp(name,"NearestInterp")==0) return NearestInterpEnum;
-	      else if (strcmp(name,"XY")==0) return XYEnum;
-	      else if (strcmp(name,"XYZP")==0) return XYZPEnum;
-	      else if (strcmp(name,"Option")==0) return OptionEnum;
-	      else if (strcmp(name,"OptionCell")==0) return OptionCellEnum;
-	      else if (strcmp(name,"OptionChar")==0) return OptionCharEnum;
-	      else if (strcmp(name,"OptionStruct")==0) return OptionStructEnum;
-	      else if (strcmp(name,"OptionDouble")==0) return OptionDoubleEnum;
-	      else if (strcmp(name,"OptionLogical")==0) return OptionLogicalEnum;
-	      else if (strcmp(name,"Paterson")==0) return PatersonEnum;
-	      else if (strcmp(name,"Arrhenius")==0) return ArrheniusEnum;
-         else stage=5;
-   }
-	/*If we reach this point, the string provided has not been found*/
-   _error_("Enum %s not found",name);
 }
Index: /issm/trunk-jpl-damage/src/c/objects/Elements/Penta.cpp
===================================================================
--- /issm/trunk-jpl-damage/src/c/objects/Elements/Penta.cpp	(revision 11424)
+++ /issm/trunk-jpl-damage/src/c/objects/Elements/Penta.cpp	(revision 11425)
@@ -769,37 +769,4 @@
 }
 /*}}}*/
-/*FUNCTION Penta::CreateJacobianMatrix{{{1*/
-void  Penta::CreateJacobianMatrix(Mat Jff){
-
-	/*retrieve parameters: */
-	ElementMatrix* Ke=NULL;
-	int analysis_type;
-	parameters->FindParam(&analysis_type,AnalysisTypeEnum);
-
-	/*Checks in debugging {{{2*/
-	_assert_(this->nodes && this->matice && this->matpar && this->verticalneighbors && this->parameters && this->inputs);
-	/*}}}*/
-
-	/*Skip if water element*/
-	if(IsOnWater()) return;
-
-	/*Just branch to the correct element stiffness matrix generator, according to the type of analysis we are carrying out: */
-	switch(analysis_type){
-#ifdef _HAVE_DIAGNOSTIC_
-		case DiagnosticHorizAnalysisEnum:
-			Ke=CreateJacobianDiagnosticHoriz();
-			break;
-#endif
-		default:
-			_error_("analysis %i (%s) not supported yet",analysis_type,EnumToStringx(analysis_type));
-	}
-
-	/*Add to global matrix*/
-	if(Ke){
-		Ke->AddToGlobal(Jff);
-		delete Ke;
-	}
-}
-/*}}}*/
 /*FUNCTION Penta::DeepEcho{{{1*/
 void Penta::DeepEcho(void){
@@ -1132,8 +1099,6 @@
 /*}}}*/
 /*FUNCTION Penta::GetStabilizationParameter {{{1*/
-double Penta::GetStabilizationParameter(double u, double v, double w, double diameter, double kappa){
+double Penta::GetStabilizationParameter(double u, double v, double w, double diameter, double rho_ice, double heatcapacity, double thermalconductivity){
 	/*Compute stabilization parameter*/
-	/*kappa=thermalconductivity/(rho_ice*hearcapacity) for thermal model*/
-	/*kappa=enthalpydiffusionparameter for enthalpy model*/
 
 	double normu;
@@ -1141,6 +1106,6 @@
 
 	normu=pow(pow(u,2)+pow(v,2)+pow(w,2),0.5);
-	if(normu*diameter/(3*2*kappa)<1){ 
-		tau_parameter=pow(diameter,2)/(3*2*2*kappa);
+	if(normu*diameter/(3*2*thermalconductivity/(rho_ice*heatcapacity))<1){
+		tau_parameter=pow(diameter,2)/(3*2*2*thermalconductivity/(rho_ice*heatcapacity));
 	}
 	else tau_parameter=diameter/(2*normu);
@@ -3318,7 +3283,11 @@
 		GetBprimeAdvec(&Bprime_advec[0][0],&xyz_list[0][0],gauss); 
 
-		vx_input->GetInputValue(&u, gauss); vxm_input->GetInputValue(&um,gauss); vx=u-um; 
-		vy_input->GetInputValue(&v, gauss); vym_input->GetInputValue(&vm,gauss); vy=v-vm; 
-		vz_input->GetInputValue(&w, gauss); vzm_input->GetInputValue(&wm,gauss); vz=w-wm;
+		vx_input->GetInputValue(&u, gauss);
+		vy_input->GetInputValue(&v, gauss);
+		vz_input->GetInputValue(&w, gauss);
+		vxm_input->GetInputValue(&um,gauss);
+		vym_input->GetInputValue(&vm,gauss);
+		vzm_input->GetInputValue(&wm,gauss);
+		vx=u-um; vy=v-vm; vz=w-wm;
 
 		D_scalar_advec=gauss->weight*Jdet;
@@ -3352,7 +3321,7 @@
 			vel=sqrt(pow(vx,2.)+pow(vy,2.)+pow(vz,2.))+1.e-14;
 			h=sqrt( pow(hx*vx/vel,2.) + pow(hy*vy/vel,2.) + pow(hz*vz/vel,2.));
-			K[0][0]=h/(2*vel)*vx*vx;  K[0][1]=h/(2*vel)*vx*vy; K[0][2]=h/(2*vel)*vx*vz;
-			K[1][0]=h/(2*vel)*vy*vx;  K[1][1]=h/(2*vel)*vy*vy; K[1][2]=h/(2*vel)*vy*vz;
-			K[2][0]=h/(2*vel)*vz*vx;  K[2][1]=h/(2*vel)*vz*vy; K[2][2]=h/(2*vel)*vz*vz;
+			K[0][0]=h/(2*vel)*fabs(vx*vx);  K[0][1]=h/(2*vel)*fabs(vx*vy); K[0][2]=h/(2*vel)*fabs(vx*vz);
+			K[1][0]=h/(2*vel)*fabs(vy*vx);  K[1][1]=h/(2*vel)*fabs(vy*vy); K[1][2]=h/(2*vel)*fabs(vy*vz);
+			K[2][0]=h/(2*vel)*fabs(vz*vx);  K[2][1]=h/(2*vel)*fabs(vz*vy); K[2][2]=h/(2*vel)*fabs(vz*vz);
 			D_scalar_stab=gauss->weight*Jdet;
 			if(dt) D_scalar_stab=D_scalar_stab*dt;
@@ -3368,5 +3337,5 @@
 		else if(stabilization==2){
 			GetNodalFunctionsP1Derivatives(&dbasis[0][0],&xyz_list[0][0], gauss);
-			tau_parameter=GetStabilizationParameter(u-um,v-vm,w-wm,diameter,kappa);
+			tau_parameter=GetStabilizationParameter(u-um,v-vm,w-wm,diameter,rho_ice,heatcapacity,thermalconductivity);
 
 			for(i=0;i<numdof;i++){
@@ -3482,5 +3451,5 @@
 	double     Jdet,u,v,w,um,vm,wm,vel;
 	double     h,hx,hy,hz,vx,vy,vz;
-	double     gravity,rho_ice,rho_water,kappa;
+	double     gravity,rho_ice,rho_water;
 	double     heatcapacity,thermalconductivity,dt;
 	double     tau_parameter,diameter;
@@ -3508,5 +3477,4 @@
 	heatcapacity=matpar->GetHeatCapacity();
 	thermalconductivity=matpar->GetThermalConductivity();
-	kappa=thermalconductivity/(rho_ice*heatcapacity);
 	this->parameters->FindParam(&dt,TimesteppingTimeStepEnum);
 	this->parameters->FindParam(&stabilization,ThermalStabilizationEnum);
@@ -3531,5 +3499,5 @@
 		GetBConduct(&B_conduct[0][0],&xyz_list[0][0],gauss); 
 
-		D_scalar_conduct=gauss->weight*Jdet*kappa;
+		D_scalar_conduct=gauss->weight*Jdet*(thermalconductivity/(rho_ice*heatcapacity));
 		if(dt) D_scalar_conduct=D_scalar_conduct*dt;
 
@@ -3600,5 +3568,5 @@
 		else if(stabilization==2){
 			GetNodalFunctionsP1Derivatives(&dbasis[0][0],&xyz_list[0][0], gauss);
-			tau_parameter=GetStabilizationParameter(u-um,v-vm,w-wm,diameter,kappa);
+			tau_parameter=GetStabilizationParameter(u-um,v-vm,w-wm,diameter,rho_ice,heatcapacity,thermalconductivity);
 
 			for(i=0;i<numdof;i++){
@@ -3705,7 +3673,6 @@
 	double Jdet,phi,dt;
 	double rho_ice,heatcapacity;
-	double thermalconductivity,kappa;
-	double viscosity,pressure;
-	double enthalpy,enthalpypicard;
+	double thermalconductivity;
+	double viscosity,enthalpy;
 	double tau_parameter,diameter;
 	double u,v,w;
@@ -3728,17 +3695,10 @@
 	this->parameters->FindParam(&dt,TimesteppingTimeStepEnum);
 	this->parameters->FindParam(&stabilization,ThermalStabilizationEnum);
-	Input* vx_input=inputs->GetInput(VxEnum);                                  _assert_(vx_input);
-	Input* vy_input=inputs->GetInput(VyEnum);                                  _assert_(vy_input);
-	Input* vz_input=inputs->GetInput(VzEnum);                                  _assert_(vz_input);
-	Input* pressure_input=inputs->GetInput(PressureEnum);                      _assert_(pressure_input);
-	Input* enthalpy_input=NULL; 
-	Input* enthalpypicard_input=NULL; 
-	if(dt){
-		enthalpy_input=inputs->GetInput(EnthalpyEnum); _assert_(enthalpy_input);
-	}
-	if (stabilization==2){
-		diameter=MinEdgeLength(xyz_list);
-		enthalpypicard_input=inputs->GetInput(EnthalpyPicardEnum); _assert_(enthalpypicard_input);
-	}
+	Input* vx_input=inputs->GetInput(VxEnum); _assert_(vx_input);
+	Input* vy_input=inputs->GetInput(VyEnum); _assert_(vy_input);
+	Input* vz_input=inputs->GetInput(VzEnum); _assert_(vz_input);
+	Input* enthalpy_input=NULL;
+	if (dt) enthalpy_input=inputs->GetInput(EnthalpyEnum); _assert_(inputs);
+	if (stabilization==2) diameter=MinEdgeLength(xyz_list);
 
 	/* Start  looping on the number of gaussian points: */
@@ -3755,5 +3715,5 @@
 		GetPhi(&phi, &epsilon[0], viscosity);
 
-		scalar_def=phi/rho_ice*Jdet*gauss->weight;
+		scalar_def=phi/(rho_ice)*Jdet*gauss->weight;
 		if(dt) scalar_def=scalar_def*dt;
 
@@ -3773,8 +3733,6 @@
 			vy_input->GetInputValue(&v, gauss);
 			vz_input->GetInputValue(&w, gauss);
-			pressure_input->GetInputValue(&pressure, gauss);
-			enthalpypicard_input->GetInputValue(&enthalpypicard, gauss);
-			kappa=matpar->GetEnthalpyDiffusionParameter(enthalpy,pressure);
-			tau_parameter=GetStabilizationParameter(u,v,w,diameter,kappa);
+
+			tau_parameter=GetStabilizationParameter(u,v,w,diameter,rho_ice,heatcapacity,thermalconductivity);
 
 			for(i=0;i<NUMVERTICES;i++)  pe->values[i]+=tau_parameter*scalar_def*(u*dbasis[0][i]+v*dbasis[1][i]+w*dbasis[2][i]);
@@ -3861,260 +3819,6 @@
 	double     rho_ice,heatcapacity,geothermalflux_value;
 	double     basalfriction,alpha2,vx,vy;
-	double     scalar,enthalpy,enthalpyup;
-	double     pressure,pressureup;
+	double     scalar;
 	double     basis[NUMVERTICES];
-	Friction*  friction=NULL;
-	GaussPenta* gauss=NULL;
-	GaussPenta* gaussup=NULL;
-
-	/* Geothermal flux on ice sheet base and basal friction */
-	if (!IsOnBed() || IsFloating()) return NULL;
-
-	/*Initialize Element vector*/
-	ElementVector* pe=new ElementVector(nodes,NUMVERTICES,this->parameters);
-
-	/*Retrieve all inputs and parameters*/
-	GetVerticesCoordinates(&xyz_list[0][0], nodes, NUMVERTICES);
-	for(i=0;i<NUMVERTICES2D;i++) for(j=0;j<2;j++) xyz_list_tria[i][j]=xyz_list[i][j];
-	parameters->FindParam(&analysis_type,AnalysisTypeEnum);
-	rho_ice=matpar->GetRhoIce();
-	heatcapacity=matpar->GetHeatCapacity();
-	this->parameters->FindParam(&dt,TimesteppingTimeStepEnum);
-	Input* vx_input=inputs->GetInput(VxEnum);                         _assert_(vx_input);
-	Input* vy_input=inputs->GetInput(VyEnum);                         _assert_(vy_input);
-	Input* vz_input=inputs->GetInput(VzEnum);                         _assert_(vz_input);
-	Input* enthalpy_input=inputs->GetInput(EnthalpyEnum);             _assert_(enthalpy_input);
-	Input* pressure_input=inputs->GetInput(PressureEnum);             _assert_(pressure_input);
-	Input* geothermalflux_input=inputs->GetInput(BasalforcingsGeothermalfluxEnum); _assert_(geothermalflux_input);
-
-	/*Build frictoin element, needed later: */
-	friction=new Friction("3d",inputs,matpar,analysis_type);
-
-	/* Start looping on the number of gauss 2d (nodes on the bedrock) */
-	gauss=new GaussPenta(0,1,2,2);
-	gaussup=new GaussPenta(3,4,5,2);
-	for(ig=gauss->begin();ig<gauss->end();ig++){
-
-		gauss->GaussPoint(ig);
-		gaussup->GaussPoint(ig);
-
-		GetTriaJacobianDeterminant(&Jdet2d, &xyz_list_tria[0][0], gauss);
-		GetNodalFunctionsP1(&basis[0], gauss);
-
-		enthalpy_input->GetInputValue(&enthalpy,gauss);
-		pressure_input->GetInputValue(&pressure,gauss);
-//		if(enthalpy>matpar->PureIceEnthalpy(pressure)){
-//			enthalpy_input->GetInputValue(&enthalpyup,gaussup);
-//			pressure_input->GetInputValue(&pressureup,gaussup);
-//			if(enthalpyup>matpar->PureIceEnthalpy(pressureup)){
-//				//do nothing, don't add heatflux
-//			}
-//			else{
-//				//need to change spcenthalpy according to Aschwanden 
-//				//NEED TO UPDATE
-//			}
-//		}
-//		else{
-			geothermalflux_input->GetInputValue(&geothermalflux_value,gauss);
-			friction->GetAlpha2(&alpha2,gauss,VxEnum,VyEnum,VzEnum);
-			vx_input->GetInputValue(&vx,gauss);
-			vy_input->GetInputValue(&vy,gauss);
-			basalfriction=alpha2*(pow(vx,2.0)+pow(vy,2.0));
-
-			scalar=gauss->weight*Jdet2d*(basalfriction+geothermalflux_value)/(rho_ice);
-			if(dt) scalar=dt*scalar;
-
-			for(i=0;i<numdof;i++) pe->values[i]+=scalar*basis[i];
-//		}
-	}
-
-	/*Clean up and return*/
-	delete gauss;
-	delete gaussup;
-	delete friction;
-	return pe;
-}
-/*}}}*/
-/*FUNCTION Penta::CreatePVectorMelting {{{1*/
-ElementVector* Penta::CreatePVectorMelting(void){
-	return NULL;
-}
-/*}}}*/
-/*FUNCTION Penta::CreatePVectorThermal {{{1*/
-ElementVector* Penta::CreatePVectorThermal(void){
-
-	/*compute all load vectors for this element*/
-	ElementVector* pe1=CreatePVectorThermalVolume();
-	ElementVector* pe2=CreatePVectorThermalSheet();
-	ElementVector* pe3=CreatePVectorThermalShelf();
-	ElementVector* pe =new ElementVector(pe1,pe2,pe3);
-
-	/*clean-up and return*/
-	delete pe1;
-	delete pe2;
-	delete pe3;
-	return pe;
-}
-/*}}}*/
-/*FUNCTION Penta::CreatePVectorThermalVolume {{{1*/
-ElementVector* Penta::CreatePVectorThermalVolume(void){
-
-	/*Constants*/
-	const int  numdof=NUMVERTICES*NDOF1;
-
-	/*Intermediaries*/
-	int    i,j,ig,found=0;
-	int    friction_type,stabilization;
-	double Jdet,phi,dt;
-	double rho_ice,heatcapacity;
-	double thermalconductivity,kappa;
-	double viscosity,temperature;
-	double tau_parameter,diameter;
-	double u,v,w;
-	double scalar_def,scalar_transient;
-	double temperature_list[NUMVERTICES];
-	double xyz_list[NUMVERTICES][3];
-	double L[numdof];
-	double dbasis[3][6];
-	double epsilon[6];
-	GaussPenta *gauss=NULL;
-
-	/*Initialize Element vector*/
-	ElementVector* pe=new ElementVector(nodes,NUMVERTICES,this->parameters);
-
-	/*Retrieve all inputs and parameters*/
-	GetVerticesCoordinates(&xyz_list[0][0], nodes, NUMVERTICES);
-	rho_ice=matpar->GetRhoIce();
-	heatcapacity=matpar->GetHeatCapacity();
-	thermalconductivity=matpar->GetThermalConductivity();
-	kappa=thermalconductivity/(rho_ice*heatcapacity);
-	this->parameters->FindParam(&dt,TimesteppingTimeStepEnum);
-	this->parameters->FindParam(&stabilization,ThermalStabilizationEnum);
-	Input* vx_input=inputs->GetInput(VxEnum); _assert_(vx_input);
-	Input* vy_input=inputs->GetInput(VyEnum); _assert_(vy_input);
-	Input* vz_input=inputs->GetInput(VzEnum); _assert_(vz_input);
-	Input* temperature_input=NULL;
-	if (dt) temperature_input=inputs->GetInput(TemperatureEnum); _assert_(inputs);
-	if (stabilization==2) diameter=MinEdgeLength(xyz_list);
-
-	/* Start  looping on the number of gaussian points: */
-	gauss=new GaussPenta(2,3);
-	for (ig=gauss->begin();ig<gauss->end();ig++){
-
-		gauss->GaussPoint(ig);
-
-		GetJacobianDeterminant(&Jdet, &xyz_list[0][0],gauss);
-		GetNodalFunctionsP1(&L[0], gauss);
-
-		this->GetStrainRate3d(&epsilon[0],&xyz_list[0][0],gauss,vx_input,vy_input,vz_input);
-		matice->GetViscosity3dStokes(&viscosity,&epsilon[0]);
-		GetPhi(&phi, &epsilon[0], viscosity);
-
-		scalar_def=phi/(rho_ice*heatcapacity)*Jdet*gauss->weight;
-		if(dt) scalar_def=scalar_def*dt;
-
-		for(i=0;i<NUMVERTICES;i++)  pe->values[i]+=scalar_def*L[i];
-
-		/* Build transient now */
-		if(dt){
-			temperature_input->GetInputValue(&temperature, gauss);
-			scalar_transient=temperature*Jdet*gauss->weight;
-			for(i=0;i<NUMVERTICES;i++)  pe->values[i]+=scalar_transient*L[i];
-		}
-
-		if(stabilization==2){
-			GetNodalFunctionsP1Derivatives(&dbasis[0][0],&xyz_list[0][0], gauss);
-
-			vx_input->GetInputValue(&u, gauss);
-			vy_input->GetInputValue(&v, gauss);
-			vz_input->GetInputValue(&w, gauss);
-
-			tau_parameter=GetStabilizationParameter(u,v,w,diameter,kappa);
-
-			for(i=0;i<NUMVERTICES;i++)  pe->values[i]+=tau_parameter*scalar_def*(u*dbasis[0][i]+v*dbasis[1][i]+w*dbasis[2][i]);
-			if(dt){
-				for(i=0;i<NUMVERTICES;i++)  pe->values[i]+=tau_parameter*scalar_transient*(u*dbasis[0][i]+v*dbasis[1][i]+w*dbasis[2][i]);
-			}
-		}
-	}
-
-	/*Clean up and return*/
-	delete gauss;
-	return pe;
-}
-/*}}}*/
-/*FUNCTION Penta::CreatePVectorThermalShelf {{{1*/
-ElementVector* Penta::CreatePVectorThermalShelf(void){
-
-	/*Constants*/
-	const int  numdof=NUMVERTICES*NDOF1;
-
-	/*Intermediaries */
-	int        i,j,ig;
-	double     Jdet2d;
-	double     mixed_layer_capacity,thermal_exchange_velocity;
-	double     rho_ice,rho_water,pressure,dt,scalar_ocean;
-	double     heatcapacity,t_pmp;
-	double     xyz_list[NUMVERTICES][3];
-	double     xyz_list_tria[NUMVERTICES2D][3];
-	double     basis[NUMVERTICES];
-	GaussPenta* gauss=NULL;
-
-	/* Ice/ocean heat exchange flux on ice shelf base */
-	if (!IsOnBed() || !IsFloating()) return NULL;
-
-	/*Initialize Element vector*/
-	ElementVector* pe=new ElementVector(nodes,NUMVERTICES,this->parameters);
-
-	/*Retrieve all inputs and parameters*/
-	GetVerticesCoordinates(&xyz_list[0][0], nodes, NUMVERTICES);
-	for(i=0;i<NUMVERTICES2D;i++) for(j=0;j<3;j++) xyz_list_tria[i][j]=xyz_list[i][j];
-	mixed_layer_capacity=matpar->GetMixedLayerCapacity();
-	thermal_exchange_velocity=matpar->GetThermalExchangeVelocity();
-	rho_water=matpar->GetRhoWater();
-	rho_ice=matpar->GetRhoIce();
-	heatcapacity=matpar->GetHeatCapacity();
-	this->parameters->FindParam(&dt,TimesteppingTimeStepEnum);
-	Input* pressure_input=inputs->GetInput(PressureEnum); _assert_(pressure_input);
-
-	/* Start looping on the number of gauss 2d (nodes on the bedrock) */
-	gauss=new GaussPenta(0,1,2,2);
-	for(ig=gauss->begin();ig<gauss->end();ig++){
-
-		gauss->GaussPoint(ig);
-
-		GetTriaJacobianDeterminant(&Jdet2d, &xyz_list_tria[0][0], gauss);
-		GetNodalFunctionsP1(&basis[0], gauss);
-
-		pressure_input->GetInputValue(&pressure,gauss);
-		t_pmp=matpar->TMeltingPoint(pressure);
-
-		scalar_ocean=gauss->weight*Jdet2d*rho_water*mixed_layer_capacity*thermal_exchange_velocity*(t_pmp)/(heatcapacity*rho_ice);
-		if(dt) scalar_ocean=dt*scalar_ocean;
-
-		for(i=0;i<numdof;i++) pe->values[i]+=scalar_ocean*basis[i];
-	}
-
-	/*Clean up and return*/
-	delete gauss;
-	return pe;
-}
-/*}}}*/
-/*FUNCTION Penta::CreatePVectorThermalSheet {{{1*/
-ElementVector* Penta::CreatePVectorThermalSheet(void){
-
-	/*Constants*/
-	const int  numdof=NUMVERTICES*NDOF1;
-
-	/*Intermediaries */
-	int        i,j,ig;
-	int        analysis_type;
-	double     xyz_list[NUMVERTICES][3];
-	double     xyz_list_tria[NUMVERTICES2D][3]={0.0};
-	double     Jdet2d,dt;
-	double     rho_ice,heatcapacity,geothermalflux_value;
-	double     basalfriction,alpha2,vx,vy;
-	double     basis[NUMVERTICES];
-	double     scalar;
 	Friction*  friction=NULL;
 	GaussPenta* gauss=NULL;
@@ -4150,14 +3854,245 @@
 		GetNodalFunctionsP1(&basis[0], gauss);
 
-			geothermalflux_input->GetInputValue(&geothermalflux_value,gauss);
-			friction->GetAlpha2(&alpha2,gauss,VxEnum,VyEnum,VzEnum);
-			vx_input->GetInputValue(&vx,gauss);
-			vy_input->GetInputValue(&vy,gauss);
-			basalfriction=alpha2*(pow(vx,2.0)+pow(vy,2.0));
-
-			scalar=gauss->weight*Jdet2d*(basalfriction+geothermalflux_value)/(heatcapacity*rho_ice);
-			if(dt) scalar=dt*scalar;
-
-			for(i=0;i<numdof;i++) pe->values[i]+=scalar*basis[i];
+		geothermalflux_input->GetInputValue(&geothermalflux_value,gauss);
+		friction->GetAlpha2(&alpha2,gauss,VxEnum,VyEnum,VzEnum);
+		vx_input->GetInputValue(&vx,gauss);
+		vy_input->GetInputValue(&vy,gauss);
+		basalfriction=alpha2*(pow(vx,2.0)+pow(vy,2.0));
+		
+		scalar=gauss->weight*Jdet2d*(basalfriction+geothermalflux_value)/(rho_ice);
+		if(dt) scalar=dt*scalar;
+
+		for(i=0;i<numdof;i++) pe->values[i]+=scalar*basis[i];
+	}
+
+	/*Clean up and return*/
+	delete gauss;
+	delete friction;
+	return pe;
+}
+/*}}}*/
+/*FUNCTION Penta::CreatePVectorMelting {{{1*/
+ElementVector* Penta::CreatePVectorMelting(void){
+	return NULL;
+}
+/*}}}*/
+/*FUNCTION Penta::CreatePVectorThermal {{{1*/
+ElementVector* Penta::CreatePVectorThermal(void){
+
+	/*compute all load vectors for this element*/
+	ElementVector* pe1=CreatePVectorThermalVolume();
+	ElementVector* pe2=CreatePVectorThermalSheet();
+	ElementVector* pe3=CreatePVectorThermalShelf();
+	ElementVector* pe =new ElementVector(pe1,pe2,pe3);
+
+	/*clean-up and return*/
+	delete pe1;
+	delete pe2;
+	delete pe3;
+	return pe;
+}
+/*}}}*/
+/*FUNCTION Penta::CreatePVectorThermalVolume {{{1*/
+ElementVector* Penta::CreatePVectorThermalVolume(void){
+
+	/*Constants*/
+	const int  numdof=NUMVERTICES*NDOF1;
+
+	/*Intermediaries*/
+	int    i,j,ig,found=0;
+	int    friction_type,stabilization;
+	double Jdet,phi,dt;
+	double rho_ice,heatcapacity;
+	double thermalconductivity;
+	double viscosity,temperature;
+	double tau_parameter,diameter;
+	double u,v,w;
+	double scalar_def,scalar_transient;
+	double temperature_list[NUMVERTICES];
+	double xyz_list[NUMVERTICES][3];
+	double L[numdof];
+	double dbasis[3][6];
+	double epsilon[6];
+	GaussPenta *gauss=NULL;
+
+	/*Initialize Element vector*/
+	ElementVector* pe=new ElementVector(nodes,NUMVERTICES,this->parameters);
+
+	/*Retrieve all inputs and parameters*/
+	GetVerticesCoordinates(&xyz_list[0][0], nodes, NUMVERTICES);
+	rho_ice=matpar->GetRhoIce();
+	heatcapacity=matpar->GetHeatCapacity();
+	thermalconductivity=matpar->GetThermalConductivity();
+	this->parameters->FindParam(&dt,TimesteppingTimeStepEnum);
+	this->parameters->FindParam(&stabilization,ThermalStabilizationEnum);
+	Input* vx_input=inputs->GetInput(VxEnum); _assert_(vx_input);
+	Input* vy_input=inputs->GetInput(VyEnum); _assert_(vy_input);
+	Input* vz_input=inputs->GetInput(VzEnum); _assert_(vz_input);
+	Input* temperature_input=NULL;
+	if (dt) temperature_input=inputs->GetInput(TemperatureEnum); _assert_(inputs);
+	if (stabilization==2) diameter=MinEdgeLength(xyz_list);
+
+	/* Start  looping on the number of gaussian points: */
+	gauss=new GaussPenta(2,3);
+	for (ig=gauss->begin();ig<gauss->end();ig++){
+
+		gauss->GaussPoint(ig);
+
+		GetJacobianDeterminant(&Jdet, &xyz_list[0][0],gauss);
+		GetNodalFunctionsP1(&L[0], gauss);
+
+		this->GetStrainRate3d(&epsilon[0],&xyz_list[0][0],gauss,vx_input,vy_input,vz_input);
+		matice->GetViscosity3dStokes(&viscosity,&epsilon[0]);
+		GetPhi(&phi, &epsilon[0], viscosity);
+
+		scalar_def=phi/(rho_ice*heatcapacity)*Jdet*gauss->weight;
+		if(dt) scalar_def=scalar_def*dt;
+
+		for(i=0;i<NUMVERTICES;i++)  pe->values[i]+=scalar_def*L[i];
+
+		/* Build transient now */
+		if(dt){
+			temperature_input->GetInputValue(&temperature, gauss);
+			scalar_transient=temperature*Jdet*gauss->weight;
+			for(i=0;i<NUMVERTICES;i++)  pe->values[i]+=scalar_transient*L[i];
+		}
+
+		if(stabilization==2){
+			GetNodalFunctionsP1Derivatives(&dbasis[0][0],&xyz_list[0][0], gauss);
+
+			vx_input->GetInputValue(&u, gauss);
+			vy_input->GetInputValue(&v, gauss);
+			vz_input->GetInputValue(&w, gauss);
+
+			tau_parameter=GetStabilizationParameter(u,v,w,diameter,rho_ice,heatcapacity,thermalconductivity);
+
+			for(i=0;i<NUMVERTICES;i++)  pe->values[i]+=tau_parameter*scalar_def*(u*dbasis[0][i]+v*dbasis[1][i]+w*dbasis[2][i]);
+			if(dt){
+				for(i=0;i<NUMVERTICES;i++)  pe->values[i]+=tau_parameter*scalar_transient*(u*dbasis[0][i]+v*dbasis[1][i]+w*dbasis[2][i]);
+			}
+		}
+	}
+
+	/*Clean up and return*/
+	delete gauss;
+	return pe;
+}
+/*}}}*/
+/*FUNCTION Penta::CreatePVectorThermalShelf {{{1*/
+ElementVector* Penta::CreatePVectorThermalShelf(void){
+
+	/*Constants*/
+	const int  numdof=NUMVERTICES*NDOF1;
+
+	/*Intermediaries */
+	int        i,j,ig;
+	double     Jdet2d;
+	double     mixed_layer_capacity,thermal_exchange_velocity;
+	double     rho_ice,rho_water,pressure,dt,scalar_ocean;
+	double     heatcapacity,t_pmp;
+	double     xyz_list[NUMVERTICES][3];
+	double     xyz_list_tria[NUMVERTICES2D][3];
+	double     basis[NUMVERTICES];
+	GaussPenta* gauss=NULL;
+
+	/* Ice/ocean heat exchange flux on ice shelf base */
+	if (!IsOnBed() || !IsFloating()) return NULL;
+
+	/*Initialize Element vector*/
+	ElementVector* pe=new ElementVector(nodes,NUMVERTICES,this->parameters);
+
+	/*Retrieve all inputs and parameters*/
+	GetVerticesCoordinates(&xyz_list[0][0], nodes, NUMVERTICES);
+	for(i=0;i<NUMVERTICES2D;i++) for(j=0;j<3;j++) xyz_list_tria[i][j]=xyz_list[i][j];
+	mixed_layer_capacity=matpar->GetMixedLayerCapacity();
+	thermal_exchange_velocity=matpar->GetThermalExchangeVelocity();
+	rho_water=matpar->GetRhoWater();
+	rho_ice=matpar->GetRhoIce();
+	heatcapacity=matpar->GetHeatCapacity();
+	this->parameters->FindParam(&dt,TimesteppingTimeStepEnum);
+	Input* pressure_input=inputs->GetInput(PressureEnum); _assert_(pressure_input);
+
+	/* Start looping on the number of gauss 2d (nodes on the bedrock) */
+	gauss=new GaussPenta(0,1,2,2);
+	for(ig=gauss->begin();ig<gauss->end();ig++){
+
+		gauss->GaussPoint(ig);
+
+		GetTriaJacobianDeterminant(&Jdet2d, &xyz_list_tria[0][0], gauss);
+		GetNodalFunctionsP1(&basis[0], gauss);
+
+		pressure_input->GetInputValue(&pressure,gauss);
+		t_pmp=matpar->TMeltingPoint(pressure);
+
+		scalar_ocean=gauss->weight*Jdet2d*rho_water*mixed_layer_capacity*thermal_exchange_velocity*(t_pmp)/(heatcapacity*rho_ice);
+		if(dt) scalar_ocean=dt*scalar_ocean;
+
+		for(i=0;i<numdof;i++) pe->values[i]+=scalar_ocean*basis[i];
+	}
+
+	/*Clean up and return*/
+	delete gauss;
+	return pe;
+}
+/*}}}*/
+/*FUNCTION Penta::CreatePVectorThermalSheet {{{1*/
+ElementVector* Penta::CreatePVectorThermalSheet(void){
+
+	/*Constants*/
+	const int  numdof=NUMVERTICES*NDOF1;
+
+	/*Intermediaries */
+	int        i,j,ig;
+	int        analysis_type;
+	double     xyz_list[NUMVERTICES][3];
+	double     xyz_list_tria[NUMVERTICES2D][3]={0.0};
+	double     Jdet2d,dt;
+	double     rho_ice,heatcapacity,geothermalflux_value;
+	double     basalfriction,alpha2,vx,vy;
+	double     scalar;
+	double     basis[NUMVERTICES];
+	Friction*  friction=NULL;
+	GaussPenta* gauss=NULL;
+
+	/* Geothermal flux on ice sheet base and basal friction */
+	if (!IsOnBed() || IsFloating()) return NULL;
+
+	/*Initialize Element vector*/
+	ElementVector* pe=new ElementVector(nodes,NUMVERTICES,this->parameters);
+
+	/*Retrieve all inputs and parameters*/
+	GetVerticesCoordinates(&xyz_list[0][0], nodes, NUMVERTICES);
+	for(i=0;i<NUMVERTICES2D;i++) for(j=0;j<2;j++) xyz_list_tria[i][j]=xyz_list[i][j];
+	parameters->FindParam(&analysis_type,AnalysisTypeEnum);
+	rho_ice=matpar->GetRhoIce();
+	heatcapacity=matpar->GetHeatCapacity();
+	this->parameters->FindParam(&dt,TimesteppingTimeStepEnum);
+	Input* vx_input=inputs->GetInput(VxEnum);                         _assert_(vx_input);
+	Input* vy_input=inputs->GetInput(VyEnum);                         _assert_(vy_input);
+	Input* vz_input=inputs->GetInput(VzEnum);                         _assert_(vz_input);
+	Input* geothermalflux_input=inputs->GetInput(BasalforcingsGeothermalfluxEnum); _assert_(geothermalflux_input);
+
+	/*Build frictoin element, needed later: */
+	friction=new Friction("3d",inputs,matpar,analysis_type);
+
+	/* Start looping on the number of gauss 2d (nodes on the bedrock) */
+	gauss=new GaussPenta(0,1,2,2);
+	for(ig=gauss->begin();ig<gauss->end();ig++){
+
+		gauss->GaussPoint(ig);
+
+		GetTriaJacobianDeterminant(&Jdet2d, &xyz_list_tria[0][0], gauss);
+		GetNodalFunctionsP1(&basis[0], gauss);
+
+		geothermalflux_input->GetInputValue(&geothermalflux_value,gauss);
+		friction->GetAlpha2(&alpha2,gauss,VxEnum,VyEnum,VzEnum);
+		vx_input->GetInputValue(&vx,gauss);
+		vy_input->GetInputValue(&vy,gauss);
+		basalfriction=alpha2*(pow(vx,2.0)+pow(vy,2.0));
+		
+		scalar=gauss->weight*Jdet2d*(basalfriction+geothermalflux_value)/(heatcapacity*rho_ice);
+		if(dt) scalar=dt*scalar;
+
+		for(i=0;i<numdof;i++) pe->values[i]+=scalar*basis[i];
 	}
 
@@ -4337,9 +4272,4 @@
 		/*Convert enthalpy into temperature and water fraction*/
 		for(i=0;i<numdof;i++) matpar->EnthalpyToThermal(&temperatures[i],&waterfraction[i],values[i],pressure[i]);
-		for(i=0;i<numdof;i++){
-			matpar->EnthalpyToThermal(&temperatures[i],&waterfraction[i],values[i],pressure[i]);
-			if(waterfraction[i]<0) _error_("Negative water fraction found in solution vector");
-			//if(waterfraction[i]>1) _error_("Water fraction >1 found in solution vector");
-		}
 			
 		this->inputs->AddInput(new PentaP1Input(EnthalpyEnum,values));
@@ -7389,188 +7319,4 @@
 }
 /*}}}*/
-/*FUNCTION Penta::CreateJacobianDiagnosticHoriz{{{1*/
-ElementMatrix* Penta::CreateJacobianDiagnosticHoriz(void){
-
-	int approximation;
-	inputs->GetInputValue(&approximation,ApproximationEnum);
-
-	switch(approximation){
-		case MacAyealApproximationEnum:
-			return CreateJacobianDiagnosticMacayeal2d();
-		case PattynApproximationEnum:
-			return CreateJacobianDiagnosticPattyn();
-		case StokesApproximationEnum:
-			return CreateJacobianDiagnosticStokes();
-		case NoneApproximationEnum:
-			return NULL;
-		default:
-			_error_("Approximation %s not supported yet",EnumToStringx(approximation));
-	}
-}
-/*}}}*/
-/*FUNCTION Penta::CreateJacobianDiagnosticMacayeal2d{{{1*/
-ElementMatrix* Penta::CreateJacobianDiagnosticMacayeal2d(void){
-
-	/*Figure out if this penta is collapsed. If so, then bailout, except if it is at the 
-	  bedrock, in which case we spawn a tria element using the 3 first nodes, and use it to build 
-	  the stiffness matrix. */
-	if (!IsOnBed()) return NULL;
-
-	/*Depth Averaging B*/
-	this->InputDepthAverageAtBase(MaterialsRheologyBEnum,MaterialsRheologyBbarEnum,MaterialsEnum);
-
-	/*Call Tria function*/
-	Tria* tria=(Tria*)SpawnTria(0,1,2); //nodes 0, 1 and 2 make the new tria.
-	ElementMatrix* Ke=tria->CreateJacobianDiagnosticMacayeal();
-	delete tria->matice; delete tria;
-
-	/*Delete B averaged*/
-	this->matice->inputs->DeleteInput(MaterialsRheologyBbarEnum);
-
-	/*clean up and return*/
-	return Ke;
-}
-/*}}}*/
-/*FUNCTION Penta::CreateJacobianDiagnosticPattyn{{{1*/
-ElementMatrix* Penta::CreateJacobianDiagnosticPattyn(void){
-
-	/*Constants*/
-	const int    numdof=NDOF2*NUMVERTICES;
-
-	/*Intermediaries */
-	int        i,j,ig;
-	double     xyz_list[NUMVERTICES][3];
-	double     Jdet;
-	double     eps1dotdphii,eps1dotdphij;
-	double     eps2dotdphii,eps2dotdphij;
-	double     mu_prime;
-	double     epsilon[5]; /* epsilon=[exx,eyy,exy,exz,eyz];*/
-	double     eps1[3],eps2[3];
-	double     phi[NUMVERTICES];
-	double     dphi[3][NUMVERTICES];
-	GaussPenta *gauss=NULL;
-
-	/*Initialize Jacobian with regular Pattyn (first part of the Gateau derivative)*/
-	ElementMatrix* Ke=CreateKMatrixDiagnosticPattyn();
-
-	/*Retrieve all inputs and parameters*/
-	GetVerticesCoordinates(&xyz_list[0][0], nodes, NUMVERTICES);
-	Input* vx_input=inputs->GetInput(VxEnum);       _assert_(vx_input);
-	Input* vy_input=inputs->GetInput(VyEnum);       _assert_(vy_input);
-
-	/* Start  looping on the number of gaussian points: */
-	gauss=new GaussPenta(5,5);
-	for (ig=gauss->begin();ig<gauss->end();ig++){
-
-		gauss->GaussPoint(ig);
-
-		GetJacobianDeterminant(&Jdet, &xyz_list[0][0],gauss);
-		GetNodalFunctionsP1Derivatives(&dphi[0][0],&xyz_list[0][0],gauss);
-
-		this->GetStrainRate3dPattyn(&epsilon[0],&xyz_list[0][0],gauss,vx_input,vy_input);
-		matice->GetViscosityDerivativeEpsSquare(&mu_prime,&epsilon[0]);
-		eps1[0]=2*epsilon[0]+epsilon[1];   eps2[0]=epsilon[2];
-		eps1[1]=epsilon[2];                eps2[1]=epsilon[0]+2*epsilon[1];
-		eps1[2]=epsilon[3];                eps2[2]=epsilon[4];
-
-		for(i=0;i<6;i++){
-			for(j=0;j<6;j++){
-				eps1dotdphii=eps1[0]*dphi[0][i]+eps1[1]*dphi[1][i]+eps1[2]*dphi[2][i];
-				eps1dotdphij=eps1[0]*dphi[0][j]+eps1[1]*dphi[1][j]+eps1[2]*dphi[2][j];
-				eps2dotdphii=eps2[0]*dphi[0][i]+eps2[1]*dphi[1][i]+eps2[2]*dphi[2][i];
-				eps2dotdphij=eps2[0]*dphi[0][j]+eps2[1]*dphi[1][j]+eps2[2]*dphi[2][j];
-
-				Ke->values[12*(2*i+0)+2*j+0]+=gauss->weight*Jdet*2*mu_prime*eps1dotdphij*eps1dotdphii;
-				Ke->values[12*(2*i+0)+2*j+1]+=gauss->weight*Jdet*2*mu_prime*eps2dotdphij*eps1dotdphii;
-				Ke->values[12*(2*i+1)+2*j+0]+=gauss->weight*Jdet*2*mu_prime*eps1dotdphij*eps2dotdphii;
-				Ke->values[12*(2*i+1)+2*j+1]+=gauss->weight*Jdet*2*mu_prime*eps2dotdphij*eps2dotdphii;
-			}
-		}
-	}
-
-	/*Transform Coordinate System*/
-	TransformStiffnessMatrixCoord(Ke,nodes,NUMVERTICES,XYEnum);
-
-	/*Clean up and return*/
-	delete gauss;
-	return Ke;
-}
-/*}}}*/
-/*FUNCTION Penta::CreateJacobianDiagnosticStokes{{{1*/
-ElementMatrix* Penta::CreateJacobianDiagnosticStokes(void){
-
-	/*Constants*/
-	const int    numdof=NDOF4*NUMVERTICES;
-
-	/*Intermediaries */
-	int        i,j,ig;
-	double     xyz_list[NUMVERTICES][3];
-	double     Jdet;
-	double     eps1dotdphii,eps1dotdphij;
-	double     eps2dotdphii,eps2dotdphij;
-	double     eps3dotdphii,eps3dotdphij;
-	double     mu_prime;
-	double     epsilon[5]; /* epsilon=[exx,eyy,exy,exz,eyz];*/
-	double     eps1[3],eps2[3],eps3[3];
-	double     phi[NUMVERTICES];
-	double     dphi[3][NUMVERTICES];
-	GaussPenta *gauss=NULL;
-
-	/*Initialize Jacobian with regular Stokes (first part of the Gateau derivative)*/
-	ElementMatrix* Ke=CreateKMatrixDiagnosticStokes();
-
-	/*Retrieve all inputs and parameters*/
-	GetVerticesCoordinates(&xyz_list[0][0], nodes, NUMVERTICES);
-	Input* vx_input=inputs->GetInput(VxEnum);       _assert_(vx_input);
-	Input* vy_input=inputs->GetInput(VyEnum);       _assert_(vy_input);
-	Input* vz_input=inputs->GetInput(VzEnum);       _assert_(vz_input);
-
-	/* Start  looping on the number of gaussian points: */
-	gauss=new GaussPenta(5,5);
-	for (ig=gauss->begin();ig<gauss->end();ig++){
-
-		gauss->GaussPoint(ig);
-
-		GetJacobianDeterminant(&Jdet, &xyz_list[0][0],gauss);
-		GetNodalFunctionsP1Derivatives(&dphi[0][0],&xyz_list[0][0],gauss);
-
-		this->GetStrainRate3dPattyn(&epsilon[0],&xyz_list[0][0],gauss,vx_input,vy_input);
-		matice->GetViscosityDerivativeEpsSquare(&mu_prime,&epsilon[0]);
-		eps1[0]=epsilon[0];   eps2[0]=epsilon[2];   eps3[0]=epsilon[3];
-		eps1[1]=epsilon[2];   eps2[1]=epsilon[1];   eps3[1]=epsilon[4];
-		eps1[2]=epsilon[3];   eps2[2]=epsilon[4];   eps3[2]= -epsilon[0] -epsilon[1];
-
-		for(i=0;i<6;i++){
-			for(j=0;j<6;j++){
-				eps1dotdphii=eps1[0]*dphi[0][i]+eps1[1]*dphi[1][i]+eps1[2]*dphi[2][i];
-				eps1dotdphij=eps1[0]*dphi[0][j]+eps1[1]*dphi[1][j]+eps1[2]*dphi[2][j];
-				eps2dotdphii=eps2[0]*dphi[0][i]+eps2[1]*dphi[1][i]+eps2[2]*dphi[2][i];
-				eps2dotdphij=eps2[0]*dphi[0][j]+eps2[1]*dphi[1][j]+eps2[2]*dphi[2][j];
-				eps3dotdphii=eps3[0]*dphi[0][i]+eps3[1]*dphi[1][i]+eps3[2]*dphi[2][i];
-				eps3dotdphij=eps3[0]*dphi[0][j]+eps3[1]*dphi[1][j]+eps3[2]*dphi[2][j];
-
-				Ke->values[numdof*(4*i+0)+4*j+0]+=gauss->weight*Jdet*2*mu_prime*eps1dotdphij*eps1dotdphii;
-				Ke->values[numdof*(4*i+0)+4*j+1]+=gauss->weight*Jdet*2*mu_prime*eps2dotdphij*eps1dotdphii;
-				Ke->values[numdof*(4*i+0)+4*j+2]+=gauss->weight*Jdet*2*mu_prime*eps3dotdphij*eps1dotdphii;
-
-				Ke->values[numdof*(4*i+1)+4*j+0]+=gauss->weight*Jdet*2*mu_prime*eps1dotdphij*eps2dotdphii;
-				Ke->values[numdof*(4*i+1)+4*j+1]+=gauss->weight*Jdet*2*mu_prime*eps2dotdphij*eps2dotdphii;
-				Ke->values[numdof*(4*i+1)+4*j+2]+=gauss->weight*Jdet*2*mu_prime*eps3dotdphij*eps2dotdphii;
-
-				Ke->values[numdof*(4*i+2)+4*j+0]+=gauss->weight*Jdet*2*mu_prime*eps1dotdphij*eps3dotdphii;
-				Ke->values[numdof*(4*i+2)+4*j+1]+=gauss->weight*Jdet*2*mu_prime*eps2dotdphij*eps3dotdphii;
-				Ke->values[numdof*(4*i+2)+4*j+2]+=gauss->weight*Jdet*2*mu_prime*eps3dotdphij*eps3dotdphii;
-			}
-		}
-	}
-
-	/*Transform Coordinate System*/
-	TransformStiffnessMatrixCoord(Ke,nodes,NUMVERTICES,XYZPEnum);
-
-	/*Clean up and return*/
-	delete gauss;
-	return Ke;
-}
-/*}}}*/
 /*FUNCTION Penta::GetSolutionFromInputsDiagnosticHoriz{{{1*/
 void  Penta::GetSolutionFromInputsDiagnosticHoriz(Vec solution){
Index: /issm/trunk-jpl-damage/src/c/objects/Elements/Penta.h
===================================================================
--- /issm/trunk-jpl-damage/src/c/objects/Elements/Penta.h	(revision 11424)
+++ /issm/trunk-jpl-damage/src/c/objects/Elements/Penta.h	(revision 11425)
@@ -88,5 +88,4 @@
 		void   CreateKMatrix(Mat Kff, Mat Kfs,Vec df);
 		void   CreatePVector(Vec pf);
-		void   CreateJacobianMatrix(Mat Jff);
 		void   DeleteResults(void);
 		int    GetNodeIndex(Node* node);
@@ -180,5 +179,5 @@
 		void	  GetPhi(double* phi, double*  epsilon, double viscosity);
 		void	  GetSolutionFromInputsEnthalpy(Vec solutiong);
-		double  GetStabilizationParameter(double u, double v, double w, double diameter, double kappa);
+		double  GetStabilizationParameter(double u, double v, double w, double diameter, double rho_ice, double heatcapacity, double thermalconductivity);
 		void    GetStrainRate3dPattyn(double* epsilon,double* xyz_list, GaussPenta* gauss, Input* vx_input, Input* vy_input);
 		void    GetStrainRate3d(double* epsilon,double* xyz_list, GaussPenta* gauss, Input* vx_input, Input* vy_input, Input* vz_input);
@@ -232,8 +231,4 @@
 		ElementMatrix* CreateKMatrixDiagnosticVertVolume(void);
 		ElementMatrix* CreateKMatrixDiagnosticVertSurface(void);
-		ElementMatrix* CreateJacobianDiagnosticHoriz(void);
-		ElementMatrix* CreateJacobianDiagnosticMacayeal2d(void);
-		ElementMatrix* CreateJacobianDiagnosticPattyn(void);
-		ElementMatrix* CreateJacobianDiagnosticStokes(void);
 		void           InputUpdateFromSolutionDiagnosticHoriz( double* solutiong);
 		void           InputUpdateFromSolutionDiagnosticMacAyeal( double* solutiong);
Index: /issm/trunk-jpl-damage/src/c/objects/Elements/Tria.cpp
===================================================================
--- /issm/trunk-jpl-damage/src/c/objects/Elements/Tria.cpp	(revision 11424)
+++ /issm/trunk-jpl-damage/src/c/objects/Elements/Tria.cpp	(revision 11425)
@@ -886,37 +886,4 @@
 	delete gauss;
 	return pe;
-}
-/*}}}*/
-/*FUNCTION Tria::CreateJacobianMatrix{{{1*/
-void  Tria::CreateJacobianMatrix(Mat Jff){
-
-	/*retrieve parameters: */
-	ElementMatrix* Ke=NULL;
-	int analysis_type;
-	parameters->FindParam(&analysis_type,AnalysisTypeEnum);
-
-	/*Checks in debugging {{{2*/
-	_assert_(this->nodes && this->matice && this->matpar && this->parameters && this->inputs);
-	/*}}}*/
-
-	/*Skip if water element*/
-	if(IsOnWater()) return;
-
-	/*Just branch to the correct element stiffness matrix generator, according to the type of analysis we are carrying out: */
-	switch(analysis_type){
-#ifdef _HAVE_DIAGNOSTIC_
-		case DiagnosticHorizAnalysisEnum:
-			Ke=CreateJacobianDiagnosticMacayeal();
-			break;
-#endif
-		default:
-			_error_("analysis %i (%s) not supported yet",analysis_type,EnumToStringx(analysis_type));
-	}
-
-	/*Add to global matrix*/
-	if(Ke){
-		Ke->AddToGlobal(Jff);
-		delete Ke;
-	}
 }
 /*}}}*/
@@ -3064,70 +3031,4 @@
 }
 /*}}}*/
-/*FUNCTION Tria::CreateJacobianDiagnosticPattyn{{{1*/
-ElementMatrix* Tria::CreateJacobianDiagnosticMacayeal(void){
-
-	/*Constants*/
-	const int    numdof=NDOF2*NUMVERTICES;
-
-	/*Intermediaries */
-	int        i,j,ig;
-	double     xyz_list[NUMVERTICES][3];
-	double     Jdet,thickness;
-	double     eps1dotdphii,eps1dotdphij;
-	double     eps2dotdphii,eps2dotdphij;
-	double     mu_prime;
-	double     epsilon[3];/* epsilon=[exx,eyy,exy];*/
-	double     eps1[2],eps2[2];
-	double     phi[NUMVERTICES];
-	double     dphi[2][NUMVERTICES];
-	GaussTria *gauss=NULL;
-
-	/*Initialize Jacobian with regular MacAyeal (first part of the Gateau derivative)*/
-	ElementMatrix* Ke=CreateKMatrixDiagnosticMacAyeal();
-
-	/*Retrieve all inputs and parameters*/
-	GetVerticesCoordinates(&xyz_list[0][0], nodes, NUMVERTICES);
-	Input* vx_input=inputs->GetInput(VxEnum);       _assert_(vx_input);
-	Input* vy_input=inputs->GetInput(VyEnum);       _assert_(vy_input);
-	Input* thickness_input=inputs->GetInput(ThicknessEnum); _assert_(thickness_input);
-
-	/* Start  looping on the number of gaussian points: */
-	gauss=new GaussTria(2);
-	for (ig=gauss->begin();ig<gauss->end();ig++){
-
-		gauss->GaussPoint(ig);
-
-		GetJacobianDeterminant2d(&Jdet, &xyz_list[0][0],gauss);
-		GetNodalFunctionsDerivatives(&dphi[0][0],&xyz_list[0][0],gauss);
-
-		thickness_input->GetInputValue(&thickness, gauss);
-		this->GetStrainRate2d(&epsilon[0],&xyz_list[0][0],gauss,vx_input,vy_input);
-		matice->GetViscosityDerivativeEpsSquare(&mu_prime,&epsilon[0]);
-		eps1[0]=2*epsilon[0]+epsilon[1];   eps2[0]=epsilon[2];
-		eps1[1]=epsilon[2];                eps2[1]=epsilon[0]+2*epsilon[1];
-
-		for(i=0;i<3;i++){
-			for(j=0;j<3;j++){
-				eps1dotdphii=eps1[0]*dphi[0][i]+eps1[1]*dphi[1][i];
-				eps1dotdphij=eps1[0]*dphi[0][j]+eps1[1]*dphi[1][j];
-				eps2dotdphii=eps2[0]*dphi[0][i]+eps2[1]*dphi[1][i];
-				eps2dotdphij=eps2[0]*dphi[0][j]+eps2[1]*dphi[1][j];
-
-				Ke->values[6*(2*i+0)+2*j+0]+=gauss->weight*Jdet*2*mu_prime*thickness*eps1dotdphij*eps1dotdphii;
-				Ke->values[6*(2*i+0)+2*j+1]+=gauss->weight*Jdet*2*mu_prime*thickness*eps2dotdphij*eps1dotdphii;
-				Ke->values[6*(2*i+1)+2*j+0]+=gauss->weight*Jdet*2*mu_prime*thickness*eps1dotdphij*eps2dotdphii;
-				Ke->values[6*(2*i+1)+2*j+1]+=gauss->weight*Jdet*2*mu_prime*thickness*eps2dotdphij*eps2dotdphii;
-			}
-		}
-	}
-
-	/*Transform Coordinate System*/
-	TransformStiffnessMatrixCoord(Ke,nodes,NUMVERTICES,XYEnum);
-
-	/*Clean up and return*/
-	delete gauss;
-	return Ke;
-}
-/*}}}*/
 /*FUNCTION Tria::GetSolutionFromInputsDiagnosticHoriz{{{1*/
 void  Tria::GetSolutionFromInputsDiagnosticHoriz(Vec solution){
@@ -3431,6 +3332,6 @@
 	/*dJ/dalpha = ∂L/∂alpha = ∂J/∂alpha + ∂/∂alpha(KU-F)*/
 
-	/*If on water, grad = 0: (WHY???) */
-	if(IsOnWater()) return; 
+	/*If on water, grad = 0: */
+	if(IsOnWater()) return;
 
 	/*First deal with ∂/∂alpha(KU-F)*/
Index: /issm/trunk-jpl-damage/src/c/objects/Elements/Tria.h
===================================================================
--- /issm/trunk-jpl-damage/src/c/objects/Elements/Tria.h	(revision 11424)
+++ /issm/trunk-jpl-damage/src/c/objects/Elements/Tria.h	(revision 11425)
@@ -84,5 +84,4 @@
 		void   CreateKMatrix(Mat Kff, Mat Kfs,Vec df);
 		void   CreatePVector(Vec pf);
-		void   CreateJacobianMatrix(Mat Jff);
 		int    GetNodeIndex(Node* node);
 		int    Sid();
@@ -141,5 +140,4 @@
 		#ifdef _HAVE_CONTROL_
 		double DragCoefficientAbsGradient(bool process_units,int weight_index);
-		void   GradientIndexing(int* indexing,int control_index);
 		void   Gradj(Vec gradient,int control_type);
 		void   GradjBGradient(Vec gradient,int weight_index);
@@ -208,5 +206,4 @@
 		ElementVector* CreatePVectorDiagnosticMacAyeal(void);
 		ElementVector* CreatePVectorDiagnosticHutter(void);
-		ElementMatrix* CreateJacobianDiagnosticMacayeal(void);
 		void	  GetSolutionFromInputsDiagnosticHoriz(Vec solution);
 		void	  GetSolutionFromInputsDiagnosticHutter(Vec solution);
Index: /issm/trunk-jpl-damage/src/c/objects/KML/KML_File.cpp
===================================================================
--- /issm/trunk-jpl-damage/src/c/objects/KML/KML_File.cpp	(revision 11424)
+++ /issm/trunk-jpl-damage/src/c/objects/KML/KML_File.cpp	(revision 11425)
@@ -24,5 +24,5 @@
 KML_File::KML_File(){
 
-	;
+	kmlobj    =new DataSet;
 
 }
@@ -31,5 +31,8 @@
 KML_File::~KML_File(){
 
-	;
+	if (kmlobj) {
+		delete kmlobj;
+		kmlobj    =NULL;
+	}
 
 }
@@ -45,4 +48,6 @@
 	KML_Object::Echo();
 
+	_printf_(flag,"        kmlobj: (size=%d)\n" ,kmlobj->Size());
+
 	return;
 }
@@ -61,4 +66,6 @@
 void  KML_File::DeepEcho(const char* indent){
 
+	int   i;
+	char  indent2[81];
 	bool  flag=true;
 
@@ -66,4 +73,19 @@
 	KML_Object::DeepEcho(indent);
 
+/*  loop over the kml objects for the file  */
+
+	memcpy(indent2,indent,(strlen(indent)+1)*sizeof(char));
+
+	strcat(indent2,"  ");
+
+	if (kmlobj->Size())
+		for (i=0; i<kmlobj->Size(); i++) {
+			_printf_(flag,"%s        kmlobj: -------- begin [%d] --------\n" ,indent,i);
+			((KML_Object *)kmlobj->GetObjectByOffset(i))->DeepEcho(indent2);
+			_printf_(flag,"%s        kmlobj: --------  end  [%d] --------\n" ,indent,i);
+		}
+	else
+		_printf_(flag,"%s        kmlobj: [empty]\n"    ,indent);
+
 	return;
 }
@@ -71,4 +93,7 @@
 /*FUNCTION KML_File::Write {{{1*/
 void  KML_File::Write(FILE* filout,const char* indent){
+
+	int   i;
+	char  indent2[81];
 
 	fprintf(filout,"%s<kml",indent);
@@ -78,4 +103,13 @@
 
 	KML_Object::Write(filout,indent);
+
+/*  loop over the kml objects for the file  */
+
+	memcpy(indent2,indent,(strlen(indent)+1)*sizeof(char));
+
+	strcat(indent2,"  ");
+
+	for (i=0; i<kmlobj->Size(); i++)
+		((KML_Object *)kmlobj->GetObjectByOffset(i))->Write(filout,indent2);
 
 	fprintf(filout,"%s</kml>\n",indent);
@@ -111,4 +145,106 @@
 			_error_("KML_File::Read -- Unexpected field \"%s\".\n",kstri);
 
+		else if (!strncmp(kstri,"<Placemark",10)) {
+			kobj=(KML_Object*)new KML_Placemark();
+			kobj->Read(fid,kstri);
+			kmlobj    ->AddObject((Object*)kobj);
+		}
+
+		else if (!strncmp(kstri,"<Folder", 7)) {
+			kobj=(KML_Object*)new KML_Folder();
+			kobj->Read(fid,kstri);
+			kmlobj    ->AddObject((Object*)kobj);
+		}
+
+		else if (!strncmp(kstri,"<Document", 9)) {
+			kobj=(KML_Object*)new KML_Document();
+			kobj->Read(fid,kstri);
+			kmlobj    ->AddObject((Object*)kobj);
+		}
+
+		else if (!strncmp(kstri,"<GroundOverlay",14)) {
+			kobj=(KML_Object*)new KML_GroundOverlay();
+			kobj->Read(fid,kstri);
+			kmlobj    ->AddObject((Object*)kobj);
+		}
+
+		else if (!strncmp(kstri,"<LatLonBox",10)) {
+			kobj=(KML_Object*)new KML_LatLonBox();
+			kobj->Read(fid,kstri);
+			kmlobj    ->AddObject((Object*)kobj);
+		}
+
+		else if (!strncmp(kstri,"<Icon", 5)) {
+			kobj=(KML_Object*)new KML_Icon();
+			kobj->Read(fid,kstri);
+			kmlobj    ->AddObject((Object*)kobj);
+		}
+
+		else if (!strncmp(kstri,"<Point", 6)) {
+			kobj=(KML_Object*)new KML_Point();
+			kobj->Read(fid,kstri);
+			kmlobj    ->AddObject((Object*)kobj);
+		}
+
+		else if (!strncmp(kstri,"<LineString",11)) {
+			kobj=(KML_Object*)new KML_LineString();
+			kobj->Read(fid,kstri);
+			kmlobj    ->AddObject((Object*)kobj);
+		}
+
+		else if (!strncmp(kstri,"<LinearRing",11)) {
+			kobj=(KML_Object*)new KML_LinearRing();
+			kobj->Read(fid,kstri);
+			kmlobj    ->AddObject((Object*)kobj);
+		}
+
+		else if (!strncmp(kstri,"<Polygon", 8)) {
+			kobj=(KML_Object*)new KML_Polygon();
+			kobj->Read(fid,kstri);
+			kmlobj    ->AddObject((Object*)kobj);
+		}
+
+		else if (!strncmp(kstri,"<MultiGeometry",14)) {
+			kobj=(KML_Object*)new KML_MultiGeometry();
+			kobj->Read(fid,kstri);
+			kmlobj    ->AddObject((Object*)kobj);
+		}
+
+//		else if (!strncmp(kstri,"<IconStyle",10)) {
+//			kobj=(KML_Object*)new KML_IconStyle();
+//			kobj->Read(fid,kstri);
+//			kmlobj    ->AddObject((Object*)kobj);
+//		}
+
+//		else if (!strncmp(kstri,"<LabelStyle",11)) {
+//			kobj=(KML_Object*)new KML_LabelStyle();
+//			kobj->Read(fid,kstri);
+//			kmlobj    ->AddObject((Object*)kobj);
+//		}
+
+		else if (!strncmp(kstri,"<LineStyle",10)) {
+			kobj=(KML_Object*)new KML_LineStyle();
+			kobj->Read(fid,kstri);
+			kmlobj    ->AddObject((Object*)kobj);
+		}
+
+		else if (!strncmp(kstri,"<PolyStyle",10)) {
+			kobj=(KML_Object*)new KML_PolyStyle();
+			kobj->Read(fid,kstri);
+			kmlobj    ->AddObject((Object*)kobj);
+		}
+
+//		else if (!strncmp(kstri,"<BalloonStyle",13)) {
+//			kobj=(KML_Object*)new KML_BalloonStyle();
+//			kobj->Read(fid,kstri);
+//			kmlobj    ->AddObject((Object*)kobj);
+//		}
+
+//		else if (!strncmp(kstri,"<ListStyle",10)) {
+//			kobj=(KML_Object*)new KML_ListStyle();
+//			kobj->Read(fid,kstri);
+//			kmlobj    ->AddObject((Object*)kobj);
+//		}
+
 		else if (!strncmp(kstri,"<",1))
 			KML_Object::Read(fid,kstri);
Index: /issm/trunk-jpl-damage/src/c/objects/KML/KML_File.h
===================================================================
--- /issm/trunk-jpl-damage/src/c/objects/KML/KML_File.h	(revision 11424)
+++ /issm/trunk-jpl-damage/src/c/objects/KML/KML_File.h	(revision 11425)
@@ -19,4 +19,6 @@
 
 	public:
+
+		DataSet* kmlobj;
 
 		/*KML_File constructors, destructors {{{1*/
Index: /issm/trunk-jpl-damage/src/c/objects/KML/KML_Object.cpp
===================================================================
--- /issm/trunk-jpl-damage/src/c/objects/KML/KML_Object.cpp	(revision 11424)
+++ /issm/trunk-jpl-damage/src/c/objects/KML/KML_Object.cpp	(revision 11425)
@@ -26,5 +26,4 @@
 	attrib    =new DataSet;
 	commnt    =new DataSet;
-	kmlobj    =new DataSet;
 
 }
@@ -41,8 +40,4 @@
 		commnt    =NULL;
 	}
-	if (kmlobj) {
-		delete kmlobj;
-		kmlobj    =NULL;
-	}
 
 }
@@ -57,5 +52,4 @@
 	_printf_(flag,"        attrib: (size=%d)\n" ,attrib->Size());
 	_printf_(flag,"        commnt: (size=%d)\n" ,commnt->Size());
-	_printf_(flag,"        kmlobj: (size=%d)\n" ,kmlobj->Size());
 
 	return;
@@ -76,5 +70,4 @@
 
 	int   i;
-	char  indent2[81];
 	bool  flag=true;
 
@@ -97,18 +90,4 @@
 		_printf_(flag,"%s        commnt: [empty]\n"    ,indent);
 
-/*  loop over the unknown objects for the object  */
-
-	memcpy(indent2,indent,(strlen(indent)+1)*sizeof(char));
-	strcat(indent2,"  ");
-
-	if (kmlobj->Size())
-		for (i=0; i<kmlobj->Size(); i++) {
-            _printf_(flag,"%s        kmlobj: -------- begin [%d] --------\n" ,indent,i);
-			((KML_Unknown *)kmlobj->GetObjectByOffset(i))->DeepEcho(indent2);
-            _printf_(flag,"%s        kmlobj: --------  end  [%d] --------\n" ,indent,i);
-		}
-	else
-		_printf_(flag,"%s        kmlobj: [empty]\n"    ,indent);
-
 	return;
 }
@@ -117,19 +96,8 @@
 void  KML_Object::Write(FILE* filout,const char* indent){
 
-	int   i;
-	char  indent2[81];
-
 //  attributes always written in keyword line of derived classes
 //  comments always written after keyword line of derived classes
 
-/*  loop over the unknown objects for the object  */
-
-	memcpy(indent2,indent,(strlen(indent)+1)*sizeof(char));
-	strcat(indent2,"  ");
-
-	if (kmlobj->Size())
-		for (i=0; i<kmlobj->Size(); i++) {
-			((KML_Unknown *)kmlobj->GetObjectByOffset(i))->Write(filout,indent2);
-		}
+	;
 
 	return;
@@ -138,6 +106,4 @@
 /*FUNCTION KML_Object::Read {{{1*/
 void  KML_Object::Read(FILE* fid,char* kstr){
-
-	KML_Object*  kobj;
 
 /*  process field within opening and closing tags  */
@@ -150,113 +116,8 @@
 		_error_("KML_Object::Read -- Unexpected field \"%s\".\n",kstr);
 
-	else if (!strncmp(kstr,"<Placemark",10)) {
-		kobj=(KML_Object*)new KML_Placemark();
-		kobj->Read(fid,kstr);
-		kmlobj    ->AddObject((Object*)kobj);
-	}
-
-	else if (!strncmp(kstr,"<Folder", 7)) {
-		kobj=(KML_Object*)new KML_Folder();
-		kobj->Read(fid,kstr);
-		kmlobj    ->AddObject((Object*)kobj);
-	}
-
-	else if (!strncmp(kstr,"<Document", 9)) {
-		kobj=(KML_Object*)new KML_Document();
-		kobj->Read(fid,kstr);
-		kmlobj    ->AddObject((Object*)kobj);
-	}
-
-	else if (!strncmp(kstr,"<GroundOverlay",14)) {
-		kobj=(KML_Object*)new KML_GroundOverlay();
-		kobj->Read(fid,kstr);
-		kmlobj    ->AddObject((Object*)kobj);
-	}
-
-	else if (!strncmp(kstr,"<LatLonBox",10)) {
-		kobj=(KML_Object*)new KML_LatLonBox();
-		kobj->Read(fid,kstr);
-		kmlobj    ->AddObject((Object*)kobj);
-	}
-
-	else if (!strncmp(kstr,"<Icon", 5)) {
-		kobj=(KML_Object*)new KML_Icon();
-		kobj->Read(fid,kstr);
-		kmlobj    ->AddObject((Object*)kobj);
-	}
-
-	else if (!strncmp(kstr,"<Point", 6)) {
-		kobj=(KML_Object*)new KML_Point();
-		kobj->Read(fid,kstr);
-		kmlobj    ->AddObject((Object*)kobj);
-	}
-
-	else if (!strncmp(kstr,"<LineString",11)) {
-		kobj=(KML_Object*)new KML_LineString();
-		kobj->Read(fid,kstr);
-		kmlobj    ->AddObject((Object*)kobj);
-	}
-
-	else if (!strncmp(kstr,"<LinearRing",11)) {
-		kobj=(KML_Object*)new KML_LinearRing();
-		kobj->Read(fid,kstr);
-		kmlobj    ->AddObject((Object*)kobj);
-	}
-
-	else if (!strncmp(kstr,"<Polygon", 8)) {
-		kobj=(KML_Object*)new KML_Polygon();
-		kobj->Read(fid,kstr);
-		kmlobj    ->AddObject((Object*)kobj);
-	}
-
-	else if (!strncmp(kstr,"<MultiGeometry",14)) {
-		kobj=(KML_Object*)new KML_MultiGeometry();
-		kobj->Read(fid,kstr);
-		kmlobj    ->AddObject((Object*)kobj);
-	}
-
-//	else if (!strncmp(kstr,"<IconStyle",10)) {
-//		kobj=(KML_Object*)new KML_IconStyle();
-//		kobj->Read(fid,kstr);
-//		kmlobj    ->AddObject((Object*)kobj);
-//	}
-
-//	else if (!strncmp(kstr,"<LabelStyle",11)) {
-//		kobj=(KML_Object*)new KML_LabelStyle();
-//		kobj->Read(fid,kstr);
-//		kmlobj    ->AddObject((Object*)kobj);
-//	}
-
-	else if (!strncmp(kstr,"<LineStyle",10)) {
-		kobj=(KML_Object*)new KML_LineStyle();
-		kobj->Read(fid,kstr);
-		kmlobj    ->AddObject((Object*)kobj);
-	}
-
-	else if (!strncmp(kstr,"<PolyStyle",10)) {
-		kobj=(KML_Object*)new KML_PolyStyle();
-		kobj->Read(fid,kstr);
-		kmlobj    ->AddObject((Object*)kobj);
-	}
-
-//	else if (!strncmp(kstr,"<BalloonStyle",13)) {
-//		kobj=(KML_Object*)new KML_BalloonStyle();
-//		kobj->Read(fid,kstr);
-//		kmlobj    ->AddObject((Object*)kobj);
-//	}
-
-//	else if (!strncmp(kstr,"<ListStyle",10)) {
-//		kobj=(KML_Object*)new KML_ListStyle();
-//		kobj->Read(fid,kstr);
-//		kmlobj    ->AddObject((Object*)kobj);
-//	}
-
 	else if (!strncmp(kstr,"<",1)) {
 		_printf_(true,"KML_Object::Read -- Unrecognized opening tag %s.\n",kstr);
-//		KMLFileTagSkip(kstr,
-//					   fid);
-		kobj=(KML_Object*)new KML_Unknown();
-		kobj->Read(fid,kstr);
-		kmlobj    ->AddObject((Object*)kobj);
+		KMLFileTagSkip(kstr,
+					   fid);
 	}
 
Index: /issm/trunk-jpl-damage/src/c/objects/KML/KML_Object.h
===================================================================
--- /issm/trunk-jpl-damage/src/c/objects/KML/KML_Object.h	(revision 11424)
+++ /issm/trunk-jpl-damage/src/c/objects/KML/KML_Object.h	(revision 11425)
@@ -21,5 +21,4 @@
 		DataSet* attrib;
 		DataSet* commnt;
-		DataSet* kmlobj;
 
 		/*KML_Object constructors, destructors {{{1*/
Index: /issm/trunk-jpl-damage/src/c/objects/KML/KML_Unknown.cpp
===================================================================
--- /issm/trunk-jpl-damage/src/c/objects/KML/KML_Unknown.cpp	(revision 11424)
+++ /issm/trunk-jpl-damage/src/c/objects/KML/KML_Unknown.cpp	(revision 11425)
@@ -44,11 +44,9 @@
 	bool  flag=true;
 
-	_printf_(flag,"KML_Unknown %s:\n",name);
+	_printf_(flag,"KML_Unknown_%s:\n",name);
 	KML_Object::Echo();
 
 	if (value     )
 		_printf_(flag,"         value: \"%s\"\n"     ,value);
-    else
-        _printf_(flag,"         value: [none]\n"     );
 
 	return;
@@ -68,27 +66,11 @@
 void  KML_Unknown::DeepEcho(const char* indent){
 
-	char*        valuei;
-	char*        vtoken;
-	char         nl[]={'\n','\0'};
-	bool         flag=true;
+	bool  flag=true;
 
-	_printf_(flag,"%sKML_Unknown %s:\n",indent,name);
+	_printf_(flag,"%sKML_Unknown_%s:\n",indent,name);
 	KML_Object::DeepEcho(indent);
 
-	if (value     ) {
-		valuei=(char *) xmalloc((strlen(value)+1)*sizeof(char));
-		memcpy(valuei,value,(strlen(value)+1)*sizeof(char)); 
-        
-		vtoken=strtok(valuei,nl);
-		_printf_(flag,"%s         value: \"%s"     ,indent,vtoken);
-    
-		while (vtoken=strtok(NULL,nl))
-			_printf_(flag,"\n%s                 %s"     ,indent,vtoken);
-		_printf_(flag,"\"\n");
-
-		xfree((void**)&valuei);
-	}
-    else
-        _printf_(flag,"%s         value: [none]\n"     ,indent);
+	if (value     )
+		_printf_(flag,"%s         value: \"%s\"\n"     ,indent,value);
 
 	return;
@@ -98,8 +80,4 @@
 void  KML_Unknown::Write(FILE* filout,const char* indent){
 
-	char*        valuei;
-	char*        vtoken;
-	char         nl[]={'\n','\0'};
-
 	fprintf(filout,"%s<%s",indent,name);
 	WriteAttrib(filout," ");
@@ -107,18 +85,8 @@
 	WriteCommnt(filout,indent);
 
-	if (value     ) {
-		valuei=(char *) xmalloc((strlen(value)+1)*sizeof(char));
-		memcpy(valuei,value,(strlen(value)+1)*sizeof(char)); 
-        
-		vtoken=strtok(valuei,nl);
-		fprintf(filout,"%s  %s\n",indent,vtoken);
-    
-		while (vtoken=strtok(NULL,nl))
-			fprintf(filout,"%s  %s\n",indent,vtoken);
+	KML_Object::Write(filout,indent);
 
-		xfree((void**)&valuei);
-	}
-
-	KML_Object::Write(filout,indent);
+	if (value     )
+		fprintf(filout,"%s  %s\n",indent,value);
 
 	fprintf(filout,"%s</%s>\n",indent,name);
@@ -133,11 +101,4 @@
 	int          ncom=0;
 	char**       pcom=NULL;
-	char         nl[]={'\n','\0'};
-
-/*  get object name  */
-
-	/*name=KMLFileTagName(NULL,
-						kstr);*/
-//	_printf_(true,"KML_Unknown::Read -- opening name=%s.\n",name);
 
 /*  get object attributes and check for solo tag  */
@@ -151,8 +112,6 @@
 	while (kstri=KMLFileToken(fid,
 							  &ncom,&pcom)) {
-//		_printf_(true,"KML_Unknown::Read -- kstri=%s.\n",kstri);
 		if      (!strncmp(&kstri[0],"</", 2) &&
 				 !strncmp(&kstri[2],name,strlen(name))) {
-//			_printf_(true,"KML_Unknown::Read -- closing name=%s.\n",name);
 			xfree((void**)&kstri);
 			break;
@@ -161,15 +120,8 @@
 			_error_("KML_Unknown::Read -- Unexpected closing tag %s.\n",kstri);
 
-		else if (strncmp(kstri,"<",1)) {
-			if (value) {
-				value=(char *) xrealloc(value,(strlen(value)+1+strlen(kstri)+1)*sizeof(char));
-				strcat(value,nl);
-				strcat(value,kstri);
-			}
-			else {
-				value=(char *) xmalloc((strlen(kstri)+1)*sizeof(char));
-				memcpy(value,kstri,(strlen(kstri)+1)*sizeof(char));
-			}
-		}
+		else if (strncmp(kstri,"<",1))
+			KMLFileTokenParse( value     ,NULL,0,
+							  NULL,
+							  fid);
 
 		else if (!strncmp(kstri,"<",1))
Index: /issm/trunk-jpl-damage/src/c/objects/Loads/Icefront.cpp
===================================================================
--- /issm/trunk-jpl-damage/src/c/objects/Loads/Icefront.cpp	(revision 11424)
+++ /issm/trunk-jpl-damage/src/c/objects/Loads/Icefront.cpp	(revision 11425)
@@ -361,9 +361,4 @@
 }
 /*}}}*/
-/*FUNCTION Icefront::CreateJacobianMatrix{{{1*/
-void  Icefront::CreateJacobianMatrix(Mat Jff){
-	this->CreateKMatrix(Jff,NULL);
-}
-/*}}}1*/
 /*FUNCTION Icefront::PenaltyCreateKMatrix {{{1*/
 void  Icefront::PenaltyCreateKMatrix(Mat Kff, Mat Kfs, double kmax){
@@ -378,9 +373,4 @@
 }
 /*}}}*/
-/*FUNCTION Icefront::PenaltyCreateJacobianMatrix{{{1*/
-void  Icefront::PenaltyCreateJacobianMatrix(Mat Jff,double kmax){
-	this->PenaltyCreateKMatrix(Jff,NULL,kmax);
-}
-/*}}}1*/
 /*FUNCTION Icefront::InAnalysis{{{1*/
 bool Icefront::InAnalysis(int in_analysis_type){
Index: /issm/trunk-jpl-damage/src/c/objects/Loads/Icefront.h
===================================================================
--- /issm/trunk-jpl-damage/src/c/objects/Loads/Icefront.h	(revision 11424)
+++ /issm/trunk-jpl-damage/src/c/objects/Loads/Icefront.h	(revision 11425)
@@ -76,8 +76,6 @@
 		void  CreateKMatrix(Mat Kff, Mat Kfs);
 		void  CreatePVector(Vec pf);
-		void  CreateJacobianMatrix(Mat Jff);
 		void  PenaltyCreateKMatrix(Mat Kff, Mat kfs, double kmax);
 		void  PenaltyCreatePVector(Vec pf, double kmax);
-		void  PenaltyCreateJacobianMatrix(Mat Jff,double kmax);
 		bool  InAnalysis(int analysis_type);
 		/*}}}*/
Index: /issm/trunk-jpl-damage/src/c/objects/Loads/Penpair.cpp
===================================================================
--- /issm/trunk-jpl-damage/src/c/objects/Loads/Penpair.cpp	(revision 11424)
+++ /issm/trunk-jpl-damage/src/c/objects/Loads/Penpair.cpp	(revision 11425)
@@ -212,9 +212,4 @@
 	return;
 
-}
-/*}}}1*/
-/*FUNCTION Penpair::CreateJacobianMatrix{{{1*/
-void  Penpair::CreateJacobianMatrix(Mat Jff){
-	this->CreateKMatrix(Jff,NULL);
 }
 /*}}}1*/
Index: /issm/trunk-jpl-damage/src/c/objects/Loads/Penpair.h
===================================================================
--- /issm/trunk-jpl-damage/src/c/objects/Loads/Penpair.h	(revision 11424)
+++ /issm/trunk-jpl-damage/src/c/objects/Loads/Penpair.h	(revision 11425)
@@ -64,8 +64,6 @@
 		void  CreateKMatrix(Mat Kff, Mat Kfs);
 		void  CreatePVector(Vec pf);
-		void  CreateJacobianMatrix(Mat Jff);
-		void  PenaltyCreateKMatrix(Mat Kff, Mat Kfs,double kmax);
+		void  PenaltyCreateKMatrix(Mat Kff, Mat kfs, double kmax);
 		void  PenaltyCreatePVector(Vec pf, double kmax);
-		void  PenaltyCreateJacobianMatrix(Mat Jff,double kmax);
 		bool  InAnalysis(int analysis_type);
 		/*}}}*/
Index: /issm/trunk-jpl-damage/src/c/objects/Materials/Matice.cpp
===================================================================
--- /issm/trunk-jpl-damage/src/c/objects/Materials/Matice.cpp	(revision 11424)
+++ /issm/trunk-jpl-damage/src/c/objects/Materials/Matice.cpp	(revision 11425)
@@ -606,35 +606,4 @@
 	/*Return: */
 	*pviscosity_complement=viscosity_complement;
-}
-/*}}}*/
-/*FUNCTION Matice::GetViscosityDerivativeEpsSquare{{{1*/
-void  Matice::GetViscosityDerivativeEpsSquare(double* pmu_prime, double* epsilon){
-
-	/*output: */
-	double mu_prime;
-	double mu,n,eff2;
-
-	/*input strain rate: */
-	double exx,eyy,exy,exz;
-
-	/*Get visocisty and n*/
-	GetViscosity2d(&mu,epsilon);
-	n=GetN();
-
-	if((epsilon[0]==0) && (epsilon[1]==0) && (epsilon[2]==0)){
-		mu_prime=0.5*pow((double)10,(double)14);
-	}
-	else{
-		/*Retrive strain rate components: */
-		exx=epsilon[0];
-		eyy=epsilon[1];
-		exy=epsilon[2];
-		eff2 = exx*exx + eyy*eyy + exx*eyy + exy*exy ;
-
-		mu_prime=(1-n)/(2*n) * mu/eff2;
-	}
-
-	/*Assign output pointers:*/
-	*pmu_prime=mu_prime;
 }
 /*}}}*/
Index: /issm/trunk-jpl-damage/src/c/objects/Materials/Matice.h
===================================================================
--- /issm/trunk-jpl-damage/src/c/objects/Materials/Matice.h	(revision 11424)
+++ /issm/trunk-jpl-damage/src/c/objects/Materials/Matice.h	(revision 11425)
@@ -69,5 +69,4 @@
 		void   GetViscosityComplement(double* pviscosity_complement, double* pepsilon);
 		void   GetViscosityZComplement(double* pviscosity_complement, double* pepsilon);
-		void   GetViscosityDerivativeEpsSquare(double* pmu_prime, double* pepsilon);
 		double GetB();
 		double GetBbar();
Index: /issm/trunk-jpl-damage/src/c/objects/Numerics/ElementMatrix.cpp
===================================================================
--- /issm/trunk-jpl-damage/src/c/objects/Numerics/ElementMatrix.cpp	(revision 11424)
+++ /issm/trunk-jpl-damage/src/c/objects/Numerics/ElementMatrix.cpp	(revision 11425)
@@ -251,10 +251,4 @@
 	double* localvalues=NULL;
 
-	/*If Kfs is not provided, call the other function*/ 
-	if(!Kfs){ 
-		this->AddToGlobal(Kff); 
-		return; 
-	} 
-
 	/*In debugging mode, check consistency (no NaN, and values not too big)*/
 	this->CheckConsistency();
@@ -300,41 +294,4 @@
 }
 /*}}}*/
-/*FUNCTION ElementMatrix::AddToGlobal(Mat Jff){{{1*/
-void ElementMatrix::AddToGlobal(Mat Jff){
-	  
-	int i,j;
-	double* localvalues=NULL;
-	
-	/*Check that Jff is not NULL*/
-	_assert_(Jff); 
-	
-	/*In debugging mode, check consistency (no NaN, and values not too big)*/
-	this->CheckConsistency();
-	
-	if(this->dofsymmetrical){
-		/*only use row dofs to add values into global matrices: */
-		
-		if(this->row_fsize){
-			/*first, retrieve values that are in the f-set from the g-set values matrix: */
-			localvalues=(double*)xmalloc(this->row_fsize*this->row_fsize*sizeof(double));
-			for(i=0;i<this->row_fsize;i++){
-				for(j=0;j<this->row_fsize;j++){
-					*(localvalues+this->row_fsize*i+j)=*(this->values+this->ncols*this->row_flocaldoflist[i]+this->row_flocaldoflist[j]);
-				}
-			}
-			/*add local values into global  matrix, using the fglobaldoflist: */
-			MatSetValues(Jff,this->row_fsize,this->row_fglobaldoflist,this->row_fsize,this->row_fglobaldoflist,(const double*)localvalues,ADD_VALUES);
-			
-			/*Free ressources:*/
-			xfree((void**)&localvalues);
-		}
-		
-	}
-	else{
-		_error_(" non dofsymmetrical matrix AddToGlobal routine not support yet!");
-	}
-	
-}
-/*}}}*/
 /*FUNCTION ElementMatrix::CheckConsistency{{{1*/
 void ElementMatrix::CheckConsistency(void){
Index: /issm/trunk-jpl-damage/src/c/objects/Numerics/ElementMatrix.h
===================================================================
--- /issm/trunk-jpl-damage/src/c/objects/Numerics/ElementMatrix.h	(revision 11424)
+++ /issm/trunk-jpl-damage/src/c/objects/Numerics/ElementMatrix.h	(revision 11425)
@@ -59,5 +59,4 @@
 		/*ElementMatrix specific routines {{{1*/
 		void AddToGlobal(Mat Kff, Mat Kfs);
-		void AddToGlobal(Mat Jff);
 		void Echo(void);
 		void CheckConsistency(void);
Index: /issm/trunk-jpl-damage/src/c/objects/Params/BoolParam.h
===================================================================
--- /issm/trunk-jpl-damage/src/c/objects/Params/BoolParam.h	(revision 11424)
+++ /issm/trunk-jpl-damage/src/c/objects/Params/BoolParam.h	(revision 11425)
@@ -57,5 +57,5 @@
 		void  GetParameterValue(double* pdouble){_error_("Bool param of enum %i (%s) cannot return a double",enum_type,EnumToStringx(enum_type));}
 		void  GetParameterValue(char** pstring){_error_("Bool param of enum %i (%s) cannot return a string",enum_type,EnumToStringx(enum_type));}
-		void  GetParameterValue(char*** pstringarray,int* pM){_error_("Bool param of enum %i (%s) cannot return a string array",enum_type,EnumToStringx(enum_type));}
+		void  GetParameterValue(char*** pstringarray,int* pM){_error_("Bool param of enum %i (%s) cannot return a string arrayl",enum_type,EnumToStringx(enum_type));}
 		void  GetParameterValue(double** pdoublearray,int* pM){_error_("Bool param of enum %i (%s) cannot return a double array",enum_type,EnumToStringx(enum_type));}
 		void  GetParameterValue(double** pdoublearray,int* pM, int* pN){_error_("Bool param of enum %i (%s) cannot return a double array",enum_type,EnumToStringx(enum_type));}
Index: /issm/trunk-jpl-damage/src/c/objects/Params/DoubleMatArrayParam.h
===================================================================
--- /issm/trunk-jpl-damage/src/c/objects/Params/DoubleMatArrayParam.h	(revision 11424)
+++ /issm/trunk-jpl-damage/src/c/objects/Params/DoubleMatArrayParam.h	(revision 11425)
@@ -60,5 +60,5 @@
 		void  GetParameterValue(double* pdouble){_error_("DoubleMatArray param of enum %i (%s) cannot return a double",enum_type,EnumToStringx(enum_type));}
 		void  GetParameterValue(char** pstring){_error_("DoubleMatArray param of enum %i (%s) cannot return a string",enum_type,EnumToStringx(enum_type));}
-		void  GetParameterValue(char*** pstringarray,int* pM){_error_("DoubleMatArray param of enum %i (%s) cannot return a string array",enum_type,EnumToStringx(enum_type));}
+		void  GetParameterValue(char*** pstringarray,int* pM){_error_("DoubleMatArray param of enum %i (%s) cannot return a string arrayl",enum_type,EnumToStringx(enum_type));}
 		void  GetParameterValue(double** pdoublearray,int* pM){_error_("DoubleMatArray param of enum %i (%s) cannot return a double array",enum_type,EnumToStringx(enum_type));}
 		void  GetParameterValue(double** pdoublearray,int* pM, int* pN){_error_("DoubleMatArray param of enum %i (%s) cannot return a double array",enum_type,EnumToStringx(enum_type));}
Index: /issm/trunk-jpl-damage/src/c/objects/Params/DoubleMatParam.h
===================================================================
--- /issm/trunk-jpl-damage/src/c/objects/Params/DoubleMatParam.h	(revision 11424)
+++ /issm/trunk-jpl-damage/src/c/objects/Params/DoubleMatParam.h	(revision 11425)
@@ -59,5 +59,5 @@
 		void  GetParameterValue(double* pdouble){_error_("DoubleMat param of enum %i (%s) cannot return a double",enum_type,EnumToStringx(enum_type));}
 		void  GetParameterValue(char** pstring){_error_("DoubleMat param of enum %i (%s) cannot return a string",enum_type,EnumToStringx(enum_type));}
-		void  GetParameterValue(char*** pstringarray,int* pM){_error_("DoubleMat param of enum %i (%s) cannot return a string array",enum_type,EnumToStringx(enum_type));}
+		void  GetParameterValue(char*** pstringarray,int* pM){_error_("DoubleMat param of enum %i (%s) cannot return a string arrayl",enum_type,EnumToStringx(enum_type));}
 		void  GetParameterValue(double** pdoublearray,int* pM){_error_("DoubleMat param of enum %i (%s) cannot return a double array",enum_type,EnumToStringx(enum_type));}
 		void  GetParameterValue(double** pdoublearray,int* pM,int* pN);
Index: /issm/trunk-jpl-damage/src/c/objects/Params/DoubleParam.h
===================================================================
--- /issm/trunk-jpl-damage/src/c/objects/Params/DoubleParam.h	(revision 11424)
+++ /issm/trunk-jpl-damage/src/c/objects/Params/DoubleParam.h	(revision 11425)
@@ -58,5 +58,5 @@
 		void  GetParameterValue(double* pdouble){*pdouble=value;}
 		void  GetParameterValue(char** pstring){_error_("Double param of enum %i (%s) cannot return a string",enum_type,EnumToStringx(enum_type));}
-		void  GetParameterValue(char*** pstringarray,int* pM){_error_("Double param of enum %i (%s) cannot return a string array",enum_type,EnumToStringx(enum_type));}
+		void  GetParameterValue(char*** pstringarray,int* pM){_error_("Double param of enum %i (%s) cannot return a string arrayl",enum_type,EnumToStringx(enum_type));}
 		void  GetParameterValue(double** pdoublearray,int* pM);
 		void  GetParameterValue(double** pdoublearray,int* pM, int* pN);
Index: /issm/trunk-jpl-damage/src/c/objects/Params/DoubleVecParam.h
===================================================================
--- /issm/trunk-jpl-damage/src/c/objects/Params/DoubleVecParam.h	(revision 11424)
+++ /issm/trunk-jpl-damage/src/c/objects/Params/DoubleVecParam.h	(revision 11425)
@@ -55,8 +55,8 @@
 		void  GetParameterValue(int* pinteger){_error_("DoubleVec param of enum %i (%s) cannot return an integer",enum_type,EnumToStringx(enum_type));}
 		void  GetParameterValue(int** pintarray,int* pM);
-		void  GetParameterValue(int** pintarray,int* pM,int* pN){_error_("DoubleVec param of enum %i (%s) cannot return an array of integers",enum_type,EnumToStringx(enum_type));};
+		void  GetParameterValue(int** pintarray,int* pM,int* pN){_error_("DoubleVec param of enum %i (%s) cannot return a string",enum_type,EnumToStringx(enum_type));};
 		void  GetParameterValue(double* pdouble){_error_("DoubleVec param of enum %i (%s) cannot return a double",enum_type,EnumToStringx(enum_type));}
 		void  GetParameterValue(char** pstring){_error_("DoubleVec param of enum %i (%s) cannot return a string",enum_type,EnumToStringx(enum_type));}
-		void  GetParameterValue(char*** pstringarray,int* pM){_error_("DoubleVec param of enum %i (%s) cannot return a string array",enum_type,EnumToStringx(enum_type));}
+		void  GetParameterValue(char*** pstringarray,int* pM){_error_("DoubleVec param of enum %i (%s) cannot return a string arrayl",enum_type,EnumToStringx(enum_type));}
 		void  GetParameterValue(double** pdoublearray,int* pM);
 		void  GetParameterValue(double** pdoublearray,int* pM, int* pN);
Index: /issm/trunk-jpl-damage/src/c/objects/Params/FileParam.h
===================================================================
--- /issm/trunk-jpl-damage/src/c/objects/Params/FileParam.h	(revision 11424)
+++ /issm/trunk-jpl-damage/src/c/objects/Params/FileParam.h	(revision 11425)
@@ -57,5 +57,5 @@
 		void  GetParameterValue(double* pdouble){_error_("FileParam of enum %i (%s) cannot return a double",enum_type,EnumToStringx(enum_type));}
 		void  GetParameterValue(char** pstring){_error_("FileParam of enum %i (%s) cannot return a string",enum_type,EnumToStringx(enum_type));}
-		void  GetParameterValue(char*** pstringarray,int* pM){_error_("FileParam of enum %i (%s) cannot return a string array",enum_type,EnumToStringx(enum_type));}
+		void  GetParameterValue(char*** pstringarray,int* pM){_error_("FileParam of enum %i (%s) cannot return a string arrayl",enum_type,EnumToStringx(enum_type));}
 		void  GetParameterValue(double** pdoublearray,int* pM){_error_("FileParam of enum %i (%s) cannot return a double array",enum_type,EnumToStringx(enum_type));}
 		void  GetParameterValue(double** pdoublearray,int* pM, int* pN){_error_("FileParam of enum %i (%s) cannot return a double array",enum_type,EnumToStringx(enum_type));}
Index: /issm/trunk-jpl-damage/src/c/objects/Params/IntMatParam.h
===================================================================
--- /issm/trunk-jpl-damage/src/c/objects/Params/IntMatParam.h	(revision 11424)
+++ /issm/trunk-jpl-damage/src/c/objects/Params/IntMatParam.h	(revision 11425)
@@ -59,5 +59,5 @@
 		void  GetParameterValue(double* pdouble){_error_("IntMat param of enum %i (%s) cannot return a double",enum_type,EnumToStringx(enum_type));}
 		void  GetParameterValue(char** pstring){_error_("IntMat param of enum %i (%s) cannot return a string",enum_type,EnumToStringx(enum_type));}
-		void  GetParameterValue(char*** pstringarray,int* pM){_error_("IntMat param of enum %i (%s) cannot return a string array",enum_type,EnumToStringx(enum_type));}
+		void  GetParameterValue(char*** pstringarray,int* pM){_error_("IntMat param of enum %i (%s) cannot return a string arrayl",enum_type,EnumToStringx(enum_type));}
 		void  GetParameterValue(double** pdoublearray,int* pM){_error_("IntMat param of enum %i (%s) cannot return a double array",enum_type,EnumToStringx(enum_type));}
 		void  GetParameterValue(double** pdoublearray,int* pM,int* pN){_error_("IntMat param of enum %i (%s) cannot return a matrix array",enum_type,EnumToStringx(enum_type));};
Index: /issm/trunk-jpl-damage/src/c/objects/Params/IntParam.h
===================================================================
--- /issm/trunk-jpl-damage/src/c/objects/Params/IntParam.h	(revision 11424)
+++ /issm/trunk-jpl-damage/src/c/objects/Params/IntParam.h	(revision 11425)
@@ -58,5 +58,5 @@
 		void  GetParameterValue(double* pdouble){_error_("Int param of enum %i (%s) cannot return a double",enum_type,EnumToStringx(enum_type));}
 		void  GetParameterValue(char** pstring){_error_("Int param of enum %i (%s) cannot return a string",enum_type,EnumToStringx(enum_type));}
-		void  GetParameterValue(char*** pstringarray,int* pM){_error_("Int param of enum %i (%s) cannot return a string array",enum_type,EnumToStringx(enum_type));}
+		void  GetParameterValue(char*** pstringarray,int* pM){_error_("Int param of enum %i (%s) cannot return a string arrayl",enum_type,EnumToStringx(enum_type));}
 		void  GetParameterValue(double** pdoublearray,int* pM){_error_("Int param of enum %i (%s) cannot return a double array",enum_type,EnumToStringx(enum_type));}
 		void  GetParameterValue(double** pdoublearray,int* pM, int* pN){_error_("Int param of enum %i (%s) cannot return a double array",enum_type,EnumToStringx(enum_type));}
Index: /issm/trunk-jpl-damage/src/c/objects/Params/PetscMatParam.h
===================================================================
--- /issm/trunk-jpl-damage/src/c/objects/Params/PetscMatParam.h	(revision 11424)
+++ /issm/trunk-jpl-damage/src/c/objects/Params/PetscMatParam.h	(revision 11425)
@@ -58,5 +58,5 @@
 		void  GetParameterValue(double* pdouble){_error_("PetscMat param of enum %i (%s) cannot return a double",enum_type,EnumToStringx(enum_type));}
 		void  GetParameterValue(char** pstring){_error_("PetscMat param of enum %i (%s) cannot return a string",enum_type,EnumToStringx(enum_type));}
-		void  GetParameterValue(char*** pstringarray,int* pM){_error_("PetscMat param of enum %i (%s) cannot return a string array",enum_type,EnumToStringx(enum_type));}
+		void  GetParameterValue(char*** pstringarray,int* pM){_error_("PetscMat param of enum %i (%s) cannot return a string arrayl",enum_type,EnumToStringx(enum_type));}
 		void  GetParameterValue(double** pdoublearray,int* pM){_error_("PetscMat param of enum %i (%s) cannot return a double array",enum_type,EnumToStringx(enum_type));}
 		void  GetParameterValue(double** pdoublearray,int* pM, int* pN){_error_("PetscMat param of enum %i (%s) cannot return a double array",enum_type,EnumToStringx(enum_type));}
Index: /issm/trunk-jpl-damage/src/c/objects/Params/PetscVecParam.h
===================================================================
--- /issm/trunk-jpl-damage/src/c/objects/Params/PetscVecParam.h	(revision 11424)
+++ /issm/trunk-jpl-damage/src/c/objects/Params/PetscVecParam.h	(revision 11425)
@@ -58,5 +58,5 @@
 		void  GetParameterValue(double* pdouble){_error_("PetscVec param of enum %i (%s) cannot return a double",enum_type,EnumToStringx(enum_type));}
 		void  GetParameterValue(char** pstring){_error_("PetscVec param of enum %i (%s) cannot return a string",enum_type,EnumToStringx(enum_type));}
-		void  GetParameterValue(char*** pstringarray,int* pM){_error_("PetscVec param of enum %i (%s) cannot return a string array",enum_type,EnumToStringx(enum_type));}
+		void  GetParameterValue(char*** pstringarray,int* pM){_error_("PetscVec param of enum %i (%s) cannot return a string arrayl",enum_type,EnumToStringx(enum_type));}
 		void  GetParameterValue(double** pdoublearray,int* pM){_error_("PetscVec param of enum %i (%s) cannot return a double array",enum_type,EnumToStringx(enum_type));}
 		void  GetParameterValue(double** pdoublearray,int* pM, int* pN){_error_("PetscVec param of enum %i (%s) cannot return a double array",enum_type,EnumToStringx(enum_type));}
Index: /issm/trunk-jpl-damage/src/c/objects/Params/StringParam.h
===================================================================
--- /issm/trunk-jpl-damage/src/c/objects/Params/StringParam.h	(revision 11424)
+++ /issm/trunk-jpl-damage/src/c/objects/Params/StringParam.h	(revision 11425)
@@ -58,5 +58,5 @@
 		void  GetParameterValue(double* pdouble){_error_("String param of enum %i (%s) cannot return a double",enum_type,EnumToStringx(enum_type));}
 		void  GetParameterValue(char** pstring);
-		void  GetParameterValue(char*** pstringarray,int* pM){_error_("String param of enum %i (%s) cannot return a string array",enum_type,EnumToStringx(enum_type));}
+		void  GetParameterValue(char*** pstringarray,int* pM){_error_("String param of enum %i (%s) cannot return a string arrayl",enum_type,EnumToStringx(enum_type));}
 		void  GetParameterValue(double** pdoublearray,int* pM){_error_("String param of enum %i (%s) cannot return a double array",enum_type,EnumToStringx(enum_type));}
 		void  GetParameterValue(double** pdoublearray,int* pM, int* pN){_error_("String param of enum %i (%s) cannot return a double array",enum_type,EnumToStringx(enum_type));}
Index: /issm/trunk-jpl-damage/src/c/objects/Patch.cpp
===================================================================
--- /issm/trunk-jpl-damage/src/c/objects/Patch.cpp	(revision 11424)
+++ /issm/trunk-jpl-damage/src/c/objects/Patch.cpp	(revision 11425)
@@ -12,5 +12,4 @@
 #include <stdio.h>
 #include <string.h>
-#include <math.h>
 #include "./objects.h"
 #include "../Container/Container.h"
Index: /issm/trunk-jpl-damage/src/c/shared/Numerics/Synchronize.sh
===================================================================
--- /issm/trunk-jpl-damage/src/c/shared/Numerics/Synchronize.sh	(revision 11424)
+++ /issm/trunk-jpl-damage/src/c/shared/Numerics/Synchronize.sh	(revision 11425)
@@ -165,5 +165,4 @@
 
 	verbositylevel = (int)level;
-	return verbositylevel;
 
 #else
Index: /issm/trunk-jpl-damage/src/c/shared/Numerics/Verbosity.cpp
===================================================================
--- /issm/trunk-jpl-damage/src/c/shared/Numerics/Verbosity.cpp	(revision 11424)
+++ /issm/trunk-jpl-damage/src/c/shared/Numerics/Verbosity.cpp	(revision 11425)
@@ -64,5 +64,4 @@
 
 	verbositylevel = (int)level;
-	return verbositylevel;
 
 #else
Index: /issm/trunk-jpl-damage/src/c/shared/TriMesh/TriMeshUtils.cpp
===================================================================
--- /issm/trunk-jpl-damage/src/c/shared/TriMesh/TriMeshUtils.cpp	(revision 11424)
+++ /issm/trunk-jpl-damage/src/c/shared/TriMesh/TriMeshUtils.cpp	(revision 11425)
@@ -124,5 +124,5 @@
 ******************************************************************************************************************************/
 
-void RiftSegmentsFromSegments(int* pnriftsegs, int** priftsegments, int nel, double* index, int nsegs,double* segments){
+int RiftSegmentsFromSegments(int* pnriftsegs, int** priftsegments, int nel, double* index, int nsegs,double* segments){
 	
 	int i,counter;
@@ -379,23 +379,23 @@
                                    IsInPoly
 ******************************************************************************************************************************/
-//void IsInPoly(double* in,double* xc,double* yc,int numnodes,double* x,double* y,int nods){
-//
-//	int i;
-//	double x0,y0;
-//
-//	/*Go through all nodes of the mesh:*/
-//	for (i=0;i<nods;i++){
-//		if (in[i]){
-//			/*this node already is inside one of the contours, continue*/
-//			continue;
-//		}
-//		/*pick up node: */
-//		x0=x[i];
-//		y0=y[i];
-//		if (pnpoly(numnodes,xc,yc,x0,y0)){
-//			in[i]=1;
-//		}
-//	}
-//}
+int IsInPoly(double* in,double* xc,double* yc,int numnodes,double* x,double* y,int nods){
+
+	int i;
+	double x0,y0;
+
+	/*Go through all nodes of the mesh:*/
+	for (i=0;i<nods;i++){
+		if (in[i]){
+			/*this node already is inside one of the contours, continue*/
+			continue;
+		}
+		/*pick up node: */
+		x0=x[i];
+		y0=y[i];
+		if (pnpoly(numnodes,xc,yc,x0,y0)){
+			in[i]=1;
+		}
+	}
+}
 
 /******************************************************************************************************************************
Index: /issm/trunk-jpl-damage/src/c/shared/TriMesh/trimesh.h
===================================================================
--- /issm/trunk-jpl-damage/src/c/shared/TriMesh/trimesh.h	(revision 11424)
+++ /issm/trunk-jpl-damage/src/c/shared/TriMesh/trimesh.h	(revision 11425)
@@ -26,5 +26,5 @@
 int IsNeighbor(int el1,int el2,double* index);
 int IsOnRift(int el,int nriftsegs,int* riftsegments);
-void RiftSegmentsFromSegments(int* pnriftsegs, int** priftsegments, int nel, double* index, int nsegs,double* segments);
+int RiftSegmentsFromSegments(int* pnriftsegs, int** priftsegments, int nel, double* index, int nsegs,double* segments);
 int DetermineGridElementListOnOneSideOfRift(int* pNumGridElementListOnOneSideOfRift, int** pGridElementListOnOneSideOfRift, int segmentnumber, int nriftsegs, int* riftsegments, int node,double* index,int nel);
 int UpdateSegments(double** psegments,double** psegmentmarkerlist, int* pnsegs, double* index, double* x,double* y,int* riftsegments,int nriftsegs);
Index: /issm/trunk-jpl-damage/src/c/solutions/AnalysisConfiguration.cpp
===================================================================
--- /issm/trunk-jpl-damage/src/c/solutions/AnalysisConfiguration.cpp	(revision 11424)
+++ /issm/trunk-jpl-damage/src/c/solutions/AnalysisConfiguration.cpp	(revision 11425)
@@ -95,5 +95,5 @@
 
 		case TransientSolutionEnum:
-			numanalyses=9;
+			numanalyses=8;
 			analyses=(int*)xmalloc(numanalyses*sizeof(int));
 			analyses[0]=DiagnosticHorizAnalysisEnum;
@@ -104,6 +104,5 @@
 			analyses[5]=ThermalAnalysisEnum;
 			analyses[6]=MeltingAnalysisEnum;
-			analyses[7]=EnthalpyAnalysisEnum;
-			analyses[8]=PrognosticAnalysisEnum;
+			analyses[7]=PrognosticAnalysisEnum;
 			break;
 		
Index: /issm/trunk-jpl-damage/src/c/solutions/controltao_core.cpp
===================================================================
--- /issm/trunk-jpl-damage/src/c/solutions/controltao_core.cpp	(revision 11424)
+++ /issm/trunk-jpl-damage/src/c/solutions/controltao_core.cpp	(revision 11425)
@@ -31,14 +31,4 @@
 	Vec       XL = NULL;
 	Vec       XU = NULL;
-	int        ierr;
-	int        num_controls,solution_type;
-	int        nsteps,maxiter;
-	AppCtx     user;
-	TaoSolver  tao;
-	double    *dummy          = NULL;
-	int       *control_list   = NULL;
-	Vec        X              = NULL;
-	Vec        XL             = NULL;
-	Vec        XU             = NULL;
 
 	/*Initialize TAO*/
@@ -47,12 +37,4 @@
 	ierr = TaoInitialize(&argc,&args,(char*)0,"");
 	if(ierr) _error_("Could not initialize Tao");
-
-	/*Recover some parameters*/
-	femmodel->parameters->FindParam(&solution_type,SolutionTypeEnum);
-	femmodel->parameters->FindParam(&num_controls,InversionNumControlParametersEnum);
-	femmodel->parameters->FindParam(&control_list,NULL,InversionControlParametersEnum);
-	femmodel->parameters->FindParam(&nsteps,InversionNstepsEnum);
-	femmodel->parameters->FindParam(&dummy,NULL,NULL,InversionMaxiterPerStepEnum);
-	maxiter=nsteps*(int)dummy[0]; xfree((void**)&dummy);
 
 	/*Initialize TAO*/
@@ -63,6 +45,6 @@
 
 	/*Prepare all TAO parameters*/
-	TaoSetMaximumFunctionEvaluations(tao,maxiter);
-	TaoSetMaximumIterations(tao,nsteps);
+	TaoSetMaximumFunctionEvaluations(tao,50);
+	TaoSetMaximumIterations(tao,10);
 	TaoSetTolerances(tao,10e-28,0.0000,0.0000,0.0000,10e-28);
 
@@ -84,11 +66,4 @@
 	InputUpdateFromVectorx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,X,FrictionCoefficientEnum,VertexEnum);
 	InputToResultx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,FrictionCoefficientEnum);
-
-	/*Finalize*/
-	_printf_(VerboseControl(),"%s\n","   preparing final solution");
-	femmodel->parameters->SetParam(false,InversionIscontrolEnum); //needed to turn control result output in solutioncore
-	void (*solutioncore)(FemModel*)=NULL;
-	CorePointerFromSolutionEnum(&solutioncore,femmodel->parameters,solution_type);
-	solutioncore(femmodel);
 
 	/*Clean up and return*/
@@ -115,13 +90,4 @@
 	VecFree(&gradient);
 	CostFunctionx(fcn,femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters);
-
-	/*Compute gradient*/
-	Gradjx(&gradient,NULL,femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters);
-	VecCopy(gradient,G); VecFree(&gradient);
-	VecScale(G,-1.);
-
-	/*Clean-up and return*/
-	xfree((void**)&cost_functions);
-	xfree((void**)&cost_functionsd);
 	return 0;
 }
Index: /issm/trunk-jpl-damage/src/c/solutions/transient_core.cpp
===================================================================
--- /issm/trunk-jpl-damage/src/c/solutions/transient_core.cpp	(revision 11424)
+++ /issm/trunk-jpl-damage/src/c/solutions/transient_core.cpp	(revision 11425)
@@ -24,5 +24,5 @@
 	/*parameters: */
 	double finaltime,dt,yts;
-	bool   control_analysis,isdiagnostic,isprognostic,isthermal,isgroundingline,isenthalpy;
+	bool   control_analysis,isdiagnostic,isprognostic,isthermal,isgroundingline;
 	bool   dakota_analysis=false;
 	bool   time_adapt=false;
@@ -51,5 +51,4 @@
 	femmodel->parameters->FindParam(&isthermal,TransientIsthermalEnum);
 	femmodel->parameters->FindParam(&isgroundingline,TransientIsgroundinglineEnum);
-	femmodel->parameters->FindParam(&isenthalpy,ThermalIsenthalpyEnum);
 	if(isgroundingline) femmodel->parameters->FindParam(&groundingline_migration,GroundinglineMigrationEnum);
 	femmodel->parameters->FindParam(&numoutputs,TransientNumRequestedOutputsEnum);
@@ -92,10 +91,5 @@
 			_printf_(VerboseSolution(),"   computing temperatures:\n");
 			#ifdef _HAVE_THERMAL_
-			if(isenthalpy==0){
-				thermal_core_step(femmodel,step,time);
-			}
-			else{
-				enthalpy_core_step(femmodel,step,time);
-			}
+			thermal_core_step(femmodel,step,time);
 			#else
 			_error_("ISSM was not compiled with thermal capabilities. Exiting");
@@ -141,7 +135,5 @@
 			InputToResultx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,BedEnum,step,time);
 			if(dim==3 && isthermal) InputToResultx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,TemperatureEnum,step,time);
-			if(isenthalpy) InputToResultx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,WaterfractionEnum,step,time);
-			if(isenthalpy) InputToResultx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,EnthalpyEnum,step,time);
-			if(!isenthalpy) InputToResultx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,BasalforcingsMeltingRateEnum,step,time);
+			InputToResultx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,BasalforcingsMeltingRateEnum,step,time);
 			InputToResultx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,SurfaceforcingsMassBalanceEnum,step,time);
 			InputToResultx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,MaskElementonfloatingiceEnum,step,time);
Index: /issm/trunk-jpl-damage/src/c/solvers/solver_newton.cpp
===================================================================
--- /issm/trunk-jpl-damage/src/c/solvers/solver_newton.cpp	(revision 11425)
+++ /issm/trunk-jpl-damage/src/c/solvers/solver_newton.cpp	(revision 11425)
@@ -0,0 +1,95 @@
+/*!\file: solver_nonlinear.cpp
+ * \brief: core of a non-linear solution, using fixed-point method 
+ */ 
+
+#include "../toolkits/toolkits.h"
+#include "../objects/objects.h"
+#include "../io/io.h"
+#include "../EnumDefinitions/EnumDefinitions.h"
+#include "../modules/modules.h"
+#include "../solutions/solutions.h"
+#include "./solvers.h"
+
+void solver_newton(FemModel* femmodel){
+
+	/*intermediary: */
+	bool   converged;
+	int    num_unstable_constraints;
+	int    count;
+	double kmax;
+	Mat Kff = NULL, Kfs    = NULL, Jff = NULL;
+	Vec ug  = NULL, old_ug = NULL;
+	Vec uf  = NULL, old_uf = NULL, duf = NULL;
+	Vec pf  = NULL, pJf    = NULL;
+	Vec df  = NULL;
+	Vec ys  = NULL;
+
+	/*parameters:*/
+	int max_nonlinear_iterations;
+	int  configuration_type;
+
+	/*Recover parameters: */
+	femmodel->parameters->FindParam(&max_nonlinear_iterations,DiagnosticMaxiterEnum);
+	femmodel->parameters->FindParam(&configuration_type,ConfigurationTypeEnum);
+	UpdateConstraintsx(femmodel->nodes,femmodel->constraints,femmodel->parameters);
+
+	count=1;
+	converged=false;
+
+	/*Start non-linear iteration using input velocity: */
+	GetSolutionFromInputsx(&ug,femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters);
+	Reducevectorgtofx(&uf,ug,femmodel->nodes,femmodel->parameters);
+
+	//Update once again the solution to make sure that vx and vxold are similar (for next step in transient or steadystate)
+	InputUpdateFromConstantx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,converged,ConvergedEnum);
+	InputUpdateFromSolutionx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,ug);
+
+	for(;;){
+
+		VecFree(&old_ug);old_ug=ug;
+		VecFree(&old_uf);old_uf=uf;
+
+		/*Solver forward model*/
+		SystemMatricesx(&Kff,&Kfs,&pf,&df,NULL,femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters);
+		CreateNodalConstraintsx(&ys,femmodel->nodes,configuration_type);
+		Reduceloadx(pf,Kfs,ys);MatFree(&Kfs);
+		Solverx(&uf,Kff,pf,old_uf,df,femmodel->parameters);VecFree(&df);
+		Mergesolutionfromftogx(&ug,uf,ys,femmodel->nodes,femmodel->parameters);VecFree(&ys);
+		InputUpdateFromSolutionx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,ug);VecFree(&ug);
+
+		/*Check convergence*/
+		convergence(&converged,Kff,pf,uf,old_uf,femmodel->parameters); 
+		MatFree(&Kff);VecFree(&pf);
+		if(converged==true) break;
+		if(count>=max_nonlinear_iterations){
+			_printf_(true,"   maximum number of iterations (%i) exceeded\n",max_nonlinear_iterations); 
+			break;
+		}
+
+		/*Prepare next iteration using Newton's method*/
+		SystemMatricesx(&Kff,&Kfs,&pf,NULL,&kmax,femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters);
+		CreateNodalConstraintsx(&ys,femmodel->nodes,configuration_type);
+		Reduceloadx(pf,Kfs,ys);   MatFree(&Kfs);
+
+		VecDuplicate(pf,&pJf);
+		MatMultPatch(Kff,uf,pJf); MatFree(&Kff);
+		VecScale(pJf,-1.);
+		VecAXPY(pJf,+1.,pf);      VecFree(&pf);
+
+		CreateJacobianMatrixx(&Jff,femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,kmax);
+		Solverx(&duf,Jff,pJf,NULL,NULL,femmodel->parameters); MatFree(&Jff);VecFree(&pJf);
+		VecAXPY(uf,1.,duf);      VecFree(&duf);
+		Mergesolutionfromftogx(&ug,uf,ys,femmodel->nodes,femmodel->parameters);VecFree(&ys);
+		InputUpdateFromSolutionx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,ug);
+
+		count++;
+	}
+
+	_printf_(VerboseConvergence(),"\n   total number of iterations: %i\n",count-1);
+
+	/*clean-up*/
+	VecFree(&uf);
+	VecFree(&ug);
+	VecFree(&old_ug);
+	VecFree(&old_uf);
+}
Index: /issm/trunk-jpl-damage/src/c/solvers/solver_nonlinear.cpp
===================================================================
--- /issm/trunk-jpl-damage/src/c/solvers/solver_nonlinear.cpp	(revision 11424)
+++ /issm/trunk-jpl-damage/src/c/solvers/solver_nonlinear.cpp	(revision 11425)
@@ -85,7 +85,4 @@
 		if(count>=max_nonlinear_iterations){
 			_printf_(true,"   maximum number of iterations (%i) exceeded\n",max_nonlinear_iterations); 
-			converged=true;
-		InputUpdateFromConstantx( femmodel->elements,femmodel->nodes, femmodel->vertices, femmodel->loads, femmodel->materials, femmodel->parameters,converged,ConvergedEnum);
-		InputUpdateFromSolutionx( femmodel->elements,femmodel->nodes, femmodel->vertices, femmodel->loads, femmodel->materials, femmodel->parameters,ug);
 			break;
 		}
Index: /issm/trunk-jpl-damage/src/m/classes/clusters/castor.m
===================================================================
--- /issm/trunk-jpl-damage/src/m/classes/clusters/castor.m	(revision 11424)
+++ /issm/trunk-jpl-damage/src/m/classes/clusters/castor.m	(revision 11425)
@@ -10,11 +10,11 @@
 		 % {{{1
 		 name='castor'
-		 login='username';
-		 np   =128;
+		 login='larour';
+		 np   =128; %number of processors
 		 port=0;
 		 queue='shortc';
 		 time=180;
-		 codepath='/workp/edw/issm-2.0/bin'
-		 executionpath='/workp/edw/Testing/Execution'
+		 codepath='/workp/edw/larour/issm-2.0/bin'
+		 executionpath='/workp/edw/larour/Testing/Execution'
 		 %}}}
 	 end
Index: /issm/trunk-jpl-damage/src/m/classes/clusters/cosmos.m
===================================================================
--- /issm/trunk-jpl-damage/src/m/classes/clusters/cosmos.m	(revision 11424)
+++ /issm/trunk-jpl-damage/src/m/classes/clusters/cosmos.m	(revision 11425)
@@ -10,11 +10,11 @@
 		 % {{{1
 		 name='cosmos'
-		 login='username';
+		 login='larour';
 		 np=128;
 		 port=0;
 		 queue='shortq';
 		 time=3*60;
-		 codepath='/work00/edw/issm-2.0/bin';
-		 executionpath='/work00/edw/Execution';
+		 codepath='/work00/edw/larour/issm-2.0/bin';
+		 executionpath='/work00/edw/larour/Execution';
 		 %}}}
 	 end
Index: /issm/trunk-jpl-damage/src/m/classes/clusters/gemini.m
===================================================================
--- /issm/trunk-jpl-damage/src/m/classes/clusters/gemini.m	(revision 11424)
+++ /issm/trunk-jpl-damage/src/m/classes/clusters/gemini.m	(revision 11425)
@@ -10,11 +10,11 @@
 	% {{{1
 		name='gemini'
-		login='username';
+		login='larour';
 		np=50;
 		port=0;
 		queue='debug';
 		time=60;
-		codepath='/workg/edw/issm-2.0/bin'
-		executionpath='/workg/edw/Testing/Execution'
+		codepath='/workg/edw/larour/issm-2.0/bin'
+		executionpath='/workg/edw/larour/Testing/Execution'
 	%}}}
     end
Index: sm/trunk-jpl-damage/src/m/classes/clusters/greenplanet.m
===================================================================
--- /issm/trunk-jpl-damage/src/m/classes/clusters/greenplanet.m	(revision 11424)
+++ 	(revision )
@@ -1,202 +1,0 @@
-%PFE class definition
-%
-%   Usage:
-%      cluster=greenplanet();
-%      cluster=greenplanet('np',3);
-%      cluster=greenplanet('np',3,'login','username');
-
-classdef greenplanet
-    properties (SetAccess=public)  
-		 % {{{1
-		 name='greenplanet'
-		 login='';
-		 numnodes=20;
-		 cpuspernode=8; 
-		 port=8000;
-		 queue='rignot';
-		 codepath='';
-		 executionpath='';
-		 interactive=0;
-	 end
-	 properties (SetAccess=private) 
-		 np=20*8;
-		 % }}}
-	 end
-	 methods
-		 function cluster=greenplanet(varargin) % {{{1
-
-			 %initialize cluster using default settings if provided
-			 if (exist('greenplanet_settings')==2), greenplanet_settings; end
-
-			 %use provided options to change fields
-			 options=pairoptions(varargin{:});
-			 for i=1:size(options.list,1),
-				 fieldname=options.list{i,1};
-				 fieldvalue=options.list{i,2};
-				 if ismember(fieldname,properties('greenplanet')),
-					 cluster.(fieldname)=fieldvalue;
-				 else
-					 disp(['''' fieldname ''' is not a property of cluster greenplanet']);
-				 end
-			 end
-		 end
-		 %}}}
-		 function disp(cluster) % {{{1
-			 %  display the object
-			 disp(sprintf('class ''%s'' object ''%s'' = ',class(cluster),inputname(1)));
-			 disp(sprintf('    name: %s',cluster.name));
-			 disp(sprintf('    login: %s',cluster.login));
-			 disp(sprintf('    port: %i',cluster.port));
-			 disp(sprintf('    numnodes: %i',cluster.numnodes));
-			 disp(sprintf('    cpuspernode: %i',cluster.cpuspernode));
-			 disp(sprintf('    np: %i',cluster.cpuspernode*cluster.numnodes));
-			 disp(sprintf('    queue: %s',cluster.queue));
-			 disp(sprintf('    codepath: %s',cluster.codepath));
-			 disp(sprintf('    executionpath: %s',cluster.executionpath));
-			 disp(sprintf('    interactive: %i',cluster.interactive));
-		 end
-		 %}}}
-		 function checkconsistency(cluster,md,solution,analyses) % {{{1
-
-			 available_queues={'rignot','default'};
-			 queue_requirements_time=[Inf Inf];
-			 queue_requirements_np=[80 80];
-
-			 QueueRequirements(available_queues,queue_requirements_time,queue_requirements_np,cluster.queue,cluster.np,1)
-
-			 %Miscelaneous
-			 if isempty(cluster.login), checkmessage('login empty'); end
-			 if isempty(cluster.codepath), checkmessage('codepath empty'); end
-			 if isempty(cluster.executionpath), checkmessage('executionpath empty'); end
-
-		 end
-		 %}}}
-		 function BuildQueueScript(cluster,md) % {{{1
-
-			 %retrieve parameters 
-			 modelname=md.miscellaneous.name; 
-			 solution=md.private.solution;
-			 isvalgrind=md.debug.valgrind;
-
-			 %compute number of processors
-			 cluster.np=cluster.numnodes*cluster.cpuspernode;
-
-			 %open file for writing: 
-			 fid=fopen([modelname '.queue'],'w');
-
-			 fprintf(fid,'#PBS -S /bin/bash\n');
-			 fprintf(fid,'#PBS -N %s\n',modelname);
-			 fprintf(fid,'#PBS -q %s \n',cluster.queue);
-			 fprintf(fid,'#PBS -l nodes=%i:ppn=%i\n',cluster.numnodes,cluster.cpuspernode);
-			 fprintf(fid,'#PBS -m bea\n');
-			 fprintf(fid,'#PBS -M mmorligh@uci.edu\n');
-			 fprintf(fid,'#PBS -o %s.outlog \n',modelname);
-			 fprintf(fid,'#PBS -e %s.errlog \n\n',modelname);
-
-			 fprintf(fid,'cd %s/%s\n\n',cluster.executionpath,md.private.runtimename);
-			 fprintf(fid,'/sopt/mpi/mvapich-1.1/intel/bin/mpiexec -mpich-p4-no-shmem -np %i %s/issm.exe %s %s %s\n',cluster.np,cluster.codepath,EnumToString(solution),cluster.executionpath,modelname);
-
-			 if ~md.settings.io_gather,
-				 %concatenate the output files:
-				 fprintf(fid,'cat %s.outbin.* > %s.outbin',modelname,modelname);
-			 end
-
-			 %close file
-			 fclose(fid);
-
-			 %in interactive mode, create a run file, and errlog and outlog file
-			 if cluster.interactive,
-				 fid=fopen([modelname '.run'],'w');
-				 fprintf(fid,'mpiexec -np %i %s/issm.exe %s %s %s\n',cluster.np,cluster.codepath,EnumToString(solution),cluster.executionpath,modelname);
-
-				 if ~md.settings.io_gather,
-					 %concatenate the output files:
-					 fprintf(fid,'cat %s.outbin.* > %s.outbin',modelname,modelname);
-				 end
-				 fclose(fid);
-				 fid=fopen([modelname '.errlog'],'w');
-				 fclose(fid);
-				 fid=fopen([modelname '.outlog'],'w');
-				 fclose(fid);
-			 end
-		 end %}}}
-		 function LaunchQueueJob(cluster,md,options)% {{{1
-			 
-			 %lauch command, to be executed via ssh
-			 if ~cluster.interactive, 
-				launchcommand=['cd ' cluster.executionpath ' && rm -rf ./' md.private.runtimename ' && mkdir ' md.private.runtimename ...
-			                ' && cd ' md.private.runtimename ' && mv ../' md.private.runtimename '.tar.gz ./ && tar -zxf ' md.private.runtimename '.tar.gz  && qsub ' md.miscellaneous.name '.queue '];
-			else
-				launchcommand=['cd ' cluster.executionpath '/Interactive' num2str(cluster.interactive) ' && tar -zxf ' md.private.runtimename '.tar.gz'];
-			end
-
-			if ~strcmpi(options.batch,'yes'),
-				
-				%compress the files into one zip.
-				compressstring=['tar -zcf ' md.private.runtimename '.tar.gz ' md.miscellaneous.name '.bin ' md.miscellaneous.name '.queue '  md.miscellaneous.name '.petsc '];
-				if md.qmu.isdakota,
-					compressstring=[compressstring md.miscellaneous.name '.qmu.in '];
-				end
-				if cluster.interactive,
-					compressstring=[compressstring md.miscellaneous.name '.run ' md.miscellaneous.name '.errlog ' md.miscellaneous.name '.outlog '];
-				end
-				system(compressstring);
-				
-				disp('uploading input file and queueing script');
-				if cluster.interactive,
-					directory=[cluster.executionpath '/Interactive' num2str(cluster.interactive)];
-				else 
-					directory=cluster.executionpath;
-				end
-				
-				issmscpout(cluster.name,directory,cluster.login,cluster.port,{[md.private.runtimename '.tar.gz']});
-				
-				disp('launching solution sequence on remote cluster');
-				issmssh(cluster.name,cluster.login,cluster.port,launchcommand);
-
-			else
-				disp('batch mode requested: not launching job interactively');
-				disp('launch solution sequence on remote cluster by hand');
-			end
-		 end
-		 %}}}
-		 function Download(cluster,md)% {{{1
-
-			%some check
-			if isempty(md.private.runtimename),
-				if ~cluster.interactive,
-					error('greenplanet Download error message: supply runtime name for results to be loaded!');
-				end
-			end
-
-			%Figure out the  directory where all the files are in: 
-			if ~cluster.interactive,
-				directory=[cluster.executionpath '/' md.private.runtimename '/'];
-			else
-				directory=[cluster.executionpath '/Interactive' num2str(cluster.interactive) '/'];
-			end
-
-			%What packages are we picking up from remote cluster
-			if ~cluster.interactive,
-				packages={[md.miscellaneous.name '.outlog'],[md.miscellaneous.name '.errlog']};
-			else
-				packages={};
-			end
-			if md.qmu.isdakota,
-				packages{end+1}=[md.miscellaneous.name '.qmu.err'];
-				packages{end+1}=[md.miscellaneous.name '.qmu.out'];
-				if isfield(md.qmu.params,'tabular_graphics_data'),
-					if md.qmu.params.tabular_graphics_data==true,
-						packages{end+1}='dakota_tabular.dat'; 
-					end
-				end
-			else
-				packages{end+1}=[md.miscellaneous.name '.outbin'];
-			end
-
-			%copy files from cluster to present directory
-			issmscpin(cluster.name, cluster.login, cluster.port, directory, packages);
-
-		end %}}}
-	end
-end
Index: /issm/trunk-jpl-damage/src/m/classes/clusters/pollux.m
===================================================================
--- /issm/trunk-jpl-damage/src/m/classes/clusters/pollux.m	(revision 11424)
+++ /issm/trunk-jpl-damage/src/m/classes/clusters/pollux.m	(revision 11425)
@@ -10,11 +10,11 @@
 		 % {{{1
 		 name='pollux'
-		 login='username';
+		 login='larour';
 		 np=128;
 		 port=0;
 		 queue='shortp';
 		 time=180;
-		 codepath='/workc/edw/issm-2.0/bin'
-		 executionpath='/workc/edw/Testing/Execution'
+		 codepath='/workc/edw/larour/issm-2.0/bin'
+		 executionpath='/workc/edw/larour/Testing/Execution'
 		 %}}}
 	 end
Index: /issm/trunk-jpl-damage/src/m/classes/initialization.m
===================================================================
--- /issm/trunk-jpl-damage/src/m/classes/initialization.m	(revision 11424)
+++ /issm/trunk-jpl-damage/src/m/classes/initialization.m	(revision 11425)
@@ -62,5 +62,5 @@
 				checkfield(md,'initialization.pressure','NaN',1,'size',[md.mesh.numberofvertices 1]);
 			end
-			if (ismember(EnthalpyAnalysisEnum,analyses) & md.thermal.isenthalpy),
+			if ismember(EnthalpyAnalysisEnum,analyses),
 				checkfield(md,'initialization.waterfraction','>=',0,'size',[md.mesh.numberofvertices 1]);
 			end
Index: /issm/trunk-jpl-damage/src/m/classes/solver.m
===================================================================
--- /issm/trunk-jpl-damage/src/m/classes/solver.m	(revision 11424)
+++ /issm/trunk-jpl-damage/src/m/classes/solver.m	(revision 11425)
@@ -6,5 +6,5 @@
 classdef solver
     properties (SetAccess=public) 
-		 options=cell(0,0);
+		 options={NoneAnalysisEnum,mumpsoptions};
 	 end
 	 methods
@@ -26,37 +26,25 @@
 		 function obj = setdefaultparameters(obj) % {{{
 
-			 %MUMPS is the default solver
-			 obj.options={'NoneAnalysis',mumpsoptions};
-
 		 end % }}}
-		 function obj = addoptions(obj,analysis,solveroptions) % {{{1
-
-			 %Convert analysis from enum to string
-			 analysis=EnumToString(analysis);
-
+		 function obj=addoptions(obj,analysis,solveroptions) % {{{1
 			 %first, find out if analysis has already been supplied
 			 found=false;
 			 for i=1:size(obj.options,1),
 				 inanalysis=obj.options{i,1};
-				 if strcmp(inanalysis,analysis),
+				 if inanalysis==analysis,
 					 found=true;
-					 obj.options{i,1} = analysis;
-					 obj.options{i,2} = solveroptions;
+					 obj.options{i,1}=analysis;
+					 obj.options{i,2}=solveroptions;
 					 break;
 				 end
 			 end
-
 			 if ~found,
-				 obj.options{end+1,1}= analysis;
-				 obj.options{end,2}  = solveroptions;
+				 obj.options{end+1,1}=analysis;
+				 obj.options{end,2}=solveroptions;
 			 end
 		 end
 		 %}}}
 		 function checkconsistency(obj,md,solution,analyses) % {{{
-			 for i=1:size(obj.options,1),
-				 if ~ischar(obj.options{i,1}),
-					 checkmessage('solver is not well formatted: Analyses are not strings');
-				 end
-			 end
+
 		 end % }}}
 		 function PetscFile(solver,filename) % {{{
@@ -82,5 +70,5 @@
 
 				 %first write analysis:
-				 fprintf(fid,'\n+%s\n',analysis); %append a + to recognize it's an analysis enum
+				 fprintf(fid,'\n+%s\n',EnumToString(analysis)); %append a + to recognize it's an analysis enum
 
 				 %now, write options
@@ -138,5 +126,5 @@
 				end
 
-				disp(sprintf('   %s -> ''%s''',analysis,string));
+				disp(sprintf('   %s -> ''%s''',EnumToString(analysis),string));
 			end
 		 end
Index: /issm/trunk-jpl-damage/src/m/classes/thermal.m
===================================================================
--- /issm/trunk-jpl-damage/src/m/classes/thermal.m	(revision 11424)
+++ /issm/trunk-jpl-damage/src/m/classes/thermal.m	(revision 11425)
@@ -12,5 +12,4 @@
 		penalty_lock      = 0;
 		penalty_factor    = 0;
-		isenthalpy        = 0;
 	end
 	methods
@@ -43,7 +42,4 @@
 			%factor used to compute the values of the penalties: kappa=max(stiffness matrix)*10^penalty_factor
 			obj.penalty_factor=3;
-
-			%Should we use cold ice (default) or enthalpy formulation
-			obj.isenthalpy=0;
 		end % }}}
 		function checkconsistency(obj,md,solution,analyses) % {{{
@@ -54,7 +50,6 @@
 			checkfield(md,'thermal.stabilization','numel',1,'values',[0 1 2]);
 			checkfield(md,'thermal.spctemperature','forcing',1);
-			if (ismember(EnthalpyAnalysisEnum,analyses) & md.thermal.isenthalpy),
+			if ismember(EnthalpyAnalysisEnum,analyses),
 			checkfield(md,'thermal.spctemperature','<',md.materials.meltingpoint-md.materials.beta*md.materials.rho_ice*md.constants.g*md.geometry.thickness,'message','spctemperature should be below the adjusted melting point');
-			checkfield(md,'thermal.isenthalpy','numel',1,'values',[0 1]);
 			end
 		end % }}}
@@ -67,5 +62,4 @@
 			fielddisplay(obj,'penalty_lock','stabilize unstable thermal constraints that keep zigzagging after n iteration (default is 0, no stabilization)');
 			fielddisplay(obj,'penalty_threshold','threshold to declare convergence of thermal solution (default is 0)');
-			fielddisplay(obj,'isenthalpy','use an enthalpy formulation to include temperate ice (default is 0)');
 
 		end % }}}
@@ -77,5 +71,4 @@
 			WriteData(fid,'object',obj,'fieldname','penalty_lock','format','Integer');
 			WriteData(fid,'object',obj,'fieldname','penalty_factor','format','Double');
-			WriteData(fid,'object',obj,'fieldname','isenthalpy','format','Boolean');
 		end % }}}
 	end
Index: /issm/trunk-jpl-damage/src/m/enum/PentaVertexElementResultEnum.m
===================================================================
--- /issm/trunk-jpl-damage/src/m/enum/PentaVertexElementResultEnum.m	(revision 11425)
+++ /issm/trunk-jpl-damage/src/m/enum/PentaVertexElementResultEnum.m	(revision 11425)
@@ -0,0 +1,11 @@
+function macro=PentaVertexElementResultEnum()
+%PENTAVERTEXELEMENTRESULTENUM - Enum of PentaVertexElementResult
+%
+%   WARNING: DO NOT MODIFY THIS FILE
+%            this file has been automatically generated by src/c/EnumDefinitions/Synchronize.sh
+%            Please read src/c/EnumDefinitions/README for more information
+%
+%   Usage:
+%      macro=PentaVertexElementResultEnum()
+
+macro=StringToEnum('PentaVertexElementResult');
Index: /issm/trunk-jpl-damage/src/m/enum/PentaVertexInputEnum.m
===================================================================
--- /issm/trunk-jpl-damage/src/m/enum/PentaVertexInputEnum.m	(revision 11425)
+++ /issm/trunk-jpl-damage/src/m/enum/PentaVertexInputEnum.m	(revision 11425)
@@ -0,0 +1,11 @@
+function macro=PentaVertexInputEnum()
+%PENTAVERTEXINPUTENUM - Enum of PentaVertexInput
+%
+%   WARNING: DO NOT MODIFY THIS FILE
+%            this file has been automatically generated by src/c/EnumDefinitions/Synchronize.sh
+%            Please read src/c/EnumDefinitions/README for more information
+%
+%   Usage:
+%      macro=PentaVertexInputEnum()
+
+macro=StringToEnum('PentaVertexInput');
Index: sm/trunk-jpl-damage/src/m/enum/ThermalIsenthalpyEnum.m
===================================================================
--- /issm/trunk-jpl-damage/src/m/enum/ThermalIsenthalpyEnum.m	(revision 11424)
+++ 	(revision )
@@ -1,11 +1,0 @@
-function macro=ThermalIsenthalpyEnum()
-%THERMALISENTHALPYENUM - Enum of ThermalIsenthalpy
-%
-%   WARNING: DO NOT MODIFY THIS FILE
-%            this file has been automatically generated by src/c/EnumDefinitions/Synchronize.sh
-%            Please read src/c/EnumDefinitions/README for more information
-%
-%   Usage:
-%      macro=ThermalIsenthalpyEnum()
-
-macro=StringToEnum('ThermalIsenthalpy');
Index: /issm/trunk-jpl-damage/src/m/enum/TriaVertexElementResultEnum.m
===================================================================
--- /issm/trunk-jpl-damage/src/m/enum/TriaVertexElementResultEnum.m	(revision 11425)
+++ /issm/trunk-jpl-damage/src/m/enum/TriaVertexElementResultEnum.m	(revision 11425)
@@ -0,0 +1,11 @@
+function macro=TriaVertexElementResultEnum()
+%TRIAVERTEXELEMENTRESULTENUM - Enum of TriaVertexElementResult
+%
+%   WARNING: DO NOT MODIFY THIS FILE
+%            this file has been automatically generated by src/c/EnumDefinitions/Synchronize.sh
+%            Please read src/c/EnumDefinitions/README for more information
+%
+%   Usage:
+%      macro=TriaVertexElementResultEnum()
+
+macro=StringToEnum('TriaVertexElementResult');
Index: /issm/trunk-jpl-damage/src/m/enum/TriaVertexInputEnum.m
===================================================================
--- /issm/trunk-jpl-damage/src/m/enum/TriaVertexInputEnum.m	(revision 11425)
+++ /issm/trunk-jpl-damage/src/m/enum/TriaVertexInputEnum.m	(revision 11425)
@@ -0,0 +1,11 @@
+function macro=TriaVertexInputEnum()
+%TRIAVERTEXINPUTENUM - Enum of TriaVertexInput
+%
+%   WARNING: DO NOT MODIFY THIS FILE
+%            this file has been automatically generated by src/c/EnumDefinitions/Synchronize.sh
+%            Please read src/c/EnumDefinitions/README for more information
+%
+%   Usage:
+%      macro=TriaVertexInputEnum()
+
+macro=StringToEnum('TriaVertexInput');
Index: /issm/trunk-jpl-damage/src/m/model/collapse.m
===================================================================
--- /issm/trunk-jpl-damage/src/m/model/collapse.m	(revision 11424)
+++ /issm/trunk-jpl-damage/src/m/model/collapse.m	(revision 11425)
@@ -29,7 +29,4 @@
 if ~isnan(md.inversion.vy_obs), md.inversion.vy_obs=project2d(md,md.inversion.vy_obs,md.mesh.numberoflayers); end;
 if ~isnan(md.inversion.vel_obs), md.inversion.vel_obs=project2d(md,md.inversion.vel_obs,md.mesh.numberoflayers); end;
-if ~isnan(md.inversion.cost_functions_coefficients), md.inversion.cost_functions_coefficients=project2d(md,md.inversion.cost_functions_coefficients,md.mesh.numberoflayers); end;
-if ~isnan(md.inversion.min_parameters), md.inversion.min_parameters=project2d(md,md.inversion.min_parameters,md.mesh.numberoflayers); end;
-if ~isnan(md.inversion.max_parameters), md.inversion.max_parameters=project2d(md,md.inversion.max_parameters,md.mesh.numberoflayers); end;
 if ~isnan(md.surfaceforcings.mass_balance),
 	md.surfaceforcings.mass_balance=project2d(md,md.surfaceforcings.mass_balance,md.mesh.numberoflayers); 
@@ -52,8 +49,4 @@
 if ~isnan(md.flowequation.element_equation)
 	md.flowequation.element_equation=project2d(md,md.flowequation.element_equation,1);
-	md.flowequation.vertex_equation=project2d(md,md.flowequation.vertex_equation,1);
-	md.flowequation.bordermacayeal=project2d(md,md.flowequation.bordermacayeal,1);
-	md.flowequation.borderpattyn=project2d(md,md.flowequation.borderpattyn,1);
-	md.flowequation.borderstokes=project2d(md,md.flowequation.borderstokes,1);
 end	
 
@@ -62,5 +55,4 @@
 md.diagnostic.spcvy=project2d(md,md.diagnostic.spcvy,md.mesh.numberoflayers);
 md.diagnostic.spcvz=project2d(md,md.diagnostic.spcvz,md.mesh.numberoflayers);
-md.diagnostic.referential=project2d(md,md.diagnostic.referential,md.mesh.numberoflayers);
 md.prognostic.spcthickness=project2d(md,md.prognostic.spcthickness,md.mesh.numberoflayers);
 md.thermal.spctemperature=project2d(md,md.thermal.spctemperature,md.mesh.numberoflayers);
@@ -68,5 +60,5 @@
 %Extrusion of Neumann BC
 if ~isnan(md.diagnostic.icefront),
-	numberofneumann2d=size(md.diagnostic.icefront,1)/(md.mesh.numberoflayers-1);
+	numberofneumann2d=size(md.diagnostic.icefront,1)/md.mesh.numberoflayers;
 	md.diagnostic.icefront=[md.diagnostic.icefront(1:numberofneumann2d,1:2) md.diagnostic.icefront(1:numberofneumann2d,5:6)]; %Add two columns on the first layer 
 end
@@ -97,6 +89,4 @@
 md.mask.elementongroundedice=project2d(md,md.mask.elementongroundedice,1);
 md.mask.vertexongroundedice=project2d(md,md.mask.vertexongroundedice,1);
-md.mask.elementonwater=project2d(md,md.mask.elementonwater,1);
-md.mask.vertexonwater=project2d(md,md.mask.vertexonwater,1);
 
 %Initialize with the 2d mesh
Index: /issm/trunk-jpl-damage/src/m/model/loadresultsfromdisk.m
===================================================================
--- /issm/trunk-jpl-damage/src/m/model/loadresultsfromdisk.m	(revision 11424)
+++ /issm/trunk-jpl-damage/src/m/model/loadresultsfromdisk.m	(revision 11425)
@@ -12,9 +12,4 @@
 
 if ~md.qmu.isdakota,
-
-	%Check that file exists
-	if ~exist(filename,'file'),
-		error(['binary file ' filename ' not found.']);
-	end
 
 	%initialize md.results if not a structure yet
Index: /issm/trunk-jpl-damage/src/m/model/radarpower.m
===================================================================
--- /issm/trunk-jpl-damage/src/m/model/radarpower.m	(revision 11424)
+++ /issm/trunk-jpl-damage/src/m/model/radarpower.m	(revision 11425)
@@ -11,5 +11,5 @@
 
 %If gdal does not work, uncomment the following line
-%setenv('LD_LIBRARY_PATH','/proj/ice/larour/issm/trunk/externalpackages/gdal/install/lib/');
+setenv('LD_LIBRARY_PATH','/proj/ice/larour/issm/trunk/externalpackages/gdal/install/lib/');
 %Parse inputs
 if nargin==1,
Index: /issm/trunk-jpl-damage/src/m/model/tres.m
===================================================================
--- /issm/trunk-jpl-damage/src/m/model/tres.m	(revision 11424)
+++ /issm/trunk-jpl-damage/src/m/model/tres.m	(revision 11425)
@@ -10,15 +10,27 @@
 if strcmpi(string,'diagnostic'),
 	if md.mesh.dimension==2,
-		md.initialization.vx=md.results.DiagnosticSolution.Vx;
-		md.initialization.vy=md.results.DiagnosticSolution.Vy;
+		if isfield(md.results.DiagnosticSolution,'VxAverage'),
+			md.initialization.vx=PatchToVec(md.results.DiagnosticSolution.VxAverage);
+		else
+			md.initialization.vx=PatchToVec(md.results.DiagnosticSolution.Vx);
+		end
+		if isfield(md.results.DiagnosticSolution,'VyAverage'),
+			md.initialization.vy=PatchToVec(md.results.DiagnosticSolution.VyAverage);
+		else
+			md.initialization.vy=PatchToVec(md.results.DiagnosticSolution.Vy);
+		end
 	else 
-		md.initialization.vx=md.results.DiagnosticSolution.Vx;
-		md.initialization.vy=md.results.DiagnosticSolution.Vy;
-		md.initialization.vz=md.results.DiagnosticSolution.Vz;
+		md.initialization.vx=PatchToVec(md.results.DiagnosticSolution.Vx);
+		md.initialization.vy=PatchToVec(md.results.DiagnosticSolution.Vy);
+		if isfield(md.results.DiagnosticSolution,'Vz'),
+			md.initialization.vz=PatchToVec(md.results.DiagnosticSolution.Vz);
+		else
+			md.initialization.vz=zeros(md.mesh.numberofvertices,1);
+		end
 	end
-	md.initialization.vel=md.results.DiagnosticSolution.Vel;
+	md.initialization.vel=PatchToVec(md.results.DiagnosticSolution.Vel);
 
 	if isfield(md.results.DiagnosticSolution,'Pressure'),
-		md.initialization.pressure=md.results.DiagnosticSolution.Pressure;
+		md.initialization.pressure=PatchToVec(md.results.DiagnosticSolution.Pressure);
 	end
 	if md.rifts.numrifts,
@@ -30,5 +42,5 @@
 		for control_parameters=md.inversion.control_parameters
 			%Will need to be updated... good luck ;)
-			md.(EnumToModelField(control_parameters))=md.results.DiagnosticSolution.(EnumToString(control_parameters));
+			md.(EnumToModelField(control_parameters))=PatchToVec(md.results.DiagnosticSolution.(EnumToString(control_parameters)));
 		end
 	end
@@ -47,10 +59,10 @@
 	for i=1:length(results),
 		if ~isempty(md.results.TransientSolution(i).Vel),
-			results2(count).Vel=md.results.TransientSolution(i).Vel;
-			results2(count).Surface=md.results.TransientSolution(i).Surface;
-			results2(count).Thickness=md.results.TransientSolution(i).Thickness;
-			results2(count).Bed=md.results.TransientSolution(i).Bed;
-			results2(count).Vx=md.results.TransientSolution(i).Vx;
-			results2(count).Vy=md.results.TransientSolution(i).Vy;
+			results2(count).Vel=PatchToVec(md.results.TransientSolution(i).Vel);
+			results2(count).Surface=PatchToVec(md.results.TransientSolution(i).Surface);
+			results2(count).Thickness=PatchToVec(md.results.TransientSolution(i).Thickness);
+			results2(count).Bed=PatchToVec(md.results.TransientSolution(i).Bed);
+			results2(count).Vx=PatchToVec(md.results.TransientSolution(i).Vx);
+			results2(count).Vy=PatchToVec(md.results.TransientSolution(i).Vy);
 			results2(count).time=md.results.TransientSolution(i).time;
 			results2(count).step=md.results.TransientSolution(i).step;
@@ -64,26 +76,26 @@
 	clear results,results2;
 elseif strcmpi(string,'steadystate'),
-	md.initialization.vx=md.results.SteadystateSolution.Vx;
-	md.initialization.vy=md.results.SteadystateSolution.Vy;
+	md.initialization.vx=PatchToVec(md.results.SteadystateSolution.Vx);
+	md.initialization.vy=PatchToVec(md.results.SteadystateSolution.Vy);
 	if isfield(md.results.SteadystateSolution,'Vz'),
-		md.initialization.vz=md.results.SteadystateSolution.Vz;
+		md.initialization.vz=PatchToVec(md.results.SteadystateSolution.Vz);
 	end
 
-	md.initialization.vel=md.results.SteadystateSolution.Vel;
-	md.initialization.pressure=md.results.SteadystateSolution.Pressure;
-	md.initialization.temperature=md.results.SteadystateSolution.Temperature;
-	md.basalforcings.melting_rate=md.results.SteadystateSolution.BasalforcingsMeltingRate;
+	md.initialization.vel=PatchToVec(md.results.SteadystateSolution.Vel);
+	md.initialization.pressure=PatchToVec(md.results.SteadystateSolution.Pressure);
+	md.initialization.temperature=PatchToVec(md.results.SteadystateSolution.Temperature);
+	md.basalforcings.melting_rate=PatchToVec(md.results.SteadystateSolution.BasalforcingsMeltingRate);
 
 	if md.inversion.iscontrol==1,
 		for control_parameters=md.inversion.control_parameters
-			md.(EnumToModelField(control_parameters))=md.results.SteadystateSolution.(EnumToString(control_parameters));
+			md.(EnumToModelField(control_parameters))=PatchToVec(md.results.SteadystateSolution.(EnumToString(control_parameters)));
 		end
 	end
 
 elseif strcmpi(string,'thermal'),
-	md.initialization.temperature=md.results.ThermalSolution.Temperature;
-	md.basalforcings.melting_rate=md.results.ThermalSolution.BasalMeltingRate;
+	md.initialization.temperature=PatchToVec(md.results.ThermalSolution.Temperature);
+	md.basalforcings.melting_rate=PatchToVec(md.results.ThermalSolution.BasalMeltingRate);
 elseif strcmpi(string,'hydrology'),
-	md.initialization.watercolumn=md.results.HydrologySolution.Watercolumn;
+	md.initialization.watercolumn=PatchToVec(md.results.HydrologySolution.Watercolumn);
 
 else 
Index: /issm/trunk-jpl-damage/src/m/qmu/expandresponses.m
===================================================================
--- /issm/trunk-jpl-damage/src/m/qmu/expandresponses.m	(revision 11424)
+++ /issm/trunk-jpl-damage/src/m/qmu/expandresponses.m	(revision 11425)
@@ -1,4 +1,3 @@
 function dresp=expandresponses(md,responses)
-%EXPANDRESPONSES - expand responses
 
 fnames=fieldnames(responses);
Index: /issm/trunk-jpl-damage/src/m/solutions/AnalysisConfiguration.m
===================================================================
--- /issm/trunk-jpl-damage/src/m/solutions/AnalysisConfiguration.m	(revision 11424)
+++ /issm/trunk-jpl-damage/src/m/solutions/AnalysisConfiguration.m	(revision 11425)
@@ -42,6 +42,6 @@
 
 	case TransientSolutionEnum,
-		numanalyses=9; 
-		analyses=[DiagnosticHorizAnalysisEnum;DiagnosticVertAnalysisEnum;DiagnosticHutterAnalysisEnum;SurfaceSlopeAnalysisEnum;BedSlopeAnalysisEnum;ThermalAnalysisEnum;MeltingAnalysisEnum;EnthalpyAnalysisEnum;PrognosticAnalysisEnum];
+		numanalyses=8; 
+		analyses=[DiagnosticHorizAnalysisEnum;DiagnosticVertAnalysisEnum;DiagnosticHutterAnalysisEnum;SurfaceSlopeAnalysisEnum;BedSlopeAnalysisEnum;ThermalAnalysisEnum;MeltingAnalysisEnum;PrognosticAnalysisEnum];
 
 	case FlaimSolutionEnum,
Index: /issm/trunk-jpl-damage/src/m/solutions/diagnostic_core.m
===================================================================
--- /issm/trunk-jpl-damage/src/m/solutions/diagnostic_core.m	(revision 11424)
+++ /issm/trunk-jpl-damage/src/m/solutions/diagnostic_core.m	(revision 11425)
@@ -15,5 +15,4 @@
 	ismacayealpattyn=femmodel.parameters.FlowequationIsmacayealpattyn;
 	isstokes=femmodel.parameters.FlowequationIsstokes;
-	isnewton=femmodel.parameters.DiagnosticIsnewton;
 	dakota_analysis=femmodel.parameters.QmuIsdakota;
 	control_analysis=femmodel.parameters.InversionIscontrol;
@@ -54,9 +53,5 @@
 		issmprintf(VerboseSolution,'\n%s',['   computing horizontal velocities']);
 		femmodel=SetCurrentConfiguration(femmodel,DiagnosticHorizAnalysisEnum);
-		if isnewton,
-			femmodel=solver_newton(femmodel); 
-		else
-			femmodel=solver_nonlinear(femmodel,modify_loads); 
-		end
+		femmodel=solver_nonlinear(femmodel,modify_loads); 
 	end
 	
Index: /issm/trunk-jpl-damage/src/m/solutions/transient_core.m
===================================================================
--- /issm/trunk-jpl-damage/src/m/solutions/transient_core.m	(revision 11424)
+++ /issm/trunk-jpl-damage/src/m/solutions/transient_core.m	(revision 11425)
@@ -19,5 +19,4 @@
 	isthermal=femmodel.parameters.TransientIsthermal;
 	isgroundingline=femmodel.parameters.TransientIsgroundingline;
-	isenthalpy=femmodel.parameters.ThermalIsenthalpy;
 	groundinglinemigration=femmodel.parameters.GroundinglineMigration;
 
@@ -58,9 +57,5 @@
 		if (isthermal & dim==3)
 			issmprintf(VerboseSolution,'\n%s',['   computing temperature']);
-			if (isenthalpy==0),
-				femmodel=thermal_core_step(femmodel); 
-			else
-				femmodel=enthalpy_core_step(femmodel); 
-			end
+			femmodel=thermal_core_step(femmodel); 
 		end
 
@@ -95,6 +90,4 @@
 			femmodel.elements=InputToResult(femmodel.elements,femmodel.nodes,femmodel.vertices,femmodel.loads,femmodel.materials,femmodel.parameters,BedEnum,step,time);
 			if (dim==3 & isthermal), femmodel.elements=InputToResult(femmodel.elements,femmodel.nodes,femmodel.vertices,femmodel.loads,femmodel.materials,femmodel.parameters,TemperatureEnum,step,time);end
-			if (dim==3 & isenthalpy), femmodel.elements=InputToResult(femmodel.elements,femmodel.nodes,femmodel.vertices,femmodel.loads,femmodel.materials,femmodel.parameters,WaterfractionEnum,step,time);end
-			if (dim==3 & isenthalpy), femmodel.elements=InputToResult(femmodel.elements,femmodel.nodes,femmodel.vertices,femmodel.loads,femmodel.materials,femmodel.parameters,EnthalpyEnum,step,time);end
 			femmodel.elements=InputToResult(femmodel.elements,femmodel.nodes,femmodel.vertices,femmodel.loads,femmodel.materials,femmodel.parameters,BasalforcingsMeltingRateEnum,step,time);
 			femmodel.elements=InputToResult(femmodel.elements,femmodel.nodes,femmodel.vertices,femmodel.loads,femmodel.materials,femmodel.parameters,SurfaceforcingsMassBalanceEnum,step,time);
Index: sm/trunk-jpl-damage/src/m/solvers/solver_newton.m
===================================================================
--- /issm/trunk-jpl-damage/src/m/solvers/solver_newton.m	(revision 11424)
+++ 	(revision )
@@ -1,60 +1,0 @@
-function femmodel=solver_newton(femmodel)
-%SOLVER_NEWTON - core solver of diagnostic run
-%
-%   Usage:
-%      [femmodel]=solver_newton(femmodel)
-
-	%Branch on partitioning schema requested
-	maxiter=femmodel.parameters.DiagnosticMaxiter;
-	configuration_type=femmodel.parameters.ConfigurationType;
-	[femmodel.nodes]=UpdateConstraints(femmodel.nodes,femmodel.constraints,femmodel.parameters);
-
-	%initialize solution vector
-	converged=0; count=1;
-
-	%Start non-linear iteration using input velocity: 
-	ug=GetSolutionFromInputs(femmodel.elements, femmodel.nodes, femmodel.vertices, femmodel.loads, femmodel.materials, femmodel.parameters);
-	uf=Reducevectorgtof( ug, femmodel.nodes,femmodel.parameters);
-
-	%Update the solution to make sure that vx and vxold are similar
-	[femmodel.elements femmodel.loads]=InputUpdateFromConstant(femmodel.elements,femmodel.nodes,femmodel.vertices,femmodel.loads,femmodel.materials,femmodel.parameters,double(converged),ConvergedEnum);
-	[femmodel.elements,femmodel.materials]=InputUpdateFromSolution(femmodel.elements,femmodel.nodes,femmodel.vertices,femmodel.loads,femmodel.materials,femmodel.parameters,ug);
-
-	while(~converged),
-
-		%save pointer to old velocity
-		old_ug=ug;
-		old_uf=uf;
-
-		%Solver forward model
-		[K_ff,K_fs,p_f,df,kmax]=SystemMatrices(femmodel.elements,femmodel.nodes,femmodel.vertices,femmodel.loads,femmodel.materials,femmodel.parameters);
-		ys=CreateNodalConstraints(femmodel.nodes,configuration_type);
-		p_f=Reduceload( p_f, K_fs, ys);
-		issmprintf(VerboseSolver(),'%s%g','      condition number of stiffness matrix: ',condest(K_ff));
-		uf=Solver(K_ff,p_f,old_uf,df,femmodel.parameters);
-		ug=Mergesolutionfromftog( uf, ys, femmodel.nodes,femmodel.parameters); 
-		[femmodel.elements,femmodel.materials]=InputUpdateFromSolution(femmodel.elements,femmodel.nodes,femmodel.vertices,femmodel.loads,femmodel.materials,femmodel.parameters,ug);
-
-		%Check convergence
-		converged=convergence(K_ff,p_f,uf,old_uf,femmodel.parameters);
-		if(converged==1) break; end
-		if(count>maxiter),
-			issmprintf(true,'%s%i%s','      maximum number of iterations ',maxiter,' exceeded');
-			break;
-		end
-
-		%Prepare next iteration using Newton's method
-		[K_ff,K_fs,p_f,df,kmax]=SystemMatrices(femmodel.elements,femmodel.nodes,femmodel.vertices,femmodel.loads,femmodel.materials,femmodel.parameters);
-		ys=CreateNodalConstraints(femmodel.nodes,configuration_type);
-		p_f=Reduceload( p_f, K_fs, ys);
-		pJf=p_f-K_ff*uf;
-		Jff=CreateJacobianMatrix(femmodel.elements,femmodel.nodes,femmodel.vertices,femmodel.loads,femmodel.materials,femmodel.parameters,kmax);
-		duf=Solver(Jff,pJf,[],[],femmodel.parameters);
-		uf=uf+duf;
-		ug=Mergesolutionfromftog(uf,ys,femmodel.nodes,femmodel.parameters); 
-		[femmodel.elements,femmodel.materials]=InputUpdateFromSolution(femmodel.elements,femmodel.nodes,femmodel.vertices,femmodel.loads,femmodel.materials,femmodel.parameters,ug);
-
-		%increase count
-		count=count+1;
-	end
-end
Index: /issm/trunk-jpl-damage/src/mex/Makefile.am
===================================================================
--- /issm/trunk-jpl-damage/src/mex/Makefile.am	(revision 11424)
+++ /issm/trunk-jpl-damage/src/mex/Makefile.am	(revision 11425)
@@ -22,5 +22,4 @@
 				CostFunction \
 				CreateNodalConstraints\
-				CreateJacobianMatrix\
 				Echo\
 				ElementConnectivity\
@@ -328,8 +327,4 @@
 			  SystemMatrices/SystemMatrices.h
 
-
-CreateJacobianMatrix_SOURCES = CreateJacobianMatrix/CreateJacobianMatrix.cpp\
-								 CreateJacobianMatrix/CreateJacobianMatrix.h
-
 SurfaceArea_SOURCES = SurfaceArea/SurfaceArea.cpp\
 								 SurfaceArea/SurfaceArea.h
Index: /issm/trunk-jpl-damage/test/NightlyRun/IdToName.m
===================================================================
--- /issm/trunk-jpl-damage/test/NightlyRun/IdToName.m	(revision 11424)
+++ /issm/trunk-jpl-damage/test/NightlyRun/IdToName.m	(revision 11425)
@@ -48,6 +48,4 @@
 	case 141, name='SquareShelfConstrainedEnthalpyTranSerial';
 	case 142, name='SquareShelfConstrainedEnthalpyTranParallel';
-	case 143, name='SquareShelfConstrainedTransP3dEnthSerial';
-	case 144, name='SquareShelfConstrainedTransP3dEnthParallel';
 	case 201, name='SquareShelfDiagM2dSerial';
 	case 202, name='SquareShelfDiagM2dParallel';
@@ -170,6 +168,4 @@
 	case 351, name='SquareSheetConstrainedEnthalpyTranSerial';
 	case 352, name='SquareSheetConstrainedEnthalpyTranParallel';
-	case 353, name='SquareSheetConstrainedTransP3dEnthSerial';
-	case 354, name='SquareSheetConstrainedTransP3dEnthParallel';
 	case 401, name='SquareSheetShelfDiagM2dSerial';
 	case 402, name='SquareSheetShelfDiagM2dParallel';
Index: sm/trunk-jpl-damage/test/NightlyRun/test143.m
===================================================================
--- /issm/trunk-jpl-damage/test/NightlyRun/test143.m	(revision 11424)
+++ 	(revision )
@@ -1,53 +1,0 @@
-md=triangle(model,'../Exp/Square.exp',200000);
-md=setmask(md,'all','');
-md=parameterize(md,'../Par/SquareShelfConstrained.par');
-md=extrude(md,3,1);
-md=setflowequation(md,'pattyn','all');
-md.initialization.waterfraction=zeros(md.mesh.numberofvertices,1);
-md.thermal.isenthalpy=1;
-md.thermal.stabilization=2;
-md.cluster=none;
-md=solve(md,TransientSolutionEnum);
-
-%Fields and tolerances to track changes
-field_names     ={'Vx1','Vy1','Vz1','Vel1','Pressure1','Bed1','Surface1','Thickness1','Temperature1','Enthalpy1','Waterfraction1', ...
-				      'Vx2','Vy2','Vz2','Vel2','Pressure2','Bed2','Surface2','Thickness2','Temperature2','Enthalpy2','Waterfraction2', ...
-					   'Vx3','Vy3','Vz3','Vel3','Pressure3','Bed3','Surface3','Thickness3','Temperature3','Enthalpy3','Waterfraction3'};
-field_tolerances={1e-09,1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10,...
-						1e-09,1e-09,1e-10,1e-09,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10,...
-						1e-09,5e-10,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10};
-field_values={...
-	(md.results.TransientSolution(1).Vx),...
-	(md.results.TransientSolution(1).Vy),...
-	(md.results.TransientSolution(1).Vz),...
-	(md.results.TransientSolution(1).Vel),...
-	(md.results.TransientSolution(1).Pressure),...
-	(md.results.TransientSolution(1).Bed),...
-	(md.results.TransientSolution(1).Surface),...
-	(md.results.TransientSolution(1).Thickness),...
-	(md.results.TransientSolution(1).Temperature),...
-	(md.results.TransientSolution(1).Enthalpy),...
-	(md.results.TransientSolution(1).Waterfraction),...
-	(md.results.TransientSolution(2).Vx),...
-	(md.results.TransientSolution(2).Vy),...
-	(md.results.TransientSolution(2).Vz),...
-	(md.results.TransientSolution(2).Vel),...
-	(md.results.TransientSolution(2).Pressure),...
-	(md.results.TransientSolution(2).Bed),...
-	(md.results.TransientSolution(2).Surface),...
-	(md.results.TransientSolution(2).Thickness),...
-	(md.results.TransientSolution(2).Temperature),...
-	(md.results.TransientSolution(2).Enthalpy),...
-	(md.results.TransientSolution(2).Waterfraction),...
-	(md.results.TransientSolution(3).Vx),...
-	(md.results.TransientSolution(3).Vy),...
-	(md.results.TransientSolution(3).Vz),...
-	(md.results.TransientSolution(3).Vel),...
-	(md.results.TransientSolution(3).Pressure),...
-	(md.results.TransientSolution(3).Bed),...
-	(md.results.TransientSolution(3).Surface),...
-	(md.results.TransientSolution(3).Thickness),...
-	(md.results.TransientSolution(3).Temperature),...
-	(md.results.TransientSolution(3).Enthalpy),...
-	(md.results.TransientSolution(3).Waterfraction),...
-	};
Index: sm/trunk-jpl-damage/test/NightlyRun/test144.m
===================================================================
--- /issm/trunk-jpl-damage/test/NightlyRun/test144.m	(revision 11424)
+++ 	(revision )
@@ -1,54 +1,0 @@
-md=triangle(model,'../Exp/Square.exp',200000);
-md=setmask(md,'all','');
-md=parameterize(md,'../Par/SquareShelfConstrained.par');
-md=extrude(md,3,1);
-md=setflowequation(md,'pattyn','all');
-md.initialization.waterfraction=zeros(md.mesh.numberofvertices,1);
-md.thermal.isenthalpy=1;
-md.thermal.stabilization=2;
-md.cluster=generic('name',oshostname(),'np',3);
-md=solve(md,TransientSolutionEnum);
-
-%Fields and tolerances to track changes
-field_names     ={'Vx1','Vy1','Vz1','Vel1','Pressure1','Bed1','Surface1','Thickness1','Temperature1','Enthalpy1','Waterfraction1', ...
-				      'Vx2','Vy2','Vz2','Vel2','Pressure2','Bed2','Surface2','Thickness2','Temperature2','Enthalpy2','Waterfraction2', ...
-					   'Vx3','Vy3','Vz3','Vel3','Pressure3','Bed3','Surface3','Thickness3','Temperature3','Enthalpy3','Waterfraction3'};
-field_tolerances={...
-	1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,...
-	1e-09,1e-09,1e-08,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,...
-	1e-09,1e-09,1e-08,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09};
-field_values={...
-	(md.results.TransientSolution(1).Vx),...
-	(md.results.TransientSolution(1).Vy),...
-	(md.results.TransientSolution(1).Vz),...
-	(md.results.TransientSolution(1).Vel),...
-	(md.results.TransientSolution(1).Pressure),...
-	(md.results.TransientSolution(1).Bed),...
-	(md.results.TransientSolution(1).Surface),...
-	(md.results.TransientSolution(1).Thickness),...
-	(md.results.TransientSolution(1).Temperature),...
-	(md.results.TransientSolution(1).Enthalpy),...
-	(md.results.TransientSolution(1).Waterfraction),...
-	(md.results.TransientSolution(2).Vx),...
-	(md.results.TransientSolution(2).Vy),...
-	(md.results.TransientSolution(2).Vz),...
-	(md.results.TransientSolution(2).Vel),...
-	(md.results.TransientSolution(2).Pressure),...
-	(md.results.TransientSolution(2).Bed),...
-	(md.results.TransientSolution(2).Surface),...
-	(md.results.TransientSolution(2).Thickness),...
-	(md.results.TransientSolution(2).Temperature),...
-	(md.results.TransientSolution(2).Enthalpy),...
-	(md.results.TransientSolution(2).Waterfraction),...
-	(md.results.TransientSolution(3).Vx),...
-	(md.results.TransientSolution(3).Vy),...
-	(md.results.TransientSolution(3).Vz),...
-	(md.results.TransientSolution(3).Vel),...
-	(md.results.TransientSolution(3).Pressure),...
-	(md.results.TransientSolution(3).Bed),...
-	(md.results.TransientSolution(3).Surface),...
-	(md.results.TransientSolution(3).Thickness),...
-	(md.results.TransientSolution(3).Temperature),...
-	(md.results.TransientSolution(3).Enthalpy),...
-	(md.results.TransientSolution(3).Waterfraction),...
-	};
Index: /issm/trunk-jpl-damage/test/NightlyRun/test314.m
===================================================================
--- /issm/trunk-jpl-damage/test/NightlyRun/test314.m	(revision 11424)
+++ /issm/trunk-jpl-damage/test/NightlyRun/test314.m	(revision 11425)
@@ -9,5 +9,5 @@
 %Fields and tolerances to track changes
 field_names     ={'Vx','Vy','Vz','Vel','Pressure'};
-field_tolerances={1e-09,1e-09,1e-10,2e-10,1e-10};
+field_tolerances={1e-09,1e-09,1e-10,1e-10,1e-10};
 field_values={...
 	(md.results.DiagnosticSolution.Vx),...
Index: /issm/trunk-jpl-damage/test/NightlyRun/test350.m
===================================================================
--- /issm/trunk-jpl-damage/test/NightlyRun/test350.m	(revision 11424)
+++ /issm/trunk-jpl-damage/test/NightlyRun/test350.m	(revision 11425)
@@ -7,5 +7,7 @@
 md.cluster=generic('name',oshostname(),'np',3);
 md.initialization.waterfraction=zeros(md.mesh.numberofvertices,1);
+%md.debug.valgrind=1;
 md=solve(md,EnthalpySolutionEnum);
+%md=solve(md,ThermalSolutionEnum);
 
 %Fields and tolerances to track changes
Index: sm/trunk-jpl-damage/test/NightlyRun/test353.m
===================================================================
--- /issm/trunk-jpl-damage/test/NightlyRun/test353.m	(revision 11424)
+++ 	(revision )
@@ -1,55 +1,0 @@
-md=triangle(model,'../Exp/Square.exp',200000);
-md=setmask(md,'','');
-md=parameterize(md,'../Par/SquareSheetConstrained.par');
-md=extrude(md,3,1);
-md=setflowequation(md,'pattyn','all');
-md.cluster=none;
-md.initialization.waterfraction=zeros(md.mesh.numberofvertices,1);
-md.initialization.temperature(:)=272;
-md.thermal.spctemperature(find(md.mesh.vertexonsurface))=272;
-md.thermal.isenthalpy=1;
-md.basalforcings.geothermalflux(:)=5;
-md=solve(md,TransientSolutionEnum);
-
-%Fields and tolerances to track changes
-field_names     ={'Vx1','Vy1','Vz1','Vel1','Pressure1','Bed1','Surface1','Thickness1','Temperature1','Enthalpy1','Waterfraction1', ...
-				      'Vx2','Vy2','Vz2','Vel2','Pressure2','Bed2','Surface2','Thickness2','Temperature2','Enthalpy2','Waterfraction2', ...
-					   'Vx3','Vy3','Vz3','Vel3','Pressure3','Bed3','Surface3','Thickness3','Temperature3','Enthalpy3','Waterfraction3'};
-field_tolerances={1e-09,1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10,...
-						1e-09,1e-09,1e-10,1e-09,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10,...
-						1e-09,5e-10,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10};
-field_values={...
-	(md.results.TransientSolution(1).Vx),...
-	(md.results.TransientSolution(1).Vy),...
-	(md.results.TransientSolution(1).Vz),...
-	(md.results.TransientSolution(1).Vel),...
-	(md.results.TransientSolution(1).Pressure),...
-	(md.results.TransientSolution(1).Bed),...
-	(md.results.TransientSolution(1).Surface),...
-	(md.results.TransientSolution(1).Thickness),...
-	(md.results.TransientSolution(1).Temperature),...
-	(md.results.TransientSolution(1).Enthalpy),...
-	(md.results.TransientSolution(1).Waterfraction),...
-	(md.results.TransientSolution(2).Vx),...
-	(md.results.TransientSolution(2).Vy),...
-	(md.results.TransientSolution(2).Vz),...
-	(md.results.TransientSolution(2).Vel),...
-	(md.results.TransientSolution(2).Pressure),...
-	(md.results.TransientSolution(2).Bed),...
-	(md.results.TransientSolution(2).Surface),...
-	(md.results.TransientSolution(2).Thickness),...
-	(md.results.TransientSolution(2).Temperature),...
-	(md.results.TransientSolution(2).Enthalpy),...
-	(md.results.TransientSolution(2).Waterfraction),...
-	(md.results.TransientSolution(3).Vx),...
-	(md.results.TransientSolution(3).Vy),...
-	(md.results.TransientSolution(3).Vz),...
-	(md.results.TransientSolution(3).Vel),...
-	(md.results.TransientSolution(3).Pressure),...
-	(md.results.TransientSolution(3).Bed),...
-	(md.results.TransientSolution(3).Surface),...
-	(md.results.TransientSolution(3).Thickness),...
-	(md.results.TransientSolution(3).Temperature),...
-	(md.results.TransientSolution(3).Enthalpy),...
-	(md.results.TransientSolution(3).Waterfraction),...
-	};
Index: sm/trunk-jpl-damage/test/NightlyRun/test354.m
===================================================================
--- /issm/trunk-jpl-damage/test/NightlyRun/test354.m	(revision 11424)
+++ 	(revision )
@@ -1,55 +1,0 @@
-md=triangle(model,'../Exp/Square.exp',200000);
-md=setmask(md,'','');
-md=parameterize(md,'../Par/SquareSheetConstrained.par');
-md=extrude(md,3,1);
-md=setflowequation(md,'pattyn','all');
-md.cluster=generic('name',oshostname(),'np',3);
-md.initialization.waterfraction=zeros(md.mesh.numberofvertices,1);
-md.initialization.temperature(:)=272;
-md.thermal.spctemperature(find(md.mesh.vertexonsurface))=272;
-md.thermal.isenthalpy=1;
-md.basalforcings.geothermalflux(:)=5;
-md=solve(md,TransientSolutionEnum);
-
-%Fields and tolerances to track changes
-field_names     ={'Vx1','Vy1','Vz1','Vel1','Pressure1','Bed1','Surface1','Thickness1','Temperature1','Enthalpy1','Waterfraction1', ...
-				      'Vx2','Vy2','Vz2','Vel2','Pressure2','Bed2','Surface2','Thickness2','Temperature2','Enthalpy2','Waterfraction2', ...
-					   'Vx3','Vy3','Vz3','Vel3','Pressure3','Bed3','Surface3','Thickness3','Temperature3','Enthalpy3','Waterfraction3'};
-field_tolerances={1e-09,1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10,...
-						1e-09,1e-09,1e-10,1e-09,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10,...
-						1e-09,5e-10,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10};
-field_values={...
-	(md.results.TransientSolution(1).Vx),...
-	(md.results.TransientSolution(1).Vy),...
-	(md.results.TransientSolution(1).Vz),...
-	(md.results.TransientSolution(1).Vel),...
-	(md.results.TransientSolution(1).Pressure),...
-	(md.results.TransientSolution(1).Bed),...
-	(md.results.TransientSolution(1).Surface),...
-	(md.results.TransientSolution(1).Thickness),...
-	(md.results.TransientSolution(1).Temperature),...
-	(md.results.TransientSolution(1).Enthalpy),...
-	(md.results.TransientSolution(1).Waterfraction),...
-	(md.results.TransientSolution(2).Vx),...
-	(md.results.TransientSolution(2).Vy),...
-	(md.results.TransientSolution(2).Vz),...
-	(md.results.TransientSolution(2).Vel),...
-	(md.results.TransientSolution(2).Pressure),...
-	(md.results.TransientSolution(2).Bed),...
-	(md.results.TransientSolution(2).Surface),...
-	(md.results.TransientSolution(2).Thickness),...
-	(md.results.TransientSolution(2).Temperature),...
-	(md.results.TransientSolution(2).Enthalpy),...
-	(md.results.TransientSolution(2).Waterfraction),...
-	(md.results.TransientSolution(3).Vx),...
-	(md.results.TransientSolution(3).Vy),...
-	(md.results.TransientSolution(3).Vz),...
-	(md.results.TransientSolution(3).Vel),...
-	(md.results.TransientSolution(3).Pressure),...
-	(md.results.TransientSolution(3).Bed),...
-	(md.results.TransientSolution(3).Surface),...
-	(md.results.TransientSolution(3).Thickness),...
-	(md.results.TransientSolution(3).Temperature),...
-	(md.results.TransientSolution(3).Enthalpy),...
-	(md.results.TransientSolution(3).Waterfraction),...
-	};
