Index: /issm/oecreview/Archive/27032-27229/Date.tex
===================================================================
--- /issm/oecreview/Archive/27032-27229/Date.tex	(revision 27230)
+++ /issm/oecreview/Archive/27032-27229/Date.tex	(revision 27230)
@@ -0,0 +1,1 @@
+25-Aug-PM
Index: /issm/oecreview/Archive/27032-27229/ISSM-27036-27037.diff
===================================================================
--- /issm/oecreview/Archive/27032-27229/ISSM-27036-27037.diff	(revision 27230)
+++ /issm/oecreview/Archive/27032-27229/ISSM-27036-27037.diff	(revision 27230)
@@ -0,0 +1,13 @@
+Index: ../trunk-jpl/configure.ac
+===================================================================
+--- ../trunk-jpl/configure.ac	(revision 27036)
++++ ../trunk-jpl/configure.ac	(revision 27037)
+@@ -1,7 +1,7 @@
+ # Process this file with autoconf to produce a configure script.
+ 
+ #AUTOCONF
+-AC_INIT([Ice-sheet and Sea-level System Model (ISSM)],[4.20],[issm@jpl.nasa.gov],[issm],[http://issm.jpl.nasa.gov]) #Initializing configure
++AC_INIT([Ice-sheet and Sea-level System Model (ISSM)],[4.21],[issm@jpl.nasa.gov],[issm],[http://issm.jpl.nasa.gov]) #Initializing configure
+ AC_CONFIG_AUX_DIR([./aux-config])	# Put config files in aux-config
+ AC_CONFIG_MACRO_DIR([m4])			# m4 macros are located in m4
+ m4_include([m4/issm_options.m4])
Index: /issm/oecreview/Archive/27032-27229/ISSM-27037-27038.diff
===================================================================
--- /issm/oecreview/Archive/27032-27229/ISSM-27037-27038.diff	(revision 27230)
+++ /issm/oecreview/Archive/27032-27229/ISSM-27037-27038.diff	(revision 27230)
@@ -0,0 +1,48 @@
+Index: ../trunk-jpl/src/m/coordsystems/ll2xy.m
+===================================================================
+--- ../trunk-jpl/src/m/coordsystems/ll2xy.m	(revision 27037)
++++ ../trunk-jpl/src/m/coordsystems/ll2xy.m	(revision 27038)
+@@ -43,9 +43,16 @@
+ if exist('CoordTransform_matlab')==3
+ 	disp('Calling CoordTransform instead, make sure to change your MATLAB script');
+ 	if sgn==+1
+-		assert(delta==45); assert(slat ==70);
+-		[x y]=CoordTransform(lat,lon,'EPSG:4326','EPSG:3413');
+-		return;
++		if delta==45 && slat==70      %BedMachine
++			[x y]=CoordTransform(lat,lon,'EPSG:4326','EPSG:3413'); return;
++		elseif delta==0 && slat==75   %IBCAO
++			[x y]=CoordTransform(lat,lon,'EPSG:4326','EPSG:3996'); return;
++		elseif delta==39 && slat==71  %Bamber
++			Bamber_proj = '+proj=stere +lat_0=90 +lat_ts=71 +lon_0=-39 +k=1 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs';
++			[x y]=CoordTransform(lat,lon,'EPSG:4326',Bamber_proj); return;
++		else
++			error('not supported yet');
++		end
+ 	else
+ 		assert(delta==0); assert(slat ==71);
+ 		[x y]=CoordTransform(lat,lon,'EPSG:4326','EPSG:3031');
+Index: ../trunk-jpl/src/m/coordsystems/xy2ll.m
+===================================================================
+--- ../trunk-jpl/src/m/coordsystems/xy2ll.m	(revision 27037)
++++ ../trunk-jpl/src/m/coordsystems/xy2ll.m	(revision 27038)
+@@ -39,9 +39,16 @@
+ if exist('CoordTransform_matlab')==3
+ 	disp('Calling CoordTransform instead, make sure to change your MATLAB script');
+ 	if sgn==+1
+-		assert(delta==45); assert(slat ==70);
+-		[lat lon]=CoordTransform(x, y,'EPSG:3413','EPSG:4326');
+-		return;
++		if delta==45 && slat==70      %BedMachine
++			[lat lon]=CoordTransform(x, y,'EPSG:3413','EPSG:4326'); return;
++		elseif delta==0 && slat==75   %IBCAO
++			[lat lon]=CoordTransform(x, y,'EPSG:3996','EPSG:4326'); return;
++		elseif delta==39 && slat==71  %Bamber
++			Bamber_proj = '+proj=stere +lat_0=90 +lat_ts=71 +lon_0=-39 +k=1 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs';
++			[lat lon]=CoordTransform(x, y, Bamber_proj, 'EPSG:4326'); return;
++		else
++			error('not supported yet');
++		end
+ 	else
+ 		assert(delta==0); assert(slat ==71);
+ 		[lat lon]=CoordTransform(x, y,'EPSG:3031','EPSG:4326');
Index: /issm/oecreview/Archive/27032-27229/ISSM-27038-27039.diff
===================================================================
--- /issm/oecreview/Archive/27032-27229/ISSM-27038-27039.diff	(revision 27230)
+++ /issm/oecreview/Archive/27032-27229/ISSM-27038-27039.diff	(revision 27230)
@@ -0,0 +1,13 @@
+Index: ../trunk-jpl/src/m/plot/plot_transient_movie.m
+===================================================================
+--- ../trunk-jpl/src/m/plot/plot_transient_movie.m	(revision 27038)
++++ ../trunk-jpl/src/m/plot/plot_transient_movie.m	(revision 27039)
+@@ -42,6 +42,8 @@
+ 		steps = getfieldvalue(options,'transient_movie_steps');
+ 	elseif exist(options,'steps'),
+ 		steps = getfieldvalue(options,'steps');
++	elseif exist(options,'step'),
++		steps = getfieldvalue(options,'step');
+ 	else
+ 		steps=1:length(results);
+ 	end
Index: /issm/oecreview/Archive/27032-27229/ISSM-27039-27040.diff
===================================================================
--- /issm/oecreview/Archive/27032-27229/ISSM-27039-27040.diff	(revision 27230)
+++ /issm/oecreview/Archive/27032-27229/ISSM-27039-27040.diff	(revision 27230)
@@ -0,0 +1,52 @@
+Index: ../trunk-jpl/externalpackages/petsc/install-3.17-mac-intel.sh
+===================================================================
+--- ../trunk-jpl/externalpackages/petsc/install-3.17-mac-intel.sh	(nonexistent)
++++ ../trunk-jpl/externalpackages/petsc/install-3.17-mac-intel.sh	(revision 27040)
+@@ -0,0 +1,40 @@
++#!/bin/bash
++set -eu
++
++## Constants
++VER="3.17.1"
++
++# Download source
++$ISSM_DIR/scripts/DownloadExternalPackage.sh "https://ftp.mcs.anl.gov/pub/petsc/release-snapshots/petsc-lite-${VER}.tar.gz" "petsc-${VER}.tar.gz"
++
++# Unpack source
++tar -zxvf petsc-${VER}.tar.gz
++
++# Cleanup
++rm -rf install src
++mkdir install src
++
++# Move source to 'src' directory
++mv petsc-${VER}/* src/
++rm -rf petsc-${VER}
++
++cd src
++./config/configure.py \
++	--prefix="${ISSM_DIR}/externalpackages/petsc/install" \
++	--PETSC_DIR="${ISSM_DIR}/externalpackages/petsc/src" \
++	--with-debugging=0 \
++	--with-valgrind=0 \
++	--with-x=0 \
++	--with-ssl=0 \
++	--with-pic=1 \
++	--download-fblaslapack=1 \
++	--download-mpich=1 \
++	--download-metis=1 \
++	--download-parmetis=1 \
++	--download-scalapack=1 \
++	--download-mumps=1 \
++	--download-zlib=1 
++
++# Compile and install
++make
++make install
+
+Property changes on: ../trunk-jpl/externalpackages/petsc/install-3.17-mac-intel.sh
+___________________________________________________________________
+Added: svn:executable
+## -0,0 +1 ##
++*
+\ No newline at end of property
Index: /issm/oecreview/Archive/27032-27229/ISSM-27040-27041.diff
===================================================================
--- /issm/oecreview/Archive/27032-27229/ISSM-27040-27041.diff	(revision 27230)
+++ /issm/oecreview/Archive/27032-27229/ISSM-27040-27041.diff	(revision 27230)
@@ -0,0 +1,13 @@
+Index: ../trunk-jpl/externalpackages/petsc/install-3.17-mac-intel.sh
+===================================================================
+--- ../trunk-jpl/externalpackages/petsc/install-3.17-mac-intel.sh	(revision 27040)
++++ ../trunk-jpl/externalpackages/petsc/install-3.17-mac-intel.sh	(revision 27041)
+@@ -19,7 +19,7 @@
+ rm -rf petsc-${VER}
+ 
+ cd src
+-./config/configure.py \
++./configure \
+ 	--prefix="${ISSM_DIR}/externalpackages/petsc/install" \
+ 	--PETSC_DIR="${ISSM_DIR}/externalpackages/petsc/src" \
+ 	--with-debugging=0 \
Index: /issm/oecreview/Archive/27032-27229/ISSM-27041-27042.diff
===================================================================
--- /issm/oecreview/Archive/27032-27229/ISSM-27041-27042.diff	(revision 27230)
+++ /issm/oecreview/Archive/27032-27229/ISSM-27041-27042.diff	(revision 27230)
@@ -0,0 +1,71 @@
+Index: ../trunk-jpl/externalpackages/petsc/install-3.17-mac-m1-static.sh
+===================================================================
+--- ../trunk-jpl/externalpackages/petsc/install-3.17-mac-m1-static.sh	(nonexistent)
++++ ../trunk-jpl/externalpackages/petsc/install-3.17-mac-m1-static.sh	(revision 27042)
+@@ -0,0 +1,59 @@
++#!/bin/bash
++set -eu
++
++## Constants
++VER="3.17.1"
++
++# Download source
++$ISSM_DIR/scripts/DownloadExternalPackage.sh "https://ftp.mcs.anl.gov/pub/petsc/release-snapshots/petsc-lite-${VER}.tar.gz" "petsc-${VER}.tar.gz"
++
++# Unpack source
++tar -zxvf petsc-${VER}.tar.gz
++
++# Cleanup
++rm -rf install src
++mkdir install src
++
++# Move source to 'src' directory
++mv petsc-${VER}/* src/
++rm -rf petsc-${VER}
++
++# Configure
++#
++# NOTE:
++# - Cannot use --with-fpic option when compiling static libs,
++#
++#		Cannot determine compiler PIC flags if shared libraries is turned off
++#		Either run using --with-shared-libraries or --with-pic=0 and supply the
++#		compiler PIC flag via CFLAGS, CXXXFLAGS, and FCFLAGS
++#
++# - Added -fallow-argument-mismatch to FFLAGS in order to clear,
++#
++#		error: The Fortran compiler gfortran will not compile files that call 
++#		the same routine with arguments of different types.
++#
++#	for gfortran 10 or later (may need to remove it for earlier versions).
++cd src
++./configure \
++	--prefix="${ISSM_DIR}/externalpackages/petsc/install" \
++	--PETSC_DIR="${ISSM_DIR}/externalpackages/petsc/src" \
++	--LDFLAGS="-Wl,-no_compact_unwind" \
++	--with-shared-libraries=0 \
++	--CFLAGS="-fPIC" \
++	--CXXFLAGS="-fPIC" \
++	--FFLAGS="-fPIC" \
++	--with-debugging=0 \
++	--with-valgrind=0 \
++	--with-x=0 \
++	--with-ssl=0 \
++	--download-fblaslapack=1 \
++	--download-mpich=1 \
++	--download-metis=1 \
++	--download-parmetis=1 \
++	--download-scalapack=1 \
++	--download-mumps=1 \
++	--download-zlib=1 
++
++# Compile and install
++make
++make install
+
+Property changes on: ../trunk-jpl/externalpackages/petsc/install-3.17-mac-m1-static.sh
+___________________________________________________________________
+Added: svn:executable
+## -0,0 +1 ##
++*
+\ No newline at end of property
Index: /issm/oecreview/Archive/27032-27229/ISSM-27042-27043.diff
===================================================================
--- /issm/oecreview/Archive/27032-27229/ISSM-27042-27043.diff	(revision 27230)
+++ /issm/oecreview/Archive/27032-27229/ISSM-27042-27043.diff	(revision 27230)
@@ -0,0 +1,13 @@
+Index: ../trunk-jpl/externalpackages/petsc/install-3.17-mac-m1.sh
+===================================================================
+--- ../trunk-jpl/externalpackages/petsc/install-3.17-mac-m1.sh	(revision 27042)
++++ ../trunk-jpl/externalpackages/petsc/install-3.17-mac-m1.sh	(revision 27043)
+@@ -20,7 +20,7 @@
+ rm -rf petsc-${VER}
+ 
+ cd src
+-./config/configure.py \
++./configure \
+ 	--prefix="${ISSM_DIR}/externalpackages/petsc/install" \
+ 	--PETSC_DIR="${ISSM_DIR}/externalpackages/petsc/src" \
+ 	--LDFLAGS="-Wl,-no_compact_unwind" \
Index: /issm/oecreview/Archive/27032-27229/ISSM-27043-27044.diff
===================================================================
--- /issm/oecreview/Archive/27032-27229/ISSM-27043-27044.diff	(revision 27230)
+++ /issm/oecreview/Archive/27032-27229/ISSM-27043-27044.diff	(revision 27230)
@@ -0,0 +1,13 @@
+Index: ../trunk-jpl/src/m/plot/plot_transient_movie.m
+===================================================================
+--- ../trunk-jpl/src/m/plot/plot_transient_movie.m	(revision 27043)
++++ ../trunk-jpl/src/m/plot/plot_transient_movie.m	(revision 27044)
+@@ -11,7 +11,7 @@
+ 	%xlim
+ 	if exist(options,'transient_movie_field'),
+ 		field=getfieldvalue(options,'transient_movie_field');
+-	elseif ischar(getfieldvalue(options,'data'))
++	elseif ischar(getfieldvalue(options,'data')) && ~strcmp(getfieldvalue(options,'data'),'transient_movie')
+ 		field=getfieldvalue(options,'data');
+ 	else
+ 		disp('List of available fields:');
Index: /issm/oecreview/Archive/27032-27229/ISSM-27044-27045.diff
===================================================================
--- /issm/oecreview/Archive/27032-27229/ISSM-27044-27045.diff	(revision 27230)
+++ /issm/oecreview/Archive/27032-27229/ISSM-27044-27045.diff	(revision 27230)
@@ -0,0 +1,52 @@
+Index: ../trunk-jpl/externalpackages/gsl/install-javascript.sh
+===================================================================
+--- ../trunk-jpl/externalpackages/gsl/install-javascript.sh	(revision 27044)
++++ ../trunk-jpl/externalpackages/gsl/install-javascript.sh	(revision 27045)
+@@ -2,14 +2,9 @@
+ set -eu
+ 
+ 
+-## TODO:
+-# - Revisit enviroment variables (especially EMCC_CFLAGS) once support for
+-#	Fortran has been accomplished.
+-#
+-
+ ## Constants
+ #
+-VER="1.15"
++VER="2.27"
+ 
+ PREFIX="${ISSM_DIR}/externalpackages/gsl/install" # Set to location where external package should be installed
+ 
+@@ -20,7 +15,6 @@
+ export AR=emar
+ export RANLIB=emranlib
+ #export EMCC_DEBUG=1 # Uncomment to enable debugging
+-export EMCC_CFLAGS="-s ERROR_ON_UNDEFINED_SYMBOLS=0" # Required after v1.38.14 to avoid undefined symbol warnings from our Fortran object files being treated as errors
+ 
+ # Source Emscripten environment
+ source ${EMSCRIPTEN_ROOT}/emsdk_env.sh
+Index: ../trunk-jpl/externalpackages/triangle/install-linux-javascript.sh
+===================================================================
+--- ../trunk-jpl/externalpackages/triangle/install-linux-javascript.sh	(revision 27044)
++++ ../trunk-jpl/externalpackages/triangle/install-linux-javascript.sh	(revision 27045)
+@@ -2,11 +2,6 @@
+ set -eu
+ 
+ 
+-# TODO:
+-# - Revisit enviroment variables (especially EMCC_CFLAGS) once support for
+-#	Fortran has been accomplished.
+-#
+-
+ # Constants
+ #
+ export PREFIX="${ISSM_DIR}/externalpackages/triangle/install" # Set to location where external package should be installed
+@@ -18,7 +13,6 @@
+ export AR=emar
+ export RANLIB=emranlib
+ #export EMCC_DEBUG=1 # Uncomment to enable debugging
+-export EMCC_CFLAGS="-s ERROR_ON_UNDEFINED_SYMBOLS=0" # Required after v1.38.14 to avoid undefined symbol warnings from our Fortran object files being treated as errors
+ 
+ # Source Emscripten environment
+ source ${EMSCRIPTEN_ROOT}/emsdk_env.sh
Index: /issm/oecreview/Archive/27032-27229/ISSM-27045-27046.diff
===================================================================
--- /issm/oecreview/Archive/27032-27229/ISSM-27045-27046.diff	(revision 27230)
+++ /issm/oecreview/Archive/27032-27229/ISSM-27045-27046.diff	(revision 27230)
@@ -0,0 +1,13 @@
+Index: ../trunk-jpl/externalpackages/triangle/install-linux-javascript.sh
+===================================================================
+--- ../trunk-jpl/externalpackages/triangle/install-linux-javascript.sh	(revision 27045)
++++ ../trunk-jpl/externalpackages/triangle/install-linux-javascript.sh	(revision 27046)
+@@ -19,7 +19,7 @@
+ 
+ # Cleanup
+ rm -rf ${PREFIX} src
+-mkdir ${PREFIX} ${PREFIX}/include ${PREFIX}/share src
++mkdir -p ${PREFIX} ${PREFIX}/include ${PREFIX}/share src
+ 
+ # Download source
+ ${ISSM_DIR}/scripts/DownloadExternalPackage.sh "https://issm.ess.uci.edu/files/externalpackages/triangle.zip" "triangle.zip"
Index: /issm/oecreview/Archive/27032-27229/ISSM-27046-27047.diff
===================================================================
--- /issm/oecreview/Archive/27032-27229/ISSM-27046-27047.diff	(revision 27230)
+++ /issm/oecreview/Archive/27032-27229/ISSM-27046-27047.diff	(revision 27230)
@@ -0,0 +1,26 @@
+Index: ../trunk-jpl/externalpackages/gsl/install-static.sh
+===================================================================
+--- ../trunk-jpl/externalpackages/gsl/install-static.sh	(revision 27046)
++++ ../trunk-jpl/externalpackages/gsl/install-static.sh	(revision 27047)
+@@ -4,7 +4,7 @@
+ 
+ ## Constants
+ #
+-VER="1.15"
++VER="2.27"
+ 
+ PREFIX="${ISSM_DIR}/externalpackages/gsl/install" # Set to location where external package should be installed
+ 
+Index: ../trunk-jpl/externalpackages/gsl/install.sh
+===================================================================
+--- ../trunk-jpl/externalpackages/gsl/install.sh	(revision 27046)
++++ ../trunk-jpl/externalpackages/gsl/install.sh	(revision 27047)
+@@ -4,7 +4,7 @@
+ 
+ # Constants
+ #
+-VER="1.15"
++VER="2.27"
+ 
+ PREFIX="${ISSM_DIR}/externalpackages/gsl/install" # Set to location where external package should be installed
+ 
Index: /issm/oecreview/Archive/27032-27229/ISSM-27047-27048.diff
===================================================================
--- /issm/oecreview/Archive/27032-27229/ISSM-27047-27048.diff	(revision 27230)
+++ /issm/oecreview/Archive/27032-27229/ISSM-27047-27048.diff	(revision 27230)
@@ -0,0 +1,39 @@
+Index: ../trunk-jpl/externalpackages/gsl/install-javascript.sh
+===================================================================
+--- ../trunk-jpl/externalpackages/gsl/install-javascript.sh	(revision 27047)
++++ ../trunk-jpl/externalpackages/gsl/install-javascript.sh	(revision 27048)
+@@ -4,7 +4,7 @@
+ 
+ ## Constants
+ #
+-VER="2.27"
++VER="2.7"
+ 
+ PREFIX="${ISSM_DIR}/externalpackages/gsl/install" # Set to location where external package should be installed
+ 
+Index: ../trunk-jpl/externalpackages/gsl/install-static.sh
+===================================================================
+--- ../trunk-jpl/externalpackages/gsl/install-static.sh	(revision 27047)
++++ ../trunk-jpl/externalpackages/gsl/install-static.sh	(revision 27048)
+@@ -4,7 +4,7 @@
+ 
+ ## Constants
+ #
+-VER="2.27"
++VER="2.7"
+ 
+ PREFIX="${ISSM_DIR}/externalpackages/gsl/install" # Set to location where external package should be installed
+ 
+Index: ../trunk-jpl/externalpackages/gsl/install.sh
+===================================================================
+--- ../trunk-jpl/externalpackages/gsl/install.sh	(revision 27047)
++++ ../trunk-jpl/externalpackages/gsl/install.sh	(revision 27048)
+@@ -4,7 +4,7 @@
+ 
+ # Constants
+ #
+-VER="2.27"
++VER="2.7"
+ 
+ PREFIX="${ISSM_DIR}/externalpackages/gsl/install" # Set to location where external package should be installed
+ 
Index: /issm/oecreview/Archive/27032-27229/ISSM-27048-27049.diff
===================================================================
--- /issm/oecreview/Archive/27032-27229/ISSM-27048-27049.diff	(revision 27230)
+++ /issm/oecreview/Archive/27032-27229/ISSM-27048-27049.diff	(revision 27230)
@@ -0,0 +1,29 @@
+Index: ../trunk-jpl/src/m/contrib/morlighem/modeldata/interpIBCSO2.m
+===================================================================
+--- ../trunk-jpl/src/m/contrib/morlighem/modeldata/interpIBCSO2.m	(nonexistent)
++++ ../trunk-jpl/src/m/contrib/morlighem/modeldata/interpIBCSO2.m	(revision 27049)
+@@ -0,0 +1,24 @@
++function [bedout sid] = interpIBCSO2(X,Y),
++
++%read data
++switch (oshostname()),
++	case {'totten'}
++		ncpath='/totten_1/ModelData/Antarctica/IBCSO2/IBCSO_v2_bed.nc';
++		sidpath='/totten_1/ModelData/Antarctica/IBCSO2/IBCSO_v2_TID.nc';
++	otherwise
++		error('hostname not supported yet');
++end
++
++disp('   -- IBCSOv2: loading bathymetry');
++xdata = double(ncread(ncpath,'x'));
++ydata = double(ncread(ncpath,'y'));
++data  = double(ncread(ncpath,'z'))';
++disp('   -- IBCSOv2: interpolating bed');
++bedout = InterpFromGrid(xdata,ydata,data,double(X),double(Y));
++
++if nargout==2,
++	disp('   -- IBCSOv2: bathymetry sid');
++	data  = ncread(sidpath,'tid')';
++	disp('   -- IBCSOv2: interpolating sids');
++	sid = InterpFromGrid(xdata,ydata,data,double(X),double(Y),'nearest');
++end
Index: /issm/oecreview/Archive/27032-27229/ISSM-27049-27050.diff
===================================================================
--- /issm/oecreview/Archive/27032-27229/ISSM-27049-27050.diff	(revision 27230)
+++ /issm/oecreview/Archive/27032-27229/ISSM-27049-27050.diff	(revision 27230)
@@ -0,0 +1,10 @@
+Index: ../trunk-jpl/examples/Inversion/runme.m
+===================================================================
+--- ../trunk-jpl/examples/Inversion/runme.m	(revision 27049)
++++ ../trunk-jpl/examples/Inversion/runme.m	(revision 27050)
+@@ -1,4 +1,4 @@
+-steps=[4];
++steps=[1];
+ 
+ if any(steps==1) 
+ 	%Generate observations
Index: /issm/oecreview/Archive/27032-27229/ISSM-27050-27051.diff
===================================================================
--- /issm/oecreview/Archive/27032-27229/ISSM-27050-27051.diff	(revision 27230)
+++ /issm/oecreview/Archive/27032-27229/ISSM-27050-27051.diff	(revision 27230)
@@ -0,0 +1,13 @@
+Index: ../trunk-jpl/m4/issm_options.m4
+===================================================================
+--- ../trunk-jpl/m4/issm_options.m4	(revision 27050)
++++ ../trunk-jpl/m4/issm_options.m4	(revision 27051)
+@@ -2747,7 +2747,7 @@
+ 		[cxxoptflags],
+ 		AS_HELP_STRING([--with-cxxoptflags=CXXOPTFLAGS], [C++ optimization flags (i.e. --with-cxxoptflags="-march=opteron -O3 -std=c++11"]),
+ 		[CXXOPTFLAGS=${withval}],
+-		[CXXOPTFLAGS="-g -O2 -fPIC -std=c++11"]
++		[CXXOPTFLAGS="-g -O2 -fPIC -std=c++11 -D_DO_NOT_LOAD_GLOBALS_"]
+ 	)
+ 	AC_SUBST([CXXOPTFLAGS])
+ 	AC_MSG_RESULT([${CXXOPTFLAGS}])
Index: /issm/oecreview/Archive/27032-27229/ISSM-27053-27054.diff
===================================================================
--- /issm/oecreview/Archive/27032-27229/ISSM-27053-27054.diff	(revision 27230)
+++ /issm/oecreview/Archive/27032-27229/ISSM-27053-27054.diff	(revision 27230)
@@ -0,0 +1,66 @@
+Index: ../trunk-jpl/src/c/classes/Elements/Tria.cpp
+===================================================================
+--- ../trunk-jpl/src/c/classes/Elements/Tria.cpp	(revision 27053)
++++ ../trunk-jpl/src/c/classes/Elements/Tria.cpp	(revision 27054)
+@@ -6370,7 +6370,6 @@
+ 	bool computeelastic = false;
+ 	bool computerotation = false;
+ 	bool computeviscous = false;
+-	bool computesatgravi = false;
+ 	int  horiz;
+ 	bool istime=true;
+ 	IssmDouble timeacc=0.;
+@@ -7533,7 +7532,6 @@
+ 
+ 	IssmDouble SealevelGrd[3]={0,0,0};
+ 	IssmDouble RSLGrd[3]={0,0,0};
+-	IssmDouble SGGrd[3]={0,0,0}; //Satellite Gravimetry
+ 	IssmDouble UGrd[3]={0,0,0};
+ 	IssmDouble NGrd[3]={0,0,0};
+ 	IssmDouble EGrd[3]={0,0,0};
+@@ -7561,7 +7559,6 @@
+ 	bool elastic=false;
+ 	bool percpu=false;
+ 	bool planethasocean=false;
+-	bool SatelliteGravi=false;
+ 
+ 	this->parameters->FindParam(&nel,MeshNumberofelementsEnum);
+ 	this->parameters->FindParam(&sal,SolidearthSettingsSelfAttractionEnum);
+@@ -7569,7 +7566,6 @@
+ 	this->parameters->FindParam(&elastic,SolidearthSettingsElasticEnum);
+ 	this->parameters->FindParam(&horiz,SolidearthSettingsHorizEnum);
+ 	this->parameters->FindParam(&planethasocean,SolidearthSettingsGrdOceanEnum);
+-	this->parameters->FindParam(&SatelliteGravi,SolidearthSettingsSatelliteGraviEnum);
+ 
+ 	if(sal){
+ 
+@@ -7597,7 +7593,6 @@
+ 			if (rotation) {
+ 				this->inputs->GetArrayPtr(SealevelchangeGrotEnum,this->lid,&Grot,&size);
+ 				this->inputs->GetArrayPtr(SealevelchangeGUrotEnum,this->lid,&GUrot,&size);
+-				if (SatelliteGravi) this->inputs->GetArrayPtr(SealevelchangeGSatGravirotEnum,this->lid,&GSGrot,&size);
+ 				if (horiz){
+ 					this->inputs->GetArrayPtr(SealevelchangeGErotEnum,this->lid,&GErot,&size);
+ 					this->inputs->GetArrayPtr(SealevelchangeGNrotEnum,this->lid,&GNrot,&size);
+@@ -7605,7 +7600,6 @@
+ 			}
+ 		}
+ 		this->SealevelchangeGxL(&RSLGrd[0],G, Gsub, Grot, loads, polarmotionvector, slgeom, nel,percpu=false,SealevelchangeViscousRSLEnum,computefuture=true);
+-		if (SatelliteGravi) this->SealevelchangeGxL(&SGGrd[0],G, Gsub, GSGrot, loads, polarmotionvector, slgeom, nel,percpu=false,SealevelchangeViscousSGEnum,computefuture=true);
+ 
+ 		if(elastic){
+ 			this->SealevelchangeGxL(&UGrd[0],GU, GUsub, GUrot, loads, polarmotionvector, slgeom, nel,percpu=false,SealevelchangeViscousUEnum,computefuture=true);
+@@ -7627,13 +7621,11 @@
+ 	/*Create geoid: */
+ 	for(int i=0;i<NUMVERTICES;i++){
+ 		SealevelGrd[i]=UGrd[i]+RSLGrd[i];
+-		if (SatelliteGravi) SGGrd[i]+=UGrd[i];
+ 	}
+ 
+ 	/*Create inputs*/
+ 	this->AddInput(SealevelGRDEnum,SealevelGrd,P1Enum);
+ 	this->AddInput(BedGRDEnum,UGrd,P1Enum);
+-	if (SatelliteGravi) this->AddInput(SatGraviGRDEnum,SGGrd,P1Enum);
+ 	if(horiz){
+ 		this->AddInput(BedNorthGRDEnum,NGrd,P1Enum);
+ 		this->AddInput(BedEastGRDEnum,EGrd,P1Enum);
Index: /issm/oecreview/Archive/27032-27229/ISSM-27054-27055.diff
===================================================================
--- /issm/oecreview/Archive/27032-27229/ISSM-27054-27055.diff	(revision 27230)
+++ /issm/oecreview/Archive/27032-27229/ISSM-27054-27055.diff	(revision 27230)
@@ -0,0 +1,44 @@
+Index: ../trunk-jpl/src/c/classes/Elements/Tria.cpp
+===================================================================
+--- ../trunk-jpl/src/c/classes/Elements/Tria.cpp	(revision 27054)
++++ ../trunk-jpl/src/c/classes/Elements/Tria.cpp	(revision 27055)
+@@ -6383,7 +6383,6 @@
+ 	IssmDouble* __restrict__ tide_love_k  = NULL;
+ 	IssmDouble* __restrict__ tide_love_l  = NULL;
+ 	IssmDouble* __restrict__ LoveRotRSL   = NULL;
+-	IssmDouble* __restrict__ LoveRotSatG  = NULL;
+ 	IssmDouble* __restrict__ LoveRotU     = NULL;
+ 	IssmDouble* __restrict__ LoveRothoriz = NULL;
+ 	IssmDouble* __restrict__  Grot        = NULL;
+@@ -6395,7 +6394,6 @@
+ 	IssmDouble* tide_love_k  = NULL;
+ 	IssmDouble* tide_love_l  = NULL;
+ 	IssmDouble* LoveRotRSL   = NULL;
+-	IssmDouble* LoveRotSatG  = NULL;
+ 	IssmDouble* LoveRotU     = NULL;
+ 	IssmDouble* LoveRothoriz = NULL;
+ 	IssmDouble*  Grot        = NULL;
+@@ -7341,7 +7339,6 @@
+ 		this->parameters->FindParam(&viscousnumsteps,SealevelchangeViscousNumStepsEnum);
+ 
+ 		this->inputs->GetArrayPtr(SealevelchangeViscousRSLEnum,this->lid,&viscousRSL,&dummy);
+-		this->inputs->GetArrayPtr(SealevelchangeViscousSGEnum,this->lid,&viscousSG,&dummy);
+ 		this->inputs->GetArrayPtr(SealevelchangeViscousUEnum,this->lid,&viscousU,&dummy);
+ 		if(horiz){
+ 			this->inputs->GetArrayPtr(SealevelchangeViscousNEnum,this->lid,&viscousN,&dummy);
+@@ -7350,7 +7347,6 @@
+ 
+ 		for(int i=0;i<NUMVERTICES;i++){
+ 			viscousRSL[i*viscousnumsteps+newindex+offset]=(1-lincoeff)*viscousRSL[i*viscousnumsteps+newindex]+lincoeff*viscousRSL[i*viscousnumsteps+newindex+1];
+-			viscousSG[i*viscousnumsteps+newindex+offset]=(1-lincoeff)*viscousSG[i*viscousnumsteps+newindex]+lincoeff*viscousSG[i*viscousnumsteps+newindex+1];
+ 			viscousU[i*viscousnumsteps+newindex+offset]=(1-lincoeff)*viscousU[i*viscousnumsteps+newindex]+lincoeff*viscousU[i*viscousnumsteps+newindex+1];
+ 			if(horiz){
+ 				viscousN[i*viscousnumsteps+newindex+offset]=(1-lincoeff)*viscousN[i*viscousnumsteps+newindex]+lincoeff*viscousN[i*viscousnumsteps+newindex+1];
+@@ -7362,7 +7358,6 @@
+ 
+ 	/*Free ressources*/
+ 	xDelete<IssmDouble>(viscousRSL);
+-	xDelete<IssmDouble>(viscousSG);
+ 	xDelete<IssmDouble>(viscousU);
+ 	xDelete<IssmDouble>(viscousN);
+ 	xDelete<IssmDouble>(viscousE);
Index: /issm/oecreview/Archive/27032-27229/ISSM-27055-27056.diff
===================================================================
--- /issm/oecreview/Archive/27032-27229/ISSM-27055-27056.diff	(revision 27230)
+++ /issm/oecreview/Archive/27032-27229/ISSM-27055-27056.diff	(revision 27230)
@@ -0,0 +1,72 @@
+Index: ../trunk-jpl/src/c/classes/Elements/Tria.cpp
+===================================================================
+--- ../trunk-jpl/src/c/classes/Elements/Tria.cpp	(revision 27055)
++++ ../trunk-jpl/src/c/classes/Elements/Tria.cpp	(revision 27056)
+@@ -7454,7 +7454,7 @@
+ 	/*sal green function:*/
+ 	IssmDouble* G=NULL;
+ 	IssmDouble* Grot=NULL;
+-	IssmDouble* Gsub[SLGEOM_NUMLOADS];
++	IssmDouble** Gsub=NULL;
+ 	bool computefuture=false;
+ 
+ 	bool sal = false;
+@@ -7464,6 +7464,7 @@
+ 	int  size;
+ 	int  nel,nbar;
+ 
++	Gsub=xNew<IssmDouble*>(SLGEOM_NUMLOADS);
+ 
+ 	this->parameters->FindParam(&sal,SolidearthSettingsSelfAttractionEnum);
+ 	this->parameters->FindParam(&viscous,SolidearthSettingsViscousEnum);
+@@ -7483,7 +7484,7 @@
+ 	xDelete<IssmDouble>(G);
+ 	xDelete<IssmDouble>(Grot);
+ 	for (int l=0;l<SLGEOM_NUMLOADS;l++) xDelete<IssmDouble>(Gsub[l]);
+-	xDelete<IssmDouble>(Gsub[SLGEOM_NUMLOADS]);
++	xDelete<IssmDouble*>(Gsub);
+ 
+ 	return;
+ } /*}}}*/
+@@ -7541,10 +7542,10 @@
+ 	IssmDouble* GUrot=NULL;
+ 	IssmDouble* GNrot=NULL;
+ 	IssmDouble* GErot=NULL;
+-	IssmDouble* Gsub[SLGEOM_NUMLOADS];
+-	IssmDouble* GUsub[SLGEOM_NUMLOADS];
+-	IssmDouble* GNsub[SLGEOM_NUMLOADS];
+-	IssmDouble* GEsub[SLGEOM_NUMLOADS];
++	IssmDouble** Gsub;
++	IssmDouble** GUsub;
++	IssmDouble** GNsub;
++	IssmDouble** GEsub;
+ 	bool computefuture=false;
+ 
+ 	int horiz;
+@@ -7555,6 +7556,11 @@
+ 	bool percpu=false;
+ 	bool planethasocean=false;
+ 
++	Gsub=xNew<IssmDouble*>(SLGEOM_NUMLOADS);
++	GUsub=xNew<IssmDouble*>(SLGEOM_NUMLOADS);
++	GEsub=xNew<IssmDouble*>(SLGEOM_NUMLOADS);
++	GNsub=xNew<IssmDouble*>(SLGEOM_NUMLOADS);
++
+ 	this->parameters->FindParam(&nel,MeshNumberofelementsEnum);
+ 	this->parameters->FindParam(&sal,SolidearthSettingsSelfAttractionEnum);
+ 	this->parameters->FindParam(&rotation,SolidearthSettingsRotationEnum);
+@@ -7644,10 +7650,10 @@
+ 		xDelete<IssmDouble>(GNsub[l]);
+ 		xDelete<IssmDouble>(GEsub[l]);
+ 	}
+-	xDelete<IssmDouble>(Gsub[SLGEOM_NUMLOADS]);
+-	xDelete<IssmDouble>(GUsub[SLGEOM_NUMLOADS]);
+-	xDelete<IssmDouble>(GNsub[SLGEOM_NUMLOADS]);
+-	xDelete<IssmDouble>(GEsub[SLGEOM_NUMLOADS]);
++	xDelete<IssmDouble*>(Gsub);
++	xDelete<IssmDouble*>(GUsub);
++	xDelete<IssmDouble*>(GEsub);
++	xDelete<IssmDouble*>(GNsub);
+ 
+ } /*}}}*/
+ void       Tria::SealevelchangeGxL(IssmDouble* grdfieldout, IssmDouble* G, IssmDouble** Gsub, IssmDouble* Grot, GrdLoads* loads, IssmDouble* polarmotionvector, SealevelGeometry* slgeom, int nel, bool percpu, int viscousenum, bool computefuture) { /*{{{*/
Index: /issm/oecreview/Archive/27032-27229/ISSM-27056-27057.diff
===================================================================
--- /issm/oecreview/Archive/27032-27229/ISSM-27056-27057.diff	(revision 27230)
+++ /issm/oecreview/Archive/27032-27229/ISSM-27056-27057.diff	(revision 27230)
@@ -0,0 +1,41 @@
+Index: ../trunk-jpl/src/c/classes/Elements/Tria.cpp
+===================================================================
+--- ../trunk-jpl/src/c/classes/Elements/Tria.cpp	(revision 27056)
++++ ../trunk-jpl/src/c/classes/Elements/Tria.cpp	(revision 27057)
+@@ -6583,7 +6583,7 @@
+ 		//initialization
+ 		LoveRotRSL  = xNewZeroInit<IssmDouble>(nt);
+ 		LoveRotU    = xNewZeroInit<IssmDouble>(nt);
+-		LoveRothoriz= xNewZeroInit<IssmDouble>(nt);
++		if (horiz) LoveRothoriz= xNewZeroInit<IssmDouble>(nt);
+ 		Grot        = xNewZeroInit<IssmDouble>(3*3*nt); //3 polar motion components * 3 vertices * number of time steps
+ 		GUrot       = xNewZeroInit<IssmDouble>(3*3*nt);
+ 
+@@ -6708,12 +6708,12 @@
+ 			delete GUrot;
+ 			delete tide_love_h;
+ 			delete tide_love_k;
+-			delete tide_love_l;
+ 			delete LoveRotRSL;
+ 			delete LoveRotU;
+ 			if (horiz){
+ 				delete GNrot;
+ 				delete GErot;
++				delete tide_love_l;
+ 				delete LoveRothoriz;
+ 			}
+ 		}
+@@ -6744,12 +6744,12 @@
+ 			xDelete(GUrot);
+ 			xDelete(tide_love_h);
+ 			xDelete(tide_love_k);
+-			xDelete(tide_love_l);
+ 			xDelete(LoveRotRSL);
+ 			xDelete(LoveRotU);
+ 			if (horiz){
+ 				xDelete(GNrot);
+ 				xDelete(GErot);
++				xDelete(tide_love_l);
+ 				xDelete(LoveRothoriz);
+ 			}
+ 		}
Index: /issm/oecreview/Archive/27032-27229/ISSM-27059-27060.diff
===================================================================
--- /issm/oecreview/Archive/27032-27229/ISSM-27059-27060.diff	(revision 27230)
+++ /issm/oecreview/Archive/27032-27229/ISSM-27059-27060.diff	(revision 27230)
@@ -0,0 +1,34 @@
+Index: ../trunk-jpl/src/c/classes/Elements/Tria.cpp
+===================================================================
+--- ../trunk-jpl/src/c/classes/Elements/Tria.cpp	(revision 27059)
++++ ../trunk-jpl/src/c/classes/Elements/Tria.cpp	(revision 27060)
+@@ -7481,15 +7481,9 @@
+ 		this->SealevelchangeGxL(sealevelpercpu, G, Gsub, Grot, loads, polarmotionvector, slgeom, nel,percpu=true,SealevelchangeViscousRSLEnum,computefuture=false);
+ 	}
+ 
+-		cout << "DEBUG: Sealevelchange convo:";
+ 	xDelete<IssmDouble>(G);
+-		cout << " step1";
+ 	xDelete<IssmDouble>(Grot);
+-		cout << ", step2";
+-	for (int l=0;l<SLGEOM_NUMLOADS;l++) xDelete<IssmDouble>(Gsub[l]);
+-		cout << ", step3";
+ 	xDelete<IssmDouble*>(Gsub);
+-		cout << ", step4\n";
+ 
+ 	return;
+ } /*}}}*/
+@@ -7648,13 +7642,6 @@
+ 	xDelete<IssmDouble>(GUrot);
+ 	xDelete<IssmDouble>(GNrot);
+ 	xDelete<IssmDouble>(GErot);
+-
+-	for (int l=0;l<SLGEOM_NUMLOADS;l++){
+-		xDelete<IssmDouble>(Gsub[l]);
+-		xDelete<IssmDouble>(GUsub[l]);
+-		xDelete<IssmDouble>(GNsub[l]);
+-		xDelete<IssmDouble>(GEsub[l]);
+-	}
+ 	xDelete<IssmDouble*>(Gsub);
+ 	xDelete<IssmDouble*>(GUsub);
+ 	xDelete<IssmDouble*>(GEsub);
Index: /issm/oecreview/Archive/27032-27229/ISSM-27060-27061.diff
===================================================================
--- /issm/oecreview/Archive/27032-27229/ISSM-27060-27061.diff	(revision 27230)
+++ /issm/oecreview/Archive/27032-27229/ISSM-27060-27061.diff	(revision 27230)
@@ -0,0 +1,472 @@
+Index: ../trunk-jpl/src/c/analyses/SealevelchangeAnalysis.cpp
+===================================================================
+--- ../trunk-jpl/src/c/analyses/SealevelchangeAnalysis.cpp	(revision 27060)
++++ ../trunk-jpl/src/c/analyses/SealevelchangeAnalysis.cpp	(revision 27061)
+@@ -263,6 +263,9 @@
+ 			iomodel->FetchData(&love_l,&ndeg,&precomputednt,"md.solidearth.lovenumbers.l");
+ 
+ 			parameters->AddObject(new DoubleParam(SolidearthSettingsTimeAccEnum,timeacc));
++			parameters->AddObject(new DoubleMatParam(LoadLoveHEnum,love_h,ndeg,precomputednt));
++			parameters->AddObject(new DoubleMatParam(LoadLoveKEnum,love_k,ndeg,precomputednt));
++			parameters->AddObject(new DoubleMatParam(LoadLoveLEnum,love_l,ndeg,precomputednt));
+ 
+ 			if (rotation){
+ 				iomodel->FetchData(&love_th,&ndeg,&precomputednt,"md.solidearth.lovenumbers.th");
+@@ -270,6 +273,12 @@
+ 				iomodel->FetchData(&love_tl,&ndeg,&precomputednt,"md.solidearth.lovenumbers.tl");
+ 				iomodel->FetchData(&love_pmtf_colinear,&dummy,&precomputednt,"md.solidearth.lovenumbers.pmtf_colinear");
+ 				iomodel->FetchData(&love_pmtf_ortho,&dummy,&precomputednt,"md.solidearth.lovenumbers.pmtf_ortho");
++
++				parameters->AddObject(new DoubleMatParam(LovePolarMotionTransferFunctionColinearEnum,love_pmtf_colinear,1,precomputednt));
++				parameters->AddObject(new DoubleMatParam(LovePolarMotionTransferFunctionOrthogonalEnum,love_pmtf_ortho,1,precomputednt));
++				parameters->AddObject(new DoubleMatParam(TidalLoveHEnum,love_th,ndeg,precomputednt));
++				parameters->AddObject(new DoubleMatParam(TidalLoveKEnum,love_tk,ndeg,precomputednt));
++				parameters->AddObject(new DoubleMatParam(TidalLoveLEnum,love_tl,ndeg,precomputednt));
+ 			}
+ 
+ 			parameters->AddObject(new DoubleMatParam(LoveTimeFreqEnum,love_timefreq,precomputednt,1));
+@@ -585,24 +594,15 @@
+ 				xDelete<IssmDouble>(love_tl);
+ 				xDelete<IssmDouble>(G_viscoelastic);
+ 				xDelete<IssmDouble>(G_viscoelastic_local);
+-				xDelete<IssmDouble>(G_viscoelastic_interpolated);
+ 				xDelete<IssmDouble>(U_viscoelastic);
+ 				xDelete<IssmDouble>(U_viscoelastic_local);
+-				xDelete<IssmDouble>(U_viscoelastic_interpolated);
+ 				if(horiz){
+ 					xDelete<IssmDouble>(H_viscoelastic);
+ 					xDelete<IssmDouble>(H_viscoelastic_local);
+-					xDelete<IssmDouble>(H_viscoelastic_interpolated);
+ 				}
+ 				if(rotation){
+-					xDelete<IssmDouble>(Love_th2_interpolated);
+-					xDelete<IssmDouble>(Love_tk2_interpolated);
+-					if (horiz) xDelete<IssmDouble>(Love_tl2_interpolated);
+ 					xDelete<IssmDouble>(love_pmtf_colinear);
+ 					xDelete<IssmDouble>(love_pmtf_ortho);
+-					xDelete<IssmDouble>(Pmtf_col_interpolated);
+-					xDelete<IssmDouble>(Pmtf_ortho_interpolated);
+-					xDelete<IssmDouble>(Pmtf_z_interpolated);
+ 
+ 				}
+ 			}
+Index: ../trunk-jpl/src/c/classes/Elements/Tria.cpp
+===================================================================
+--- ../trunk-jpl/src/c/classes/Elements/Tria.cpp	(revision 27060)
++++ ../trunk-jpl/src/c/classes/Elements/Tria.cpp	(revision 27061)
+@@ -6397,7 +6397,6 @@
+ 	IssmDouble* LoveRotU     = NULL;
+ 	IssmDouble* LoveRothoriz = NULL;
+ 	IssmDouble*  Grot        = NULL;
+-
+ 	IssmDouble* GUrot        = NULL;
+ 	IssmDouble* GNrot        = NULL;
+ 	IssmDouble* GErot        = NULL;
+@@ -6583,11 +6582,10 @@
+ 		//initialization
+ 		LoveRotRSL  = xNewZeroInit<IssmDouble>(nt);
+ 		LoveRotU    = xNewZeroInit<IssmDouble>(nt);
+-		if (horiz) LoveRothoriz= xNewZeroInit<IssmDouble>(nt);
++		LoveRothoriz= xNewZeroInit<IssmDouble>(nt);
+ 		Grot        = xNewZeroInit<IssmDouble>(3*3*nt); //3 polar motion components * 3 vertices * number of time steps
+ 		GUrot       = xNewZeroInit<IssmDouble>(3*3*nt);
+ 
+-
+ 		if (horiz){
+ 			GErot=xNewZeroInit<IssmDouble>(3*3*nt);
+ 			GNrot=xNewZeroInit<IssmDouble>(3*3*nt);
+@@ -6680,7 +6678,6 @@
+ 		this->inputs->SetArrayInput(SealevelchangeViscousRSLEnum,this->lid,viscousRSL,3*nt);
+ 		this->inputs->SetArrayInput(SealevelchangeViscousUEnum,this->lid,viscousU,3*nt);
+ 		this->parameters->SetParam(0,SealevelchangeViscousIndexEnum);
+-
+ 		if(horiz){
+ 			viscousN=xNewZeroInit<IssmDouble>(3*nt);
+ 			viscousE=xNewZeroInit<IssmDouble>(3*nt);
+@@ -6693,77 +6690,38 @@
+ 	/*Free allocations:{{{*/
+ 	#ifdef _HAVE_RESTRICT_
+ 	delete G;
+-	delete G_gravi_precomputed;
+ 	if(computeelastic){
+ 		delete GU;
+-		delete G_viscoelastic_precomputed;
+-		delete U_viscoelastic_precomputed;
+ 		if(horiz){
+ 			delete GN;
+ 			delete GE;
+-			delete H_viscoelastic_precomputed;
+ 		}
+ 		if(computerotation){
+ 			delete Grot;
+ 			delete GUrot;
+-			delete tide_love_h;
+-			delete tide_love_k;
+-			delete LoveRotRSL;
+-			delete LoveRotU;
+ 			if (horiz){
+ 				delete GNrot;
+ 				delete GErot;
+-				delete tide_love_l;
+-				delete LoveRothoriz;
+ 			}
+ 		}
+ 	}
+-	if(computeviscous){
+-		delete viscousRSL;
+-		delete viscousU;
+-
+-		if(horiz){
+-			delete viscousN;
+-			delete viscousE;
+-		}
+-	}
+ 	#else
+ 	xDelete(G);
+-	xDelete(G_gravi_precomputed);
+ 	if(computeelastic){
+ 		xDelete(GU);
+-		xDelete(G_viscoelastic_precomputed);
+-		xDelete(U_viscoelastic_precomputed);
+ 		if(horiz){
+ 			xDelete(GN);
+ 			xDelete(GE);
+-			xDelete(H_viscoelastic_precomputed);
+ 		}
+ 		if(computerotation){
+ 			xDelete(Grot);
+ 			xDelete(GUrot);
+-			xDelete(tide_love_h);
+-			xDelete(tide_love_k);
+-			xDelete(LoveRotRSL);
+-			xDelete(LoveRotU);
+ 			if (horiz){
+ 				xDelete(GNrot);
+ 				xDelete(GErot);
+-				xDelete(tide_love_l);
+-				xDelete(LoveRothoriz);
+ 			}
+ 		}
+-		
+ 	}
+-	if(computeviscous){
+-		xDelete(viscousRSL);
+-		xDelete(viscousU);
+-
+-		if(horiz){
+-			xDelete(viscousN);
+-			xDelete(viscousE);
+-		}
+-	}
+ 	#endif
+ 	/*}}}*/
+ 	return;
+@@ -7303,13 +7261,9 @@
+ 		}
+ 	}
+ 	xDelete<IssmDouble*>(Gsubel);
+-	xDelete<IssmDouble>(G_gravi_precomputed);
+ 	if(computeelastic){
+ 		xDelete<IssmDouble*>(GUsubel);
+-		xDelete<IssmDouble>(G_viscoelastic_precomputed);
+-		xDelete<IssmDouble>(U_viscoelastic_precomputed);
+ 		if(horiz){
+-			xDelete<IssmDouble>(H_viscoelastic_precomputed);
+ 			xDelete<IssmDouble*>(GNsubel); 
+ 			xDelete<IssmDouble*>(GEsubel);
+ 		}
+@@ -7323,7 +7277,6 @@
+ 
+ 	/*Inputs:*/
+ 	IssmDouble* viscousRSL=NULL;
+-	IssmDouble* viscousSG=NULL;
+ 	IssmDouble* viscousU=NULL;
+ 	IssmDouble* viscousN=NULL;
+ 	IssmDouble* viscousE=NULL;
+@@ -7356,12 +7309,6 @@
+ 
+ 	}
+ 
+-	/*Free ressources*/
+-	xDelete<IssmDouble>(viscousRSL);
+-	xDelete<IssmDouble>(viscousU);
+-	xDelete<IssmDouble>(viscousN);
+-	xDelete<IssmDouble>(viscousE);
+-
+ }
+ /*}}}*/
+ void       Tria::SealevelchangeBarystaticLoads(GrdLoads* loads,  BarystaticContributions* barycontrib, SealevelGeometry* slgeom){ /*{{{*/
+@@ -7445,8 +7392,6 @@
+ 	/*Keep track of barystatic contributions:*/
+ 	barycontrib->Set(this->Sid(),bslcice,bslchydro,bslcbp);
+ 
+-	xDelete<IssmDouble>(areae);
+-
+ }
+ /*}}}*/
+ void       Tria::SealevelchangeConvolution(IssmDouble* sealevelpercpu, GrdLoads* loads, IssmDouble* polarmotionvector,SealevelGeometry* slgeom){ /*{{{*/
+@@ -7454,7 +7399,7 @@
+ 	/*sal green function:*/
+ 	IssmDouble* G=NULL;
+ 	IssmDouble* Grot=NULL;
+-	IssmDouble** Gsub=NULL;
++	IssmDouble* Gsub[SLGEOM_NUMLOADS];
+ 	bool computefuture=false;
+ 
+ 	bool sal = false;
+@@ -7464,7 +7409,6 @@
+ 	int  size;
+ 	int  nel,nbar;
+ 
+-	Gsub=xNew<IssmDouble*>(SLGEOM_NUMLOADS);
+ 
+ 	this->parameters->FindParam(&sal,SolidearthSettingsSelfAttractionEnum);
+ 	this->parameters->FindParam(&viscous,SolidearthSettingsViscousEnum);
+@@ -7481,10 +7425,6 @@
+ 		this->SealevelchangeGxL(sealevelpercpu, G, Gsub, Grot, loads, polarmotionvector, slgeom, nel,percpu=true,SealevelchangeViscousRSLEnum,computefuture=false);
+ 	}
+ 
+-	xDelete<IssmDouble>(G);
+-	xDelete<IssmDouble>(Grot);
+-	xDelete<IssmDouble*>(Gsub);
+-
+ 	return;
+ } /*}}}*/
+ void       Tria::SealevelchangeOceanAverage(GrdLoads* loads, Vector<IssmDouble>* oceanareas, Vector<IssmDouble>* subelementoceanareas, IssmDouble* sealevelpercpu, SealevelGeometry* slgeom){ /*{{{*/
+@@ -7537,14 +7477,13 @@
+ 	IssmDouble* GE=NULL;
+ 	IssmDouble* GN=NULL;
+ 	IssmDouble* Grot=NULL;
+-	IssmDouble* GSGrot=NULL;
+ 	IssmDouble* GUrot=NULL;
+ 	IssmDouble* GNrot=NULL;
+ 	IssmDouble* GErot=NULL;
+-	IssmDouble** Gsub;
+-	IssmDouble** GUsub;
+-	IssmDouble** GNsub;
+-	IssmDouble** GEsub;
++	IssmDouble* Gsub[SLGEOM_NUMLOADS];
++	IssmDouble* GUsub[SLGEOM_NUMLOADS];
++	IssmDouble* GNsub[SLGEOM_NUMLOADS];
++	IssmDouble* GEsub[SLGEOM_NUMLOADS];
+ 	bool computefuture=false;
+ 
+ 	int horiz;
+@@ -7555,11 +7494,6 @@
+ 	bool percpu=false;
+ 	bool planethasocean=false;
+ 
+-	Gsub=xNew<IssmDouble*>(SLGEOM_NUMLOADS);
+-	GUsub=xNew<IssmDouble*>(SLGEOM_NUMLOADS);
+-	GEsub=xNew<IssmDouble*>(SLGEOM_NUMLOADS);
+-	GNsub=xNew<IssmDouble*>(SLGEOM_NUMLOADS);
+-
+ 	this->parameters->FindParam(&nel,MeshNumberofelementsEnum);
+ 	this->parameters->FindParam(&sal,SolidearthSettingsSelfAttractionEnum);
+ 	this->parameters->FindParam(&rotation,SolidearthSettingsRotationEnum);
+@@ -7619,9 +7553,7 @@
+ 	}
+ 
+ 	/*Create geoid: */
+-	for(int i=0;i<NUMVERTICES;i++){
+-		SealevelGrd[i]=UGrd[i]+RSLGrd[i];
+-	}
++	for(int i=0;i<NUMVERTICES;i++)SealevelGrd[i]=UGrd[i]+RSLGrd[i];
+ 
+ 	/*Create inputs*/
+ 	this->AddInput(SealevelGRDEnum,SealevelGrd,P1Enum);
+@@ -7631,22 +7563,6 @@
+ 		this->AddInput(BedEastGRDEnum,EGrd,P1Enum);
+ 	}
+ 
+-	/*Free ressources*/
+-
+-	xDelete<IssmDouble>(G);
+-	xDelete<IssmDouble>(GU);
+-	xDelete<IssmDouble>(GE);
+-	xDelete<IssmDouble>(GN);
+-	xDelete<IssmDouble>(Grot);
+-	xDelete<IssmDouble>(GSGrot);
+-	xDelete<IssmDouble>(GUrot);
+-	xDelete<IssmDouble>(GNrot);
+-	xDelete<IssmDouble>(GErot);
+-	xDelete<IssmDouble*>(Gsub);
+-	xDelete<IssmDouble*>(GUsub);
+-	xDelete<IssmDouble*>(GEsub);
+-	xDelete<IssmDouble*>(GNsub);
+-
+ } /*}}}*/
+ void       Tria::SealevelchangeGxL(IssmDouble* grdfieldout, IssmDouble* G, IssmDouble** Gsub, IssmDouble* Grot, GrdLoads* loads, IssmDouble* polarmotionvector, SealevelGeometry* slgeom, int nel, bool percpu, int viscousenum, bool computefuture) { /*{{{*/
+ 
+@@ -7661,12 +7577,6 @@
+ 	int viscousindex=0; //important
+ 	int viscousnumsteps=1; //important
+ 
+-	IssmDouble* grdfieldinterp=NULL;
+-	IssmDouble* viscoustimes=NULL;
+-	IssmDouble  final_time;
+-	IssmDouble  lincoeff;
+-	IssmDouble  timeacc;
+-
+ 	this->parameters->FindParam(&computeviscous,SolidearthSettingsViscousEnum);
+ 	this->parameters->FindParam(&rotation,SolidearthSettingsRotationEnum);
+ 	if(computeviscous){
+@@ -7750,6 +7660,12 @@
+ 		// 2: collect viscous grdfield from past loads due at present-day and add it to grdfield[current_time]
+ 		// 3*: subtract from viscous stack the grdfield that has already been accounted for so we don't add it again at the next time step
+ 
++		IssmDouble* grdfieldinterp=NULL;
++		IssmDouble* viscoustimes=NULL;
++		IssmDouble  final_time;
++		IssmDouble  lincoeff;
++		IssmDouble  timeacc;
++
+ 		this->parameters->FindParam(&viscoustimes,NULL,SealevelchangeViscousTimesEnum);
+ 		this->parameters->FindParam(&final_time,TimesteppingFinalTimeEnum);
+ 		this->parameters->FindParam(&timeacc,SolidearthSettingsTimeAccEnum);
+@@ -7793,6 +7709,8 @@
+ 			this->inputs->SetArrayInput(viscousenum,this->lid,viscousfield,3*viscousnumsteps);
+ 		}
+ 
++		/*Free allocatoins:*/
++		xDelete<IssmDouble>(viscoustimes);
+ 	} 
+ 	/*}}}*/
+ 
+@@ -7808,17 +7726,6 @@
+ 		for(i=0;i<NUMVERTICES;i++) grdfieldout[i]=grdfield[i*nt+0];
+ 	}
+ 
+-
+-	/*Free allocatoins:*/
+-	xDelete<IssmDouble>(grdfield);
+-	if (computeviscous){
+-		xDelete<IssmDouble>(viscoustimes);
+-		xDelete<IssmDouble>(viscousfield);
+-		if(computefuture){
+-			xDelete<IssmDouble>(grdfieldinterp);
+-		}
+-	}
+-
+ } /*}}}*/
+ 
+ void       Tria::SealevelchangeShift(GrdLoads* loads,  IssmDouble offset, SealevelGeometry* slgeom){ /*{{{*/
+@@ -7832,7 +7739,6 @@
+ 	}
+ 
+ } /*}}}*/
+-
+ #endif
+ 
+ #ifdef _HAVE_DAKOTA_
+Index: ../trunk-jpl/src/c/cores/sealevelchange_core.cpp
+===================================================================
+--- ../trunk-jpl/src/c/cores/sealevelchange_core.cpp	(revision 27060)
++++ ../trunk-jpl/src/c/cores/sealevelchange_core.cpp	(revision 27061)
+@@ -339,8 +339,6 @@
+ 			element->SealevelchangeConvolution(sealevelpercpu, loads, polarmotionvector,slgeom);
+ 		}
+ 
+-		cout << "DEBUG: Sealevelchange convolution cleared\n";
+-
+ 		/*retrieve sea level average  and ocean area:*/
+ 		for(Object* & object : femmodel->elements->objects){
+ 			Element* element = xDynamicCast<Element*>(object);
+@@ -347,8 +345,6 @@
+ 			element->SealevelchangeOceanAverage(loads, oceanareas, subelementoceanareas, sealevelpercpu, slgeom);
+ 		}
+ 
+-		cout << "DEBUG: Sealevelchange Oceanavaverage cleared\n";
+-
+ 		loads->AssembleSealevelLoads();
+ 
+ 		/*compute ocean areas:*/
+@@ -363,8 +359,6 @@
+ 		oceanaverage=SealevelloadsOceanAverage(loads, oceanareas,subelementoceanareas, totaloceanarea);
+ 		ConserveOceanMass(femmodel,loads,barycontrib->Total()/totaloceanarea - oceanaverage,slgeom);
+ 
+-		cout << "DEBUG: Sealevelchange Conserve ocean mass cleared\n";
+-
+ 		//broadcast sea level loads 
+ 		loads->BroadcastSealevelLoads();
+ 
+@@ -371,7 +365,6 @@
+ 		//convergence?
+ 		if(slcconvergence(loads->vsealevelloads,oldsealevelloads,eps_rel,eps_abs))break;
+ 
+-		cout << "DEBUG: Sealevelchange convergence cleared\n";
+ 		//early return?
+ 		if(iterations>=max_nonlinear_iterations)break;
+ 		iterations++;
+@@ -436,12 +429,6 @@
+ 		femmodel->inputs->AXPY(1,BedNorthGRDEnum, BedNorthEnum);
+ 	}
+ 
+-	/*Free ressources*/
+-	delete loads;
+-	delete oldsealevelloads;
+-	delete oceanareas;
+-	delete subelementoceanareas;
+-
+ }
+ /*}}}*/
+ void              dynstr_core(FemModel* femmodel){ /*{{{*/
+@@ -619,11 +606,6 @@
+ 	femmodel->results->AddResult(new GenericExternalResult<IssmDouble*>(femmodel->results->Size()+1,AreaeEnum,areae,nel,1,1,1));
+ 	#endif
+ 
+-	xDelete<IssmDouble>(xxe);
+-	xDelete<IssmDouble>(yye);
+-	xDelete<IssmDouble>(zze);
+-	xDelete<IssmDouble>(areae);
+-
+ 	return;
+ 
+ }/*}}}*/
+@@ -690,11 +672,6 @@
+ 	femmodel->parameters->AddObject(new DoubleVecParam(ZzeEnum,zze,nel));
+ 	femmodel->parameters->AddObject(new DoubleVecParam(AreaeEnum,areae,nel));
+ 
+-	xDelete<IssmDouble>(xxe);
+-	xDelete<IssmDouble>(yye);
+-	xDelete<IssmDouble>(zze);
+-	xDelete<IssmDouble>(areae);
+-
+ 	return slgeom;
+ 
+ }/*}}}*/
+@@ -886,13 +863,7 @@
+ 	xDelete<IssmDouble>(m1);
+ 	xDelete<IssmDouble>(m2);
+ 	xDelete<IssmDouble>(m3);
+-
+-	xDelete<IssmDouble>(pmtf_col);
+-	xDelete<IssmDouble>(pmtf_ortho);
+-	xDelete<IssmDouble>(pmtf_z);
+ 	if (viscous){
+-		xDelete<IssmDouble>(viscoustimes);
+-																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																			xDelete<IssmDouble>(viscouspolarmotion);
+ 		if (computefuture){
+ 			xDelete<IssmDouble>(m1interp);
+ 			xDelete<IssmDouble>(m2interp);
+@@ -963,11 +934,10 @@
+ 
+ 		/*free allocations:*/
+ 		xDelete<IssmDouble>(viscoustimes);
+-		if (rotation) xDelete<IssmDouble>(viscouspolarmotion);
+ 	}
+ 
+ 
+-} /*}}}*/
++}
+ void        ConserveOceanMass(FemModel* femmodel,GrdLoads* loads, IssmDouble offset, SealevelGeometry* slgeom){ /*{{{*/
+ 
+ 	/*Shift sealevel loads by ocean average, only on ocean! :*/
+@@ -1003,7 +973,6 @@
+ 	vloadcopy->Assemble();
+ 	loadcopy=vloadcopy->ToMPISerial();
+ 
+-	delete vloadcopy;
+ 	return loadcopy;
+ 
+ } /*}}}*/
Index: /issm/oecreview/Archive/27032-27229/ISSM-27061-27062.diff
===================================================================
--- /issm/oecreview/Archive/27032-27229/ISSM-27061-27062.diff	(revision 27230)
+++ /issm/oecreview/Archive/27032-27229/ISSM-27061-27062.diff	(revision 27230)
@@ -0,0 +1,23 @@
+Index: ../trunk-jpl/src/wrappers/IssmConfig/IssmConfig.cpp
+===================================================================
+--- ../trunk-jpl/src/wrappers/IssmConfig/IssmConfig.cpp	(revision 27061)
++++ ../trunk-jpl/src/wrappers/IssmConfig/IssmConfig.cpp	(revision 27062)
+@@ -97,6 +97,18 @@
+ 		_error_("_PETSC_MINOR_ not found in config.h");
+ 		#endif
+ 	}
++	else if(strcmp(name,"_PETSC_HAVE_CUDA_")==0){
++		value = 0.;
++		#ifdef PETSC_HAVE_CUDA
++		value = 1.;
++		#endif
++	}
++	else if(strcmp(name,"_PETSC_HAVE_PASTIX_")==0){
++		value = 0.;
++		#ifdef PETSC_HAVE_PASTIX
++		value = 1.;
++		#endif
++	}
+ 	else if(strcmp(name,"_DAKOTA_VERSION_")==0){
+ 		#ifdef _DAKOTA_VERSION_
+ 		isstring = true;
Index: /issm/oecreview/Archive/27032-27229/ISSM-27062-27063.diff
===================================================================
--- /issm/oecreview/Archive/27032-27229/ISSM-27062-27063.diff	(revision 27230)
+++ /issm/oecreview/Archive/27032-27229/ISSM-27062-27063.diff	(revision 27230)
@@ -0,0 +1,19 @@
+Index: ../trunk-jpl/m4/issm_options.m4
+===================================================================
+--- ../trunk-jpl/m4/issm_options.m4	(revision 27062)
++++ ../trunk-jpl/m4/issm_options.m4	(revision 27063)
+@@ -825,10 +825,12 @@
+ 			PYTHONLIB="-L${PYTHON_ROOT}/lib/x86_64-linux-gnu -lpython${PYTHON_VERSION}"
+ 		elif ls ${PYTHON_ROOT}/lib/libpython${PYTHON_VERSION}m.* 1> /dev/null 2>&1; then
+ 			PYTHONLIB="-L${PYTHON_ROOT}/lib -lpython${PYTHON_VERSION}m"
++		elif ls ${PYTHON_ROOT}/lib/libpython${PYTHON_VERSION}.* 1> /dev/null 2>&1; then
++			PYTHONLIB="-L${PYTHON_ROOT}/lib -lpython${PYTHON_VERSION}"
+ 		elif ls ${PYTHON_ROOT}/lib64/libpython${PYTHON_VERSION}m.* 1> /dev/null 2>&1; then
+ 			PYTHONLIB="-L${PYTHON_ROOT}/lib64 -lpython${PYTHON_VERSION}m"
+-		elif ls ${PYTHON_ROOT}/lib/libpython${PYTHON_VERSION}.* 1> /dev/null 2>&1; then
+-			PYTHONLIB="-L${PYTHON_ROOT}/lib -lpython${PYTHON_VERSION}"
++		elif ls ${PYTHON_ROOT}/lib64/libpython${PYTHON_VERSION}.* 1> /dev/null 2>&1; then
++			PYTHONLIB="-L${PYTHON_ROOT}/lib64 -lpython${PYTHON_VERSION}"
+ 		else
+ 			AC_MSG_ERROR([libpython not found! Please locate this file and contact ISSM developers via forum or email.]);
+ 		fi
Index: /issm/oecreview/Archive/27032-27229/ISSM-27063-27064.diff
===================================================================
--- /issm/oecreview/Archive/27032-27229/ISSM-27063-27064.diff	(revision 27230)
+++ /issm/oecreview/Archive/27032-27229/ISSM-27063-27064.diff	(revision 27230)
@@ -0,0 +1,113 @@
+Index: ../trunk-jpl/packagers/linux/package-issm-linux-binaries-matlab.sh
+===================================================================
+--- ../trunk-jpl/packagers/linux/package-issm-linux-binaries-matlab.sh	(revision 27063)
++++ ../trunk-jpl/packagers/linux/package-issm-linux-binaries-matlab.sh	(revision 27064)
+@@ -121,7 +121,7 @@
+ 	${MATLAB_PATH}/bin/matlab -nojvm -nosplash -nojvm -r "try, addpath ${ISSM_DIR}/bin ${ISSM_DIR}/lib; runme(${MATLAB_NROPTIONS}); exit; catch me,fprintf('%s',getReport(me)); exit; end" &> matlab.log
+ 
+ 	# Check that MATLAB did not exit in error
+-	matlabExitedInError=`grep -E "Activation cannot proceed|Error in matlab_run|Illegal use of reserved keyword" matlab.log | wc -l`
++	matlabExitedInError=`grep -E "Activation cannot proceed|Error in matlab_run|Illegal use of reserved keyword|Invalid MEX-file" matlab.log | wc -l`
+ 
+ 	if [ ${matlabExitedInError} -ne 0 ]; then
+ 		echo "----------MATLAB exited in error!----------"
+@@ -135,7 +135,7 @@
+ 	fi
+ 
+ 	# Check that all tests passed
+-	numTestsFailed=`cat matlab.log | grep -c -e "FAILED|ERROR"`
++	numTestsFailed=`grep -E "FAILED|ERROR" matlab.log | wc -l`
+ 
+ 	if [ ${numTestsFailed} -ne 0 ]; then
+ 		echo "One or more tests FAILED"
+Index: ../trunk-jpl/packagers/linux/package-issm-linux-binaries-python-2.sh
+===================================================================
+--- ../trunk-jpl/packagers/linux/package-issm-linux-binaries-python-2.sh	(revision 27063)
++++ ../trunk-jpl/packagers/linux/package-issm-linux-binaries-python-2.sh	(revision 27064)
+@@ -135,7 +135,7 @@
+ 	fi
+ 
+ 	# Check that all tests passed
+-	numTestsFailed=`cat python.log | grep -c -e "FAILED|ERROR"`
++	numTestsFailed=`grep -E "FAILED|ERROR" python.log | wc -l`
+ 
+ 	if [[ ${numTestsFailed} -ne 0 ]]; then
+ 		echo "One or more tests FAILED"
+Index: ../trunk-jpl/packagers/linux/package-issm-linux-binaries-python-3.sh
+===================================================================
+--- ../trunk-jpl/packagers/linux/package-issm-linux-binaries-python-3.sh	(revision 27063)
++++ ../trunk-jpl/packagers/linux/package-issm-linux-binaries-python-3.sh	(revision 27064)
+@@ -138,7 +138,7 @@
+ 	fi
+ 
+ 	# Check that all tests passed
+-	numTestsFailed=`cat python.log | grep -c -e "FAILED|ERROR"`
++	numTestsFailed=`grep -E "FAILED|ERROR" python.log | wc -l`
+ 
+ 	if [[ ${numTestsFailed} -ne 0 ]]; then
+ 		echo "One or more tests FAILED"
+Index: ../trunk-jpl/packagers/mac/package-issm-mac-binaries-matlab.sh
+===================================================================
+--- ../trunk-jpl/packagers/mac/package-issm-mac-binaries-matlab.sh	(revision 27063)
++++ ../trunk-jpl/packagers/mac/package-issm-mac-binaries-matlab.sh	(revision 27064)
+@@ -149,7 +149,7 @@
+ 	fi
+ 
+ 	# Check that all tests passed
+-	numTestsFailed=`cat matlab.log | grep -c -e "FAILED|ERROR"`
++	numTestsFailed=`grep -E "FAILED|ERROR" matlab.log | wc -l`
+ 
+ 	if [ ${numTestsFailed} -ne 0 ]; then
+ 		echo "One or more tests FAILED"
+Index: ../trunk-jpl/packagers/mac/package-issm-mac-binaries-python-2.sh
+===================================================================
+--- ../trunk-jpl/packagers/mac/package-issm-mac-binaries-python-2.sh	(revision 27063)
++++ ../trunk-jpl/packagers/mac/package-issm-mac-binaries-python-2.sh	(revision 27064)
+@@ -147,7 +147,7 @@
+ 	fi
+ 
+ 	# Check that all tests passed
+-	numTestsFailed=`cat python.log | grep -c -e "FAILED|ERROR"`
++	numTestsFailed=`grep -E "FAILED|ERROR" python.log | wc -l`
+ 
+ 	if [ ${numTestsFailed} -ne 0 ]; then
+ 		echo "One or more tests FAILED"
+Index: ../trunk-jpl/packagers/mac/package-issm-mac-binaries-python-3.sh
+===================================================================
+--- ../trunk-jpl/packagers/mac/package-issm-mac-binaries-python-3.sh	(revision 27063)
++++ ../trunk-jpl/packagers/mac/package-issm-mac-binaries-python-3.sh	(revision 27064)
+@@ -150,7 +150,7 @@
+ 	fi
+ 
+ 	# Check that all tests passed
+-	numTestsFailed=`cat python.log | grep -c -e "FAILED|ERROR"`
++	numTestsFailed=`grep -E "FAILED|ERROR" python.log | wc -l`
+ 
+ 	if [ ${numTestsFailed} -ne 0 ]; then
+ 		echo "One or more tests FAILED"
+Index: ../trunk-jpl/src/wrappers/matlab/Makefile.am
+===================================================================
+--- ../trunk-jpl/src/wrappers/matlab/Makefile.am	(revision 27063)
++++ ../trunk-jpl/src/wrappers/matlab/Makefile.am	(revision 27064)
+@@ -121,7 +121,7 @@
+ if MAC
+ AM_LDFLAGS += -Wl,-rpath,'@rpath'
+ else
+-AM_LDFLAGS += -Wl,-static -Wl,--disable-new-dtags -Wl,-rpath,'$$ORIGIN'
++AM_LDFLAGS += -Wl,-static -Wl,-lbacktrace -Wl,--disable-new-dtags -Wl,-rpath,'$$ORIGIN'
+ endif
+ endif
+ 
+Index: ../trunk-jpl/src/wrappers/python/Makefile.am
+===================================================================
+--- ../trunk-jpl/src/wrappers/python/Makefile.am	(revision 27063)
++++ ../trunk-jpl/src/wrappers/python/Makefile.am	(revision 27064)
+@@ -75,7 +75,7 @@
+ if MAC
+ AM_LDFLAGS += -Wl,-rpath,'@rpath'
+ else
+-AM_LDFLAGS += -Wl,-static -Wl,--disable-new-dtags -Wl,-rpath,'$$ORIGIN'
++AM_LDFLAGS += -Wl,-static -Wl,-lbacktrace -Wl,--disable-new-dtags -Wl,-rpath,'$$ORIGIN'
+ endif
+ endif
+ 
Index: /issm/oecreview/Archive/27032-27229/ISSM-27085-27086.diff
===================================================================
--- /issm/oecreview/Archive/27032-27229/ISSM-27085-27086.diff	(revision 27230)
+++ /issm/oecreview/Archive/27032-27229/ISSM-27085-27086.diff	(revision 27230)
@@ -0,0 +1,118 @@
+Index: ../trunk-jpl/packagers/linux/package-issm-linux-binaries-matlab.sh
+===================================================================
+--- ../trunk-jpl/packagers/linux/package-issm-linux-binaries-matlab.sh	(revision 27085)
++++ ../trunk-jpl/packagers/linux/package-issm-linux-binaries-matlab.sh	(revision 27086)
+@@ -108,6 +108,15 @@
+ 	exit 1
+ fi
+ 
++echo "Moving PROJ assets to share/"
++if [ -f ${ISSM_DIR}/externalpackages/share/proj ]; then
++	mkdir ${ISSM_DIR}/share 2> /dev/null
++	cp ${ISSM_DIR}/externalpackages/share/proj $ISSM_DIR/share
++else
++	echo "PROJ not found"
++	exit 1
++fi
++
+ echo "Moving libgfortran to lib/"
+ cp ${LIBGFORTRAN} ${LIBGFORTRAN_DIST} 2> /dev/null
+ 
+Index: ../trunk-jpl/packagers/linux/package-issm-linux-binaries-python-2.sh
+===================================================================
+--- ../trunk-jpl/packagers/linux/package-issm-linux-binaries-python-2.sh	(revision 27085)
++++ ../trunk-jpl/packagers/linux/package-issm-linux-binaries-python-2.sh	(revision 27086)
+@@ -104,6 +104,14 @@
+ echo "Moving libgfortran to lib/"
+ cp ${LIBGFORTRAN} ${LIBGFORTRAN_DIST} 2> /dev/null
+ 
++echo "Moving PROJ assets to share/"
++if [ -f ${ISSM_DIR}/externalpackages/share/proj ]; then
++	mkdir ${ISSM_DIR}/share 2> /dev/null
++	cp ${ISSM_DIR}/externalpackages/share/proj $ISSM_DIR/share
++else
++	echo "PROJ not found"
++	exit 1
++fi
+ 
+ # Run tests
+ if [ ${skip_tests} -eq 0 ]; then
+Index: ../trunk-jpl/packagers/linux/package-issm-linux-binaries-python-3.sh
+===================================================================
+--- ../trunk-jpl/packagers/linux/package-issm-linux-binaries-python-3.sh	(revision 27085)
++++ ../trunk-jpl/packagers/linux/package-issm-linux-binaries-python-3.sh	(revision 27086)
+@@ -104,6 +104,14 @@
+ echo "Moving libgfortran to lib/"
+ cp ${LIBGFORTRAN} ${LIBGFORTRAN_DIST} 2> /dev/null
+ 
++echo "Moving PROJ assets to share/"
++if [ -f ${ISSM_DIR}/externalpackages/share/proj ]; then
++	mkdir ${ISSM_DIR}/share 2> /dev/null
++	cp ${ISSM_DIR}/externalpackages/share/proj $ISSM_DIR/share
++else
++	echo "PROJ not found"
++	exit 1
++fi
+ 
+ # Run tests
+ if [ ${skip_tests} -eq 0 ]; then
+Index: ../trunk-jpl/packagers/mac/package-issm-mac-binaries-matlab.sh
+===================================================================
+--- ../trunk-jpl/packagers/mac/package-issm-mac-binaries-matlab.sh	(revision 27085)
++++ ../trunk-jpl/packagers/mac/package-issm-mac-binaries-matlab.sh	(revision 27086)
+@@ -125,6 +125,15 @@
+ 	exit 1
+ fi
+ 
++echo "Moving PROJ assets to share/"
++if [ -f ${ISSM_DIR}/externalpackages/share/proj ]; then
++	mkdir ${ISSM_DIR}/share 2> /dev/null
++	cp ${ISSM_DIR}/externalpackages/share/proj $ISSM_DIR/share
++else
++	echo "PROJ not found"
++	exit 1
++fi
++
+ # Run tests
+ if [ ${skip_tests} -eq 0 ]; then
+ 	echo "Running tests"
+Index: ../trunk-jpl/packagers/mac/package-issm-mac-binaries-python-2.sh
+===================================================================
+--- ../trunk-jpl/packagers/mac/package-issm-mac-binaries-python-2.sh	(revision 27085)
++++ ../trunk-jpl/packagers/mac/package-issm-mac-binaries-python-2.sh	(revision 27086)
+@@ -117,6 +117,15 @@
+ 	exit 1
+ fi
+ 
++echo "Moving PROJ assets to share/"
++if [ -f ${ISSM_DIR}/externalpackages/share/proj ]; then
++	mkdir ${ISSM_DIR}/share 2> /dev/null
++	cp ${ISSM_DIR}/externalpackages/share/proj $ISSM_DIR/share
++else
++	echo "PROJ not found"
++	exit 1
++fi
++
+ # Run tests
+ if [ ${skip_tests} -eq 0 ]; then
+ 	echo "Running tests"
+Index: ../trunk-jpl/packagers/mac/package-issm-mac-binaries-python-3.sh
+===================================================================
+--- ../trunk-jpl/packagers/mac/package-issm-mac-binaries-python-3.sh	(revision 27085)
++++ ../trunk-jpl/packagers/mac/package-issm-mac-binaries-python-3.sh	(revision 27086)
+@@ -117,6 +117,15 @@
+ 	exit 1
+ fi
+ 
++echo "Moving PROJ assets to share/"
++if [ -f ${ISSM_DIR}/externalpackages/share/proj ]; then
++	mkdir ${ISSM_DIR}/share 2> /dev/null
++	cp ${ISSM_DIR}/externalpackages/share/proj $ISSM_DIR/share
++else
++	echo "PROJ not found"
++	exit 1
++fi
++
+ # Run tests
+ if [ ${skip_tests} -eq 0 ]; then
+ 	echo "Running tests"
Index: /issm/oecreview/Archive/27032-27229/ISSM-27086-27087.diff
===================================================================
--- /issm/oecreview/Archive/27032-27229/ISSM-27086-27087.diff	(revision 27230)
+++ /issm/oecreview/Archive/27032-27229/ISSM-27086-27087.diff	(revision 27230)
@@ -0,0 +1,176 @@
+Index: ../trunk-jpl/src/m/plot/applyoptions.py
+===================================================================
+--- ../trunk-jpl/src/m/plot/applyoptions.py	(revision 27086)
++++ ../trunk-jpl/src/m/plot/applyoptions.py	(revision 27087)
+@@ -10,6 +10,7 @@
+ from expdisp import expdisp
+ from plot_contour import plot_contour
+ from plot_streamlines import plot_streamlines
++from plot_edgeoverlay import plot_edgeoverlay
+ 
+ 
+ def applyoptions(md, data, options, fig, axgrid, gridindex):
+@@ -155,14 +156,11 @@
+     # }}}
+     # {{{ ShowBasins TODO
+     # }}}
+-    # {{{ clim
+-    if options.exist('clim'):
+-        lims = options.getfieldvalue('clim')
+-        assert len(lims) == 2, 'error, clim should be passed as a list of length 2'
+-    elif options.exist('caxis'):
++    # {{{ caxis
++    if options.exist('caxis'):
+         lims = options.getfieldvalue('caxis')
+         assert len(lims) == 2, 'error, caxis should be passed as a list of length 2'
+-        options.addfielddefault('clim', lims)
++        options.addfielddefault('caxis', lims)
+     else:
+         if len(data) > 0:
+             lims = [data.min(), data.max()]
+@@ -192,6 +190,11 @@
+     if options.exist('contourlevels'):
+         plot_contour(md, data, options, ax)
+     # }}}
++    # {{{ edgeoverlay
++    if options.exist('edgeoverlay'):
++        edgedata = options.getfieldvalue('edgeoverlay')
++        plot_edgeoverlay(md, edgedata, options, ax)
++    # }}}
+     # {{{ wrapping TODO
+     # }}}
+     # {{{ colorbar
+Index: ../trunk-jpl/src/m/plot/plot_unit.py
+===================================================================
+--- ../trunk-jpl/src/m/plot/plot_unit.py	(revision 27086)
++++ ../trunk-jpl/src/m/plot/plot_unit.py	(revision 27087)
+@@ -51,10 +51,10 @@
+     else:
+         cmap = getcolormap(options)
+     if options.exist('cmap_set_over'):
+-        over = options.getfieldvalue('cmap_set_over', '0.5')
++        over = options.getfieldvalue('cmap_set_over', 'k')
+         cmap.set_over(over)
+     if options.exist('cmap_set_under'):
+-        under = options.getfieldvalue('cmap_set_under', '0.5')
++        under = options.getfieldvalue('cmap_set_under', 'k')
+         cmap.set_under(under)
+     options.addfield('colormap', cmap)
+     # }}}
+@@ -74,9 +74,7 @@
+     else:
+         limextent = 0.
+ 
+-    if options.exist('clim'):
+-        lims = options.getfieldvalue('clim', [np.nanmin(data), np.nanmax(data)])
+-    elif options.exist('caxis'):
++    if options.exist('caxis'):
+         lims = options.getfieldvalue('caxis', [np.nanmin(data), np.nanmax(data)])
+     else:
+         if limextent == 0.:
+@@ -92,16 +90,11 @@
+         norm = mpl.colors.LogNorm(vmin=lims[0], vmax=lims[1])
+     else:
+         norm = mpl.colors.Normalize(vmin=lims[0], vmax=lims[1])
+-    if options.exist('log'):
+-        norm = mpl.colors.LogNorm(vmin=lims[0], vmax=lims[1])
+-    else:
+-        norm = mpl.colors.Normalize(vmin=lims[0], vmax=lims[1])
+     options.addfield('colornorm', norm)
+     # }}}
+ 
+     # Plot depending on the datatype
+     # {{{ data are on elements
+-
+     if datatype == 1:
+         if is2d:
+             if options.exist('mask'):
+Index: ../trunk-jpl/src/m/plot/plotmodel.py
+===================================================================
+--- ../trunk-jpl/src/m/plot/plotmodel.py	(revision 27086)
++++ ../trunk-jpl/src/m/plot/plotmodel.py	(revision 27087)
+@@ -85,11 +85,11 @@
+         # NOTE: The inline comments for each of the following parameters are
+         #       taken from https://matplotlib.org/api/_as_gen/mpl_toolkits.axes_grid1.axes_grid.ImageGrid.html
+         #
+-        direction = options.list[0].getfieldvalue('direction', 'row') # {"row", "column"}, default: "row"
+-        axes_pad = options.list[0].getfieldvalue('axes_pad', 0.25) # float or (float, float), default : 0.02; Padding or (horizonal padding, vertical padding) between axes, in inches
+-        add_all = options.list[0].getfieldvalue('add_all', True) # bool, default: True
+-        share_all = options.list[0].getfieldvalue('share_all', True) # bool, default: False
+-        label_mode = options.list[0].getfieldvalue('label_mode', 'L') # {"L", "1", "all"}, default: "L"; Determines which axes will get tick labels: "L": All axes on the left column get vertical tick labels; all axes on the bottom row get horizontal tick labels;. "1": Only the bottom left axes is labelled. "all": all axes are labelled.
++        direction = options.list[0].getfieldvalue('direction', 'row')  # {"row", "column"}, default: "row"
++        axes_pad = options.list[0].getfieldvalue('axes_pad', 0.25)  # float or (float, float), default : 0.02; Padding or (horizonal padding, vertical padding) between axes, in inches
++        add_all = options.list[0].getfieldvalue('add_all', True)  # bool, default: True
++        share_all = options.list[0].getfieldvalue('share_all', True)  # bool, default: False
++        label_mode = options.list[0].getfieldvalue('label_mode', 'L')  # {"L", "1", "all"}, default: "L"; Determines which axes will get tick labels: "L": All axes on the left column get vertical tick labels; all axes on the bottom row get horizontal tick labels;. "1": Only the bottom left axes is labelled. "all": all axes are labelled.
+ 
+         # Translate MATLAB colorbar mode to matplotlib
+         #
+Index: ../trunk-jpl/src/m/plot/processdata.py
+===================================================================
+--- ../trunk-jpl/src/m/plot/processdata.py	(revision 27086)
++++ ../trunk-jpl/src/m/plot/processdata.py	(revision 27087)
+@@ -59,10 +59,24 @@
+ 
+     #  quiver plot {{{
+     if datasize[1] > 1 and datasize[0] != numberofvertices + 1:
+-        if datasize[0] == numberofvertices and datasize[1] == 2:
++        if datasize[0] == numberofvertices and datasize[1] in [2, 3]:
+             datatype = 3
++            if md.mesh.dimension() == 3:
++                if datasize[1] == 2:
++                    data = np.hstack(data, np.zeros((datasize[0])))
++                elif datasize[1] > 3:
++                    raise ValueError('plotmodel error message: data should have two or three columns of length md.mesh.numberofvertices for a quiver plot')
+         else:
+-            raise ValueError('plotmodel error message: data should have two columns of length md.mesh.numberofvertices for a quiver plot')
++            #we should have a patch
++            print("Assuming that data provided is a patch")
++            datatype = 4
++            index = md.mesh.elements
++            if np.shape(data)[1] < np.shape(index)[1]:
++                    raise ValueError('plotmodel error message: data should have more columns than vertices per elements to plot a patch')
++            procdata = np.zeros((numberofvertices))
++            procdata[md.mesh.elements -1] = data[:, 0:np.shape(index)[1]]
++            datasize = [numberofvertices, 1]
++
+     # }}}
+ 
+     #  element data{{{
+@@ -141,18 +155,26 @@
+     #  process NaN's if any {{{
+     nanfill = options.getfieldvalue('nan', -9999)
+     if np.any(np.isnan(procdata)):
+-        lb = np.nanmin(procdata)
+-        ub = np.nanmax(procdata)
+-        if lb == ub:
+-            lb = lb - 0.5
+-            ub = ub + 0.5
+-            nanfill = lb - 1
++        if options.exist('caxis'):
++            [lb, ub] = options.getfieldvalue('caxis')
++        else:
++            lb = np.nanmin(procdata)
++            ub = np.nanmax(procdata)
++            if lb == ub:
++                lb = lb - 0.5
++                ub = ub + 0.5
++                nanfill = lb - 1
++            options.addfielddefault('caxis', [lb, ub])
++
+         procdata[np.isnan(procdata)] = nanfill
+         procdata = np.ma.array(procdata, mask=np.isnan(procdata))
+-        #clim looks to be deprecated and replaced by caxis
+-        #options.addfielddefault('clim', [lb, ub])
+-        options.addfielddefault('cmap_set_under', '1')
+-        print(("WARNING: nan's treated as", nanfill, "by default.  Change using pairoption 'nan', nan_fill_value in plotmodel call"))
++        print('from nan processing {} and {}'.format(lb, ub))
++        if nanfill < lb:
++            options.addfielddefault('cmap_set_under', 'k')
++        elif nanfill > ub:
++            options.addfielddefault('cmap_set_over', 'k')
++        if nanfill < ub and nanfill > lb:
++            print(("WARNING: nan's treated as", nanfill, "by default. Which is in your data interval, change it with ['nan', value] in plotmodel options"))
+     # }}}
+ 
+     #  if datatype is still zero, error out {{{
Index: /issm/oecreview/Archive/27032-27229/ISSM-27087-27088.diff
===================================================================
--- /issm/oecreview/Archive/27032-27229/ISSM-27087-27088.diff	(revision 27230)
+++ /issm/oecreview/Archive/27032-27229/ISSM-27087-27088.diff	(revision 27230)
@@ -0,0 +1,121 @@
+Index: ../trunk-jpl/src/m/plot/plot_BC.py
+===================================================================
+--- ../trunk-jpl/src/m/plot/plot_BC.py	(revision 27087)
++++ ../trunk-jpl/src/m/plot/plot_BC.py	(revision 27088)
+@@ -3,6 +3,7 @@
+ from applyoptions import applyoptions
+ from plot_icefront import plot_icefront
+ from hydrologydc import hydrologydc
++from hydrologyglads import hydrologyglads
+ from mpl_toolkits.mplot3d import Axes3D
+ from mpl_toolkits.axes_grid1.inset_locator import inset_axes
+ 
+@@ -35,7 +36,8 @@
+     if dirichleton == 'on':
+         #define what to plot with plot style
+         spc_dict = {'spcvx': ['stressbalance', 'o', 'r', 240, 'vx Dirichlet'],
+-                    'spcvy': ['stressbalance', 'o', 'b', 160, 'vy Dirichlet']}
++                    'spcvy': ['stressbalance', 'o', 'b', 160, 'vy Dirichlet'],
++                    'spcthickness': ['masstransport', 'o', 'k', 40, 'Thickness']}
+         if not is2d:
+             spc_dict['spcvz'] = ['stressbalance', 'o', 'y', 80, 'vy Dirichlet']
+ 
+@@ -44,6 +46,9 @@
+             if md.hydrology.isefficientlayer:
+                 spc_dict['spcsediment_head'] = ['hydrology', '^', 'b', 240, 'IDS Head']
+ 
++        if isinstance(md.hydrology, hydrologyglads):
++            spc_dict['spcphi'] = ['hydrology', 'v', 'r', 240, 'phi']
++
+         for key in spc_dict:
+             mark = spc_dict[str(key)][1]
+             color = spc_dict[str(key)][2]
+Index: ../trunk-jpl/src/m/plot/plot_edgeoverlay.py
+===================================================================
+--- ../trunk-jpl/src/m/plot/plot_edgeoverlay.py	(nonexistent)
++++ ../trunk-jpl/src/m/plot/plot_edgeoverlay.py	(revision 27088)
+@@ -0,0 +1,44 @@
++import numpy as np
++import matplotlib as mpl
++import matplotlib.pyplot as plt
++from processmesh import processmesh
++
++
++def plot_edgeoverlay(md, datain, options, ax):
++    '''
++    plot_channels - plot channels area for GLADS
++    Usage:
++        plot_channels(md, options, fig, axes)
++
++    See also: PLOTMODEL'''
++
++    x, y, z, elements, is2d, isplanet = processmesh(md, [], options)
++
++    flags = datain > 6.7e-5  # this is appropriate for channel Area (perhaps)
++    hide = np.invert(flags)
++
++    NodeMask = np.zeros(np.shape(md.mesh.x), dtype=bool)
++    HideElt = md.mesh.edges[np.where(hide), 0] - 1
++    NodeMask[HideElt] = True
++    MaskX = np.ma.array(x, mask=NodeMask)
++    MaskY = np.ma.array(y, mask=NodeMask)
++
++    EdgeEnd = md.mesh.edges[:, 1] - 1
++    EdgeStart = md.mesh.edges[:, 0] - 1
++    quiverU = MaskX[EdgeEnd] - MaskX[EdgeStart]
++    quiverV = MaskY[EdgeEnd] - MaskY[EdgeStart]
++
++    Masked = np.ma.masked_array(datain, mask=hide)
++    if options.exist('cedgelim'):
++        lims = options.getfieldvalue('cedgelim', [Masked.min(), Masked.max()])
++        edgenorm = mpl.colors.Normalize(vmin=lims[0], vmax=lims[1])
++    else:
++        edgenorm = mpl.colors.Normalize(vmin=Masked.min(), vmax=Masked.max())
++    edgemap = plt.cm.get_cmap('inferno')
++
++    ax.quiver(MaskX[EdgeStart], MaskY[EdgeStart], quiverU, quiverV, datain,
++              units="xy", angles="xy", scale_units="xy", scale=1,
++              headwidth=0, headlength=0, width=100, headaxislength=0,
++              norm=edgenorm, cmap=edgemap)
++
++    plt.colorbar(plt.cm.ScalarMappable(norm=edgenorm, cmap=edgemap), ax=ax)
+Index: ../trunk-jpl/src/m/plot/plot_icefront.py
+===================================================================
+--- ../trunk-jpl/src/m/plot/plot_icefront.py	(revision 27087)
++++ ../trunk-jpl/src/m/plot/plot_icefront.py	(revision 27088)
+@@ -1,5 +1,6 @@
+ import numpy as np
+ from processmesh import processmesh
++import matplotlib as mpl
+ from mpl_toolkits.mplot3d.art3d import Line3DCollection
+ from mpl_toolkits.axes_grid1.inset_locator import inset_axes
+ from mpl_toolkits.mplot3d import Axes3D
+@@ -25,6 +26,12 @@
+     #icefront check
+     icefront = np.where(np.logical_and(iceelement != nodes_per_elt, iceelement != 0))
+ 
++    oceannodes = md.mask.ocean_levelset < 0
++    oceanelement = np.sum(oceannodes[elements], axis=1)
++
++    #icefront check
++    groundingline = np.where(np.logical_and(oceanelement != nodes_per_elt, oceanelement != 0))
++
+     #plot mesh
+     if is2d:
+         ax.triplot(x, y, elements)
+@@ -31,8 +38,13 @@
+ 
+         #highlight elements on neumann
+         if len(icefront[0]) > 0:
+-            colors = np.asarray([0.5 for element in elements[icefront]])
+-            ax.tripcolor(x, y, elements[icefront], facecolors=colors, alpha=0.5, label='elements on ice front')
++            colors = np.ones(np.shape(elements[icefront])[0])
++            cmap = mpl.colors.ListedColormap("navy")
++            ax.tripcolor(x, y, elements[icefront], facecolors=colors, edgecolor='k', label='elements on ice front', cmap=cmap)
++        if len(groundingline[0]) > 0:
++            colors = np.ones(np.shape(elements[groundingline])[0])
++            cmap = mpl.colors.ListedColormap("limegreen")
++            ax.tripcolor(x, y, elements[groundingline], facecolors=colors, edgecolor='k', label='elements on grounding line', cmap=cmap)
+     else:
+         ax = inset_axes(ax, width='100%', height='100%', loc=3, borderpad=0, axes_class=Axes3D)
+ 
Index: /issm/oecreview/Archive/27032-27229/ISSM-27088-27089.diff
===================================================================
--- /issm/oecreview/Archive/27032-27229/ISSM-27088-27089.diff	(revision 27230)
+++ /issm/oecreview/Archive/27032-27229/ISSM-27088-27089.diff	(revision 27230)
@@ -0,0 +1,132 @@
+Index: ../trunk-jpl/src/m/modules/CoordTransform.m
+===================================================================
+--- ../trunk-jpl/src/m/modules/CoordTransform.m	(revision 27088)
++++ ../trunk-jpl/src/m/modules/CoordTransform.m	(revision 27089)
+@@ -30,6 +30,13 @@
+ 	error('Wrong usage (see above)');
+ end
+ 
++% If this function is called from within one of our distributable packages, set 
++% the 'PROJ_LIB' environment variable so that the PROJ binary can find the 
++% assets it needs
++if isdir('share/proj')
++	setenv('PROJ_LIB', what('share/proj').path);
++end
++
+ % Call mex module
+ [xout, yout] = CoordTransform_matlab(xin,yin,projin,projout);
+ 
+Index: ../trunk-jpl/packagers/linux/package-issm-linux-binaries-matlab.sh
+===================================================================
+--- ../trunk-jpl/packagers/linux/package-issm-linux-binaries-matlab.sh	(revision 27088)
++++ ../trunk-jpl/packagers/linux/package-issm-linux-binaries-matlab.sh	(revision 27089)
+@@ -109,9 +109,9 @@
+ fi
+ 
+ echo "Moving PROJ assets to share/"
+-if [ -f ${ISSM_DIR}/externalpackages/share/proj ]; then
++if [ -d ${ISSM_DIR}/externalpackages/share/proj ]; then
+ 	mkdir ${ISSM_DIR}/share 2> /dev/null
+-	cp ${ISSM_DIR}/externalpackages/share/proj $ISSM_DIR/share
++	cp ${ISSM_DIR}/externalpackages/share/proj ${ISSM_DIR}/share
+ else
+ 	echo "PROJ not found"
+ 	exit 1
+@@ -127,7 +127,7 @@
+ 	rm matlab.log 2> /dev/null
+ 
+ 	# Run tests, redirecting output to logfile and suppressing output to console
+-	${MATLAB_PATH}/bin/matlab -nojvm -nosplash -nojvm -r "try, addpath ${ISSM_DIR}/bin ${ISSM_DIR}/lib; runme(${MATLAB_NROPTIONS}); exit; catch me,fprintf('%s',getReport(me)); exit; end" &> matlab.log
++	${MATLAB_PATH}/bin/matlab -nojvm -nosplash -nojvm -r "try, addpath ${ISSM_DIR}/bin ${ISSM_DIR}/lib ${ISSM_DIR}/share; runme(${MATLAB_NROPTIONS}); exit; catch me,fprintf('%s',getReport(me)); exit; end" &> matlab.log
+ 
+ 	# Check that MATLAB did not exit in error
+ 	matlabExitedInError=`grep -E "Activation cannot proceed|Error in matlab_run|Illegal use of reserved keyword|Invalid MEX-file" matlab.log | wc -l`
+Index: ../trunk-jpl/packagers/linux/package-issm-linux-binaries-python-2.sh
+===================================================================
+--- ../trunk-jpl/packagers/linux/package-issm-linux-binaries-python-2.sh	(revision 27088)
++++ ../trunk-jpl/packagers/linux/package-issm-linux-binaries-python-2.sh	(revision 27089)
+@@ -105,9 +105,9 @@
+ cp ${LIBGFORTRAN} ${LIBGFORTRAN_DIST} 2> /dev/null
+ 
+ echo "Moving PROJ assets to share/"
+-if [ -f ${ISSM_DIR}/externalpackages/share/proj ]; then
++if [ -d ${ISSM_DIR}/externalpackages/share/proj ]; then
+ 	mkdir ${ISSM_DIR}/share 2> /dev/null
+-	cp ${ISSM_DIR}/externalpackages/share/proj $ISSM_DIR/share
++	cp ${ISSM_DIR}/externalpackages/share/proj ${ISSM_DIR}/share
+ else
+ 	echo "PROJ not found"
+ 	exit 1
+Index: ../trunk-jpl/packagers/linux/package-issm-linux-binaries-python-3.sh
+===================================================================
+--- ../trunk-jpl/packagers/linux/package-issm-linux-binaries-python-3.sh	(revision 27088)
++++ ../trunk-jpl/packagers/linux/package-issm-linux-binaries-python-3.sh	(revision 27089)
+@@ -105,9 +105,9 @@
+ cp ${LIBGFORTRAN} ${LIBGFORTRAN_DIST} 2> /dev/null
+ 
+ echo "Moving PROJ assets to share/"
+-if [ -f ${ISSM_DIR}/externalpackages/share/proj ]; then
++if [ -d ${ISSM_DIR}/externalpackages/share/proj ]; then
+ 	mkdir ${ISSM_DIR}/share 2> /dev/null
+-	cp ${ISSM_DIR}/externalpackages/share/proj $ISSM_DIR/share
++	cp ${ISSM_DIR}/externalpackages/share/proj ${ISSM_DIR}/share
+ else
+ 	echo "PROJ not found"
+ 	exit 1
+Index: ../trunk-jpl/packagers/mac/package-issm-mac-binaries-matlab.sh
+===================================================================
+--- ../trunk-jpl/packagers/mac/package-issm-mac-binaries-matlab.sh	(revision 27088)
++++ ../trunk-jpl/packagers/mac/package-issm-mac-binaries-matlab.sh	(revision 27089)
+@@ -126,9 +126,9 @@
+ fi
+ 
+ echo "Moving PROJ assets to share/"
+-if [ -f ${ISSM_DIR}/externalpackages/share/proj ]; then
++if [ -d ${ISSM_DIR}/externalpackages/share/proj ]; then
+ 	mkdir ${ISSM_DIR}/share 2> /dev/null
+-	cp ${ISSM_DIR}/externalpackages/share/proj $ISSM_DIR/share
++	cp ${ISSM_DIR}/externalpackages/share/proj ${ISSM_DIR}/share
+ else
+ 	echo "PROJ not found"
+ 	exit 1
+@@ -141,7 +141,7 @@
+ 	rm matlab.log 2> /dev/null
+ 
+ 	# Run tests, redirecting output to logfile and suppressing output to console
+-	${MATLAB_PATH}/bin/matlab -nojvm -nosplash -nojvm -r "try, addpath ${ISSM_DIR}/bin ${ISSM_DIR}/lib; runme(${MATLAB_NROPTIONS}); exit; catch me,fprintf('%s',getReport(me)); exit; end" &> matlab.log
++	${MATLAB_PATH}/bin/matlab -nojvm -nosplash -nojvm -r "try, addpath ${ISSM_DIR}/bin ${ISSM_DIR}/lib ${ISSM_DIR}/share; runme(${MATLAB_NROPTIONS}); exit; catch me,fprintf('%s',getReport(me)); exit; end" &> matlab.log
+ 
+ 	# Check that MATLAB did not exit in error
+ 	matlabExitedInError=`grep -E "Activation cannot proceed|Error in matlab_run|Illegal use of reserved keyword" matlab.log | wc -l`
+Index: ../trunk-jpl/packagers/mac/package-issm-mac-binaries-python-2.sh
+===================================================================
+--- ../trunk-jpl/packagers/mac/package-issm-mac-binaries-python-2.sh	(revision 27088)
++++ ../trunk-jpl/packagers/mac/package-issm-mac-binaries-python-2.sh	(revision 27089)
+@@ -118,9 +118,9 @@
+ fi
+ 
+ echo "Moving PROJ assets to share/"
+-if [ -f ${ISSM_DIR}/externalpackages/share/proj ]; then
++if [ -d ${ISSM_DIR}/externalpackages/share/proj ]; then
+ 	mkdir ${ISSM_DIR}/share 2> /dev/null
+-	cp ${ISSM_DIR}/externalpackages/share/proj $ISSM_DIR/share
++	cp ${ISSM_DIR}/externalpackages/share/proj ${ISSM_DIR}/share
+ else
+ 	echo "PROJ not found"
+ 	exit 1
+Index: ../trunk-jpl/packagers/mac/package-issm-mac-binaries-python-3.sh
+===================================================================
+--- ../trunk-jpl/packagers/mac/package-issm-mac-binaries-python-3.sh	(revision 27088)
++++ ../trunk-jpl/packagers/mac/package-issm-mac-binaries-python-3.sh	(revision 27089)
+@@ -118,9 +118,9 @@
+ fi
+ 
+ echo "Moving PROJ assets to share/"
+-if [ -f ${ISSM_DIR}/externalpackages/share/proj ]; then
++if [ -d ${ISSM_DIR}/externalpackages/share/proj ]; then
+ 	mkdir ${ISSM_DIR}/share 2> /dev/null
+-	cp ${ISSM_DIR}/externalpackages/share/proj $ISSM_DIR/share
++	cp ${ISSM_DIR}/externalpackages/share/proj ${ISSM_DIR}/share
+ else
+ 	echo "PROJ not found"
+ 	exit 1
Index: /issm/oecreview/Archive/27032-27229/ISSM-27096-27097.diff
===================================================================
--- /issm/oecreview/Archive/27032-27229/ISSM-27096-27097.diff	(revision 27230)
+++ /issm/oecreview/Archive/27032-27229/ISSM-27096-27097.diff	(revision 27230)
@@ -0,0 +1,328 @@
+Index: ../trunk-jpl/src/c/analyses/SealevelchangeAnalysis.cpp
+===================================================================
+--- ../trunk-jpl/src/c/analyses/SealevelchangeAnalysis.cpp	(revision 27096)
++++ ../trunk-jpl/src/c/analyses/SealevelchangeAnalysis.cpp	(revision 27097)
+@@ -8,6 +8,16 @@
+ #include "../cores/cores.h"
+ 
+ /*Model processing*/
++SealevelchangeAnalysis::~SealevelchangeAnalysis(){/*{{{*/
++
++	BarystaticContributions* barycontrib=NULL;
++	GenericParam<BarystaticContributions*>* barycontribparam=NULL;
++
++	barycontribparam = xDynamicCast<GenericParam<BarystaticContributions*>*>(femmodel->parameters->FindParamObject(BarystaticContributionsEnum));
++	barycontrib=barycontribparam->GetParameterValue();
++
++	delete barycontrib;
++}/*}}}*/
+ void SealevelchangeAnalysis::CreateConstraints(Constraints* constraints,IoModel* iomodel){/*{{{*/
+ 	/*No constraints*/
+ }/*}}}*/
+@@ -284,6 +294,9 @@
+ 			parameters->AddObject(new DoubleMatParam(LoveTimeFreqEnum,love_timefreq,precomputednt,1));
+ 			parameters->AddObject(new BoolParam(LoveIsTimeEnum,love_istime));
+ 
++			/*Free allocations:*/
++			xDelete<IssmDouble>(love_timefreq);
++
+ 			// AD performance is sensitive to calls to ensurecontiguous.
+ 			// // Providing "t" will cause ensurecontiguous to be called.
+ 			if(viscous){
+@@ -531,15 +544,20 @@
+ 			else if(elastic){
+ 				nt=1; //in elastic, or if we run only selfattraction, we need only one step
+ #ifdef _HAVE_AD_
+-				G_viscoelastic_interpolated=G_viscoelastic;
+-				U_viscoelastic_interpolated=U_viscoelastic;
+-				if(horiz)H_viscoelastic_interpolated=H_viscoelastic;
++				G_viscoelastic_interpolated=xNew<IssmDouble>(M,"t");
++				U_viscoelastic_interpolated=xNew<IssmDouble>(M,"t");
++				if(horiz) H_viscoelastic_interpolated=xNew<IssmDouble>(M,"t");
+ #else
+-				G_viscoelastic_interpolated=G_viscoelastic;
+-				U_viscoelastic_interpolated=U_viscoelastic;
+-				if(horiz)H_viscoelastic_interpolated=H_viscoelastic;
++				G_viscoelastic_interpolated=xNew<IssmDouble>(M);
++				U_viscoelastic_interpolated=xNew<IssmDouble>(M);
++				if(horiz) H_viscoelastic_interpolated=xNew<IssmDouble>(M);
+ #endif
+ 
++
++				xMemCpy<IssmDouble>(G_viscoelastic_interpolated,G_viscoelastic,M);
++				xMemCpy<IssmDouble>(U_viscoelastic_interpolated,U_viscoelastic,M);
++				if(horiz) xMemCpy<IssmDouble>(H_viscoelastic_interpolated,H_viscoelastic,M);
++
+ 				if(rotation){ //if this cpu handles degree 2
+ #ifdef _HAVE_AD_
+ 					Pmtf_col_interpolated=xNew<IssmDouble>(1,"t");
+@@ -557,8 +575,8 @@
+ 					if (horiz) Love_tl2_interpolated=xNew<IssmDouble>(1);
+ #endif
+ 
+-					Pmtf_col_interpolated=love_pmtf_colinear;
+-					Pmtf_ortho_interpolated=love_pmtf_ortho;
++					Pmtf_col_interpolated[0]=love_pmtf_colinear[0];
++					Pmtf_ortho_interpolated[0]=love_pmtf_ortho[0];
+ 					Pmtf_z_interpolated[0]=1.0+love_k[2];
+ 					Love_tk2_interpolated[0]=love_tk[2];
+ 					Love_th2_interpolated[0]=love_th[2];
+@@ -594,15 +612,27 @@
+ 				xDelete<IssmDouble>(love_tl);
+ 				xDelete<IssmDouble>(G_viscoelastic);
+ 				xDelete<IssmDouble>(G_viscoelastic_local);
++				xDelete<IssmDouble>(G_viscoelastic_interpolated);
+ 				xDelete<IssmDouble>(U_viscoelastic);
++				xDelete<IssmDouble>(U_viscoelastic_interpolated);
+ 				xDelete<IssmDouble>(U_viscoelastic_local);
+ 				if(horiz){
+ 					xDelete<IssmDouble>(H_viscoelastic);
++					xDelete<IssmDouble>(H_viscoelastic_interpolated);
+ 					xDelete<IssmDouble>(H_viscoelastic_local);
+ 				}
+ 				if(rotation){
+ 					xDelete<IssmDouble>(love_pmtf_colinear);
+ 					xDelete<IssmDouble>(love_pmtf_ortho);
++					
++					xDelete<IssmDouble>(Love_tk2_interpolated);
++					xDelete<IssmDouble>(Love_th2_interpolated);
++					xDelete<IssmDouble>(Pmtf_col_interpolated);
++					xDelete<IssmDouble>(Pmtf_ortho_interpolated);
++					xDelete<IssmDouble>(Pmtf_z_interpolated);
++					if(horiz){
++						xDelete<IssmDouble>(Love_tl2_interpolated);
++					}
+ 
+ 				}
+ 			}
+@@ -631,6 +661,7 @@
+ 	if(numoutputs)parameters->AddObject(new StringArrayParam(SealevelchangeRequestedOutputsEnum,requestedoutputs,numoutputs));
+ 	iomodel->DeleteData(&requestedoutputs,numoutputs,"md.solidearth.requested_outputs");
+ 	/*}}}*/
++
+ }/*}}}*/
+ 
+ /*Finite Element Analysis*/
+Index: ../trunk-jpl/src/c/classes/Elements/Tria.cpp
+===================================================================
+--- ../trunk-jpl/src/c/classes/Elements/Tria.cpp	(revision 27096)
++++ ../trunk-jpl/src/c/classes/Elements/Tria.cpp	(revision 27097)
+@@ -6582,7 +6582,7 @@
+ 		//initialization
+ 		LoveRotRSL  = xNewZeroInit<IssmDouble>(nt);
+ 		LoveRotU    = xNewZeroInit<IssmDouble>(nt);
+-		LoveRothoriz= xNewZeroInit<IssmDouble>(nt);
++		if(horiz)LoveRothoriz= xNewZeroInit<IssmDouble>(nt);
+ 		Grot        = xNewZeroInit<IssmDouble>(3*3*nt); //3 polar motion components * 3 vertices * number of time steps
+ 		GUrot       = xNewZeroInit<IssmDouble>(3*3*nt);
+ 
+@@ -6668,6 +6668,10 @@
+ 				this->inputs->SetArrayInput(SealevelchangeGErotEnum,this->lid,GErot,3*3*nt);
+ 			}
+ 		}
++		/*Free ressources:*/
++		xDelete<IssmDouble>(LoveRotRSL);
++		xDelete<IssmDouble>(LoveRotU);
++		if(horiz)xDelete<IssmDouble>(LoveRothoriz);
+ 	}
+ 	/*}}}*/
+ 	/*Initialize viscous stacks: {{{*/
+@@ -7392,6 +7396,9 @@
+ 	/*Keep track of barystatic contributions:*/
+ 	barycontrib->Set(this->Sid(),bslcice,bslchydro,bslcbp);
+ 
++	/*Free ressources:*/
++	xDelete<IssmDouble>(areae);
++
+ }
+ /*}}}*/
+ void       Tria::SealevelchangeConvolution(IssmDouble* sealevelpercpu, GrdLoads* loads, IssmDouble* polarmotionvector,SealevelGeometry* slgeom){ /*{{{*/
+@@ -7707,6 +7714,9 @@
+ 			}
+ 			/*Save viscous stack now that we updated the values:*/
+ 			this->inputs->SetArrayInput(viscousenum,this->lid,viscousfield,3*viscousnumsteps);
++
++			/*Free ressources:*/
++			xDelete<IssmDouble>(grdfieldinterp);
+ 		}
+ 
+ 		/*Free allocatoins:*/
+@@ -7725,6 +7735,8 @@
+ 	else{
+ 		for(i=0;i<NUMVERTICES;i++) grdfieldout[i]=grdfield[i*nt+0];
+ 	}
++	/*Free ressources:*/
++	xDelete<IssmDouble>(grdfield);
+ 
+ } /*}}}*/
+ 
+Index: ../trunk-jpl/src/c/classes/GrdLoads.cpp
+===================================================================
+--- ../trunk-jpl/src/c/classes/GrdLoads.cpp	(revision 27096)
++++ ../trunk-jpl/src/c/classes/GrdLoads.cpp	(revision 27097)
+@@ -18,6 +18,7 @@
+ /*Object constructors and destructor*/
+ GrdLoads::GrdLoads(int nel,SealevelGeometry* slgeom){ /*{{{*/
+ 
++	/*allocate:*/
+ 	vloads=new Vector<IssmDouble>(nel);
+ 	for (int i=0;i<SLGEOM_NUMLOADS;i++) vsubloads[i]=new Vector<IssmDouble>(slgeom->nbar[i]);
+ 
+@@ -26,6 +27,13 @@
+ 
+ 	vsubsealevelloads=new Vector<IssmDouble>(slgeom->nbar[SLGEOM_OCEAN]);
+ 
++	/*make sure all pointers that are not allocated are NULL:*/
++	loads=NULL;
++	for (int i=0;i<SLGEOM_NUMLOADS;i++)subloads[i]=NULL;
++	sealevelloads=NULL;
++	subsealevelloads=NULL;
++
++
+ }; /*}}}*/
+ GrdLoads::~GrdLoads(){ /*{{{*/
+ 
+@@ -49,6 +57,13 @@
+ 		vsubloads[i]->Assemble();
+ 	}
+ 
++	/*Avoid leaks:*/
++	if(loads)xDelete<IssmDouble>(loads);
++	for (int i=0;i<SLGEOM_NUMLOADS;i++){
++		if(subloads[i])xDelete<IssmDouble>(subloads[i]);
++	}
++
++	/*Serialize:*/
+ 	loads=vloads->ToMPISerial();
+ 	for (int i=0;i<SLGEOM_NUMLOADS;i++){
+ 		subloads[i]=vsubloads[i]->ToMPISerial();
+@@ -63,11 +78,16 @@
+ } /*}}}*/
+ void GrdLoads::BroadcastSealevelLoads(void){ /*{{{*/
+ 
++	/*Avoid leakds:*/
++	if(sealevelloads)xDelete<IssmDouble>(sealevelloads);
++	if(subsealevelloads)xDelete<IssmDouble>(subsealevelloads);
++
++	/*Serialize:*/
+ 	sealevelloads=vsealevelloads->ToMPISerial();
+ 	subsealevelloads=vsubsealevelloads->ToMPISerial();
+ 
+ } /*}}}*/
+-void GrdLoads::SHDegree2Coefficients(IssmDouble* deg2coeff, FemModel* femmodel, SealevelGeometry* slgeom){
++void GrdLoads::SHDegree2Coefficients(IssmDouble* deg2coeff, FemModel* femmodel, SealevelGeometry* slgeom){ /*{{{*/
+ 
+ 	IssmDouble area,re, S;
+ 	int ylmindex, intj;
+@@ -118,4 +138,4 @@
+ 	ISSM_MPI_Reduce (&deg2coeff_local[2],&deg2coeff[2],1,ISSM_MPI_DOUBLE,ISSM_MPI_SUM,0,IssmComm::GetComm() );
+ 	ISSM_MPI_Bcast(&deg2coeff[2],1,ISSM_MPI_DOUBLE,0,IssmComm::GetComm());
+ 
+-} 
++} /*}}}*/ 
+Index: ../trunk-jpl/src/c/cores/sealevelchange_core.cpp
+===================================================================
+--- ../trunk-jpl/src/c/cores/sealevelchange_core.cpp	(revision 27096)
++++ ../trunk-jpl/src/c/cores/sealevelchange_core.cpp	(revision 27097)
+@@ -80,6 +80,10 @@
+ 
+ 	/*End profiler*/
+ 	femmodel->profiler->Stop(SLRCORE);
++
++	/*Free ressources:*/
++	delete slgeom;
++
+ }
+ /*}}}*/
+ void              solidearthexternal_core(FemModel* femmodel){ /*{{{*/
+@@ -363,11 +367,16 @@
+ 		loads->BroadcastSealevelLoads();
+ 
+ 		//convergence?
+-		if(slcconvergence(loads->vsealevelloads,oldsealevelloads,eps_rel,eps_abs))break;
++		if(slcconvergence(loads->vsealevelloads,oldsealevelloads,eps_rel,eps_abs)){
++			delete oldsealevelloads; break;
++		}
+ 
+ 		//early return?
+-		if(iterations>=max_nonlinear_iterations)break;
++		if(iterations>=max_nonlinear_iterations){
++			delete oldsealevelloads; break;
++		}
+ 		iterations++;
++		delete oldsealevelloads;
+ 	}
+ 
+ 	//recompute polar motion one final time, this time updating viscous stacks for future time steps
+@@ -387,7 +396,7 @@
+ 
+ 	if(planethasocean){
+ 		if (!sealevelloading){ //we haven't done so before, so we need to compute the ocean average and area
+-			loads->sealevelloads=NULL; //needed to trigger the calculation of areas
++			if(loads->sealevelloads)xDelete<IssmDouble>(loads->sealevelloads); loads->sealevelloads=NULL; //needed to trigger the calculation of areas
+ 			/*retrieve sea level average  and ocean area:*/
+ 			for(Object* & object : femmodel->elements->objects){
+ 				Element* element = xDynamicCast<Element*>(object);
+@@ -429,6 +438,12 @@
+ 		femmodel->inputs->AXPY(1,BedNorthGRDEnum, BedNorthEnum);
+ 	}
+ 
++	/*Free ressources:*/
++	delete loads;
++	delete subelementoceanareas;
++	delete oceanareas;
++	xDelete<IssmDouble>(sealevelpercpu); 
++
+ }
+ /*}}}*/
+ void              dynstr_core(FemModel* femmodel){ /*{{{*/
+@@ -606,6 +621,11 @@
+ 	femmodel->results->AddResult(new GenericExternalResult<IssmDouble*>(femmodel->results->Size()+1,AreaeEnum,areae,nel,1,1,1));
+ 	#endif
+ 
++	xDelete<IssmDouble>(xxe);
++	xDelete<IssmDouble>(yye);
++	xDelete<IssmDouble>(zze);
++	xDelete<IssmDouble>(areae);
++
+ 	return;
+ 
+ }/*}}}*/
+@@ -672,6 +692,12 @@
+ 	femmodel->parameters->AddObject(new DoubleVecParam(ZzeEnum,zze,nel));
+ 	femmodel->parameters->AddObject(new DoubleVecParam(AreaeEnum,areae,nel));
+ 
++	/*Free ressources:*/
++	xDelete<IssmDouble>(xxe);
++	xDelete<IssmDouble>(yye);
++	xDelete<IssmDouble>(zze);
++	xDelete<IssmDouble>(areae);
++
+ 	return slgeom;
+ 
+ }/*}}}*/
+@@ -869,7 +895,12 @@
+ 			xDelete<IssmDouble>(m2interp);
+ 			xDelete<IssmDouble>(m3interp);
+ 		}
++		xDelete<IssmDouble>(viscoustimes);
++		xDelete<IssmDouble>(viscouspolarmotion);
+ 	}
++	xDelete<IssmDouble>(pmtf_col);
++	xDelete<IssmDouble>(pmtf_ortho);
++	xDelete<IssmDouble>(pmtf_z);
+ 
+ } /*}}}*/
+ void       SealevelchangeUpdateViscousTimeSeries(FemModel* femmodel){ /*{{{*/
+Index: ../trunk-jpl/src/c/modules/ModelProcessorx/CreateElementsVerticesAndMaterials.cpp
+===================================================================
+--- ../trunk-jpl/src/c/modules/ModelProcessorx/CreateElementsVerticesAndMaterials.cpp	(revision 27096)
++++ ../trunk-jpl/src/c/modules/ModelProcessorx/CreateElementsVerticesAndMaterials.cpp	(revision 27097)
+@@ -222,6 +222,7 @@
+ 										case TriaEnum: 
+ 											{
+ 												Tria* tria= xDynamicCast<Tria*>(element);
++												if(tria->hmaterial)delete tria->hmaterial; 
+ 												tria->hmaterial=NULL;
+ 											}
+ 											break;
Index: /issm/oecreview/Archive/27032-27229/ISSM-27097-27098.diff
===================================================================
--- /issm/oecreview/Archive/27032-27229/ISSM-27097-27098.diff	(revision 27230)
+++ /issm/oecreview/Archive/27032-27229/ISSM-27097-27098.diff	(revision 27230)
@@ -0,0 +1,91 @@
+Index: ../trunk-jpl/packagers/linux/package-issm-linux-binaries-matlab.sh
+===================================================================
+--- ../trunk-jpl/packagers/linux/package-issm-linux-binaries-matlab.sh	(revision 27097)
++++ ../trunk-jpl/packagers/linux/package-issm-linux-binaries-matlab.sh	(revision 27098)
+@@ -123,7 +123,7 @@
+ echo "Moving PROJ assets to share/"
+ if [ -d ${ISSM_DIR}/externalpackages/proj/install/share/proj ]; then
+ 	mkdir ${ISSM_DIR}/share 2> /dev/null
+-	cp ${ISSM_DIR}/externalpackages/proj/install/share/proj ${ISSM_DIR}/share
++	cp -R ${ISSM_DIR}/externalpackages/proj/install/share/proj ${ISSM_DIR}/share
+ else
+ 	echo "PROJ not found"
+ 	exit 1
+Index: ../trunk-jpl/packagers/linux/package-issm-linux-binaries-python-2.sh
+===================================================================
+--- ../trunk-jpl/packagers/linux/package-issm-linux-binaries-python-2.sh	(revision 27097)
++++ ../trunk-jpl/packagers/linux/package-issm-linux-binaries-python-2.sh	(revision 27098)
+@@ -107,7 +107,7 @@
+ echo "Moving PROJ assets to share/"
+ if [ -d ${ISSM_DIR}/externalpackages/proj/install/share/proj ]; then
+ 	mkdir ${ISSM_DIR}/share 2> /dev/null
+-	cp ${ISSM_DIR}/externalpackages/proj/install/share/proj ${ISSM_DIR}/share
++	cp -R ${ISSM_DIR}/externalpackages/proj/install/share/proj ${ISSM_DIR}/share
+ else
+ 	echo "PROJ not found"
+ 	exit 1
+Index: ../trunk-jpl/packagers/linux/package-issm-linux-binaries-python-3.sh
+===================================================================
+--- ../trunk-jpl/packagers/linux/package-issm-linux-binaries-python-3.sh	(revision 27097)
++++ ../trunk-jpl/packagers/linux/package-issm-linux-binaries-python-3.sh	(revision 27098)
+@@ -107,7 +107,7 @@
+ echo "Moving PROJ assets to share/"
+ if [ -d ${ISSM_DIR}/externalpackages/proj/install/share/proj ]; then
+ 	mkdir ${ISSM_DIR}/share 2> /dev/null
+-	cp ${ISSM_DIR}/externalpackages/proj/install/share/proj ${ISSM_DIR}/share
++	cp -R ${ISSM_DIR}/externalpackages/proj/install/share/proj ${ISSM_DIR}/share
+ else
+ 	echo "PROJ not found"
+ 	exit 1
+Index: ../trunk-jpl/packagers/mac/package-issm-mac-binaries-matlab.sh
+===================================================================
+--- ../trunk-jpl/packagers/mac/package-issm-mac-binaries-matlab.sh	(revision 27097)
++++ ../trunk-jpl/packagers/mac/package-issm-mac-binaries-matlab.sh	(revision 27098)
+@@ -128,7 +128,7 @@
+ echo "Moving PROJ assets to share/"
+ if [ -d ${ISSM_DIR}/externalpackages/proj/install/share/proj ]; then
+ 	mkdir ${ISSM_DIR}/share 2> /dev/null
+-	cp ${ISSM_DIR}/externalpackages/proj/install/share/proj ${ISSM_DIR}/share
++	cp -R ${ISSM_DIR}/externalpackages/proj/install/share/proj ${ISSM_DIR}/share
+ else
+ 	echo "PROJ not found"
+ 	exit 1
+Index: ../trunk-jpl/packagers/mac/package-issm-mac-binaries-python-2.sh
+===================================================================
+--- ../trunk-jpl/packagers/mac/package-issm-mac-binaries-python-2.sh	(revision 27097)
++++ ../trunk-jpl/packagers/mac/package-issm-mac-binaries-python-2.sh	(revision 27098)
+@@ -120,7 +120,7 @@
+ echo "Moving PROJ assets to share/"
+ if [ -d ${ISSM_DIR}/externalpackages/proj/install/share/proj ]; then
+ 	mkdir ${ISSM_DIR}/share 2> /dev/null
+-	cp ${ISSM_DIR}/externalpackages/proj/install/share/proj ${ISSM_DIR}/share
++	cp -R ${ISSM_DIR}/externalpackages/proj/install/share/proj ${ISSM_DIR}/share
+ else
+ 	echo "PROJ not found"
+ 	exit 1
+Index: ../trunk-jpl/packagers/mac/package-issm-mac-binaries-python-3.sh
+===================================================================
+--- ../trunk-jpl/packagers/mac/package-issm-mac-binaries-python-3.sh	(revision 27097)
++++ ../trunk-jpl/packagers/mac/package-issm-mac-binaries-python-3.sh	(revision 27098)
+@@ -120,7 +120,7 @@
+ echo "Moving PROJ assets to share/"
+ if [ -d ${ISSM_DIR}/externalpackages/proj/install/share/proj ]; then
+ 	mkdir ${ISSM_DIR}/share 2> /dev/null
+-	cp ${ISSM_DIR}/externalpackages/proj/install/share/proj ${ISSM_DIR}/share
++	cp -R ${ISSM_DIR}/externalpackages/proj/install/share/proj ${ISSM_DIR}/share
+ else
+ 	echo "PROJ not found"
+ 	exit 1
+Index: ../trunk-jpl/src/c/analyses/SealevelchangeAnalysis.cpp
+===================================================================
+--- ../trunk-jpl/src/c/analyses/SealevelchangeAnalysis.cpp	(revision 27097)
++++ ../trunk-jpl/src/c/analyses/SealevelchangeAnalysis.cpp	(revision 27098)
+@@ -8,7 +8,7 @@
+ #include "../cores/cores.h"
+ 
+ /*Model processing*/
+-SealevelchangeAnalysis::~SealevelchangeAnalysis(){/*{{{*/
++void SealevelchangeAnalysis::~SealevelchangeAnalysis(){/*{{{*/
+ 
+ 	BarystaticContributions* barycontrib=NULL;
+ 	GenericParam<BarystaticContributions*>* barycontribparam=NULL;
Index: /issm/oecreview/Archive/27032-27229/ISSM-27098-27099.diff
===================================================================
--- /issm/oecreview/Archive/27032-27229/ISSM-27098-27099.diff	(revision 27230)
+++ /issm/oecreview/Archive/27032-27229/ISSM-27098-27099.diff	(revision 27230)
@@ -0,0 +1,13 @@
+Index: ../trunk-jpl/src/c/analyses/SealevelchangeAnalysis.cpp
+===================================================================
+--- ../trunk-jpl/src/c/analyses/SealevelchangeAnalysis.cpp	(revision 27098)
++++ ../trunk-jpl/src/c/analyses/SealevelchangeAnalysis.cpp	(revision 27099)
+@@ -8,7 +8,7 @@
+ #include "../cores/cores.h"
+ 
+ /*Model processing*/
+-void SealevelchangeAnalysis::~SealevelchangeAnalysis(){/*{{{*/
++SealevelchangeAnalysis::~SealevelchangeAnalysis(){/*{{{*/
+ 
+ 	BarystaticContributions* barycontrib=NULL;
+ 	GenericParam<BarystaticContributions*>* barycontribparam=NULL;
Index: /issm/oecreview/Archive/27032-27229/ISSM-27099-27100.diff
===================================================================
--- /issm/oecreview/Archive/27032-27229/ISSM-27099-27100.diff	(revision 27230)
+++ /issm/oecreview/Archive/27032-27229/ISSM-27099-27100.diff	(revision 27230)
@@ -0,0 +1,12 @@
+Index: ../trunk-jpl/src/c/analyses/SealevelchangeAnalysis.h
+===================================================================
+--- ../trunk-jpl/src/c/analyses/SealevelchangeAnalysis.h	(revision 27099)
++++ ../trunk-jpl/src/c/analyses/SealevelchangeAnalysis.h	(revision 27100)
+@@ -12,6 +12,7 @@
+ 
+ 	public:
+ 		/*Model processing*/
++		~SealevelchangeAnalysis();
+ 		void CreateConstraints(Constraints* constraints,IoModel* iomodel);
+ 		void CreateLoads(Loads* loads, IoModel* iomodel);
+ 		void CreateNodes(Nodes* nodes,IoModel* iomodel,bool isamr=false);
Index: /issm/oecreview/Archive/27032-27229/ISSM-27100-27101.diff
===================================================================
--- /issm/oecreview/Archive/27032-27229/ISSM-27100-27101.diff	(revision 27230)
+++ /issm/oecreview/Archive/27032-27229/ISSM-27100-27101.diff	(revision 27230)
@@ -0,0 +1,132 @@
+Index: ../trunk-jpl/src/c/analyses/SealevelchangeAnalysis.h
+===================================================================
+--- ../trunk-jpl/src/c/analyses/SealevelchangeAnalysis.h	(revision 27100)
++++ ../trunk-jpl/src/c/analyses/SealevelchangeAnalysis.h	(revision 27101)
+@@ -12,10 +12,10 @@
+ 
+ 	public:
+ 		/*Model processing*/
+-		~SealevelchangeAnalysis();
+ 		void CreateConstraints(Constraints* constraints,IoModel* iomodel);
+ 		void CreateLoads(Loads* loads, IoModel* iomodel);
+ 		void CreateNodes(Nodes* nodes,IoModel* iomodel,bool isamr=false);
++		static void DeleteBarystaticContributionsParam(FemModel* femmodel);
+ 		int  DofsPerNode(int** doflist,int domaintype,int approximation);
+ 		void UpdateElements(Elements* elements,Inputs* inputs,IoModel* iomodel,int analysis_counter,int analysis_type);
+ 		void UpdateParameters(Parameters* parameters,IoModel* iomodel,int solution_enum,int analysis_enum);
+Index: ../trunk-jpl/src/c/analyses/SealevelchangeAnalysis.cpp
+===================================================================
+--- ../trunk-jpl/src/c/analyses/SealevelchangeAnalysis.cpp	(revision 27100)
++++ ../trunk-jpl/src/c/analyses/SealevelchangeAnalysis.cpp	(revision 27101)
+@@ -8,16 +8,6 @@
+ #include "../cores/cores.h"
+ 
+ /*Model processing*/
+-SealevelchangeAnalysis::~SealevelchangeAnalysis(){/*{{{*/
+-
+-	BarystaticContributions* barycontrib=NULL;
+-	GenericParam<BarystaticContributions*>* barycontribparam=NULL;
+-
+-	barycontribparam = xDynamicCast<GenericParam<BarystaticContributions*>*>(femmodel->parameters->FindParamObject(BarystaticContributionsEnum));
+-	barycontrib=barycontribparam->GetParameterValue();
+-
+-	delete barycontrib;
+-}/*}}}*/
+ void SealevelchangeAnalysis::CreateConstraints(Constraints* constraints,IoModel* iomodel){/*{{{*/
+ 	/*No constraints*/
+ }/*}}}*/
+@@ -27,6 +17,15 @@
+ void SealevelchangeAnalysis::CreateNodes(Nodes* nodes,IoModel* iomodel,bool isamr){/*{{{*/
+ 	::CreateNodes(nodes,iomodel,SealevelchangeAnalysisEnum,P1Enum);
+ }/*}}}*/
++void SealevelchangeAnalysis::DeleteBarystaticContributionsParam(FemModel* femmodel){/*{{{*/
++	BarystaticContributions* barycontrib=NULL;
++	GenericParam<BarystaticContributions*>* barycontribparam=NULL;
++
++	barycontribparam = xDynamicCast<GenericParam<BarystaticContributions*>*>(femmodel->parameters->FindParamObject(BarystaticContributionsEnum));
++	barycontrib=barycontribparam->GetParameterValue();
++
++	delete barycontrib;
++}/*}}}*/
+ int  SealevelchangeAnalysis::DofsPerNode(int** doflist,int domaintype,int approximation){/*{{{*/
+ 	return 1;
+ }/*}}}*/
+Index: ../trunk-jpl/src/c/cores/sealevelchange_core.cpp
+===================================================================
+--- ../trunk-jpl/src/c/cores/sealevelchange_core.cpp	(revision 27100)
++++ ../trunk-jpl/src/c/cores/sealevelchange_core.cpp	(revision 27101)
+@@ -81,9 +81,9 @@
+ 	/*End profiler*/
+ 	femmodel->profiler->Stop(SLRCORE);
+ 
+-	/*Free ressources:*/
++	/*Free resources:*/
++	SealevelchangeAnalysis::DeleteBarystaticContributionsParam(femmodel);
+ 	delete slgeom;
+-
+ }
+ /*}}}*/
+ void              solidearthexternal_core(FemModel* femmodel){ /*{{{*/
+@@ -146,7 +146,7 @@
+ 		InputUpdateFromVectorx(femmodel,bedrocknorth,BedNorthEnum,VertexSIdEnum);	
+ 	}
+ 
+-	/*Free ressources:*/	
++	/*Free resources:*/	
+ 	delete bedrock; delete bedrock_rate;
+ 	delete geoid; delete geoid_rate;
+ 	if(horiz){
+@@ -438,7 +438,7 @@
+ 		femmodel->inputs->AXPY(1,BedNorthGRDEnum, BedNorthEnum);
+ 	}
+ 
+-	/*Free ressources:*/
++	/*Free resources:*/
+ 	delete loads;
+ 	delete subelementoceanareas;
+ 	delete oceanareas;
+@@ -501,7 +501,7 @@
+ 	/*update element inputs:*/
+ 	InputUpdateFromVectorx(femmodel,sealevel,SealevelEnum,VertexSIdEnum);	
+ 
+-	/*Free ressources:*/	
++	/*Free resources:*/	
+ 	delete sealevel;
+ 	delete deltadsl;
+ 	delete deltastr;
+@@ -571,7 +571,7 @@
+ 	InputUpdateFromVectorx(femmodel,bedup,BedGRDEnum,VertexSIdEnum);
+ 	femmodel->inputs->AXPY(1,BedGRDEnum,BedEnum);
+ 
+-	/*Free ressources: */
++	/*Free resources: */
+ 	xDelete<IssmDouble>(xx);
+ 	xDelete<IssmDouble>(yy);
+ 	delete beduprate;
+@@ -692,7 +692,7 @@
+ 	femmodel->parameters->AddObject(new DoubleVecParam(ZzeEnum,zze,nel));
+ 	femmodel->parameters->AddObject(new DoubleVecParam(AreaeEnum,areae,nel));
+ 
+-	/*Free ressources:*/
++	/*Free resources:*/
+ 	xDelete<IssmDouble>(xxe);
+ 	xDelete<IssmDouble>(yye);
+ 	xDelete<IssmDouble>(zze);
+@@ -1127,7 +1127,7 @@
+ 	} 
+ 	/*}}}*/
+ 
+-	/*Free ressources:{{{*/
++	/*Free resources:{{{*/
+ 	if(forcings){
+ 		for(int i=0;i<nummodels-1;i++){
+ 			IssmDouble* temp=forcings[i]; 
+@@ -1239,7 +1239,7 @@
+ 	} 
+ 	/*}}}*/
+ 
+-	/*Free ressources:{{{*/
++	/*Free resources:{{{*/
+ 	if(forcingglobal)xDelete<IssmDouble>(forcingglobal);
+ 	if(forcing)xDelete<IssmDouble>(forcing);
+ 	if(transitions){
Index: /issm/oecreview/Archive/27032-27229/ISSM-27101-27102.diff
===================================================================
--- /issm/oecreview/Archive/27032-27229/ISSM-27101-27102.diff	(revision 27230)
+++ /issm/oecreview/Archive/27032-27229/ISSM-27101-27102.diff	(revision 27230)
@@ -0,0 +1,1751 @@
+Index: ../trunk-jpl/src/c/analyses/AdjointHorizAnalysis.cpp
+===================================================================
+--- ../trunk-jpl/src/c/analyses/AdjointHorizAnalysis.cpp	(revision 27101)
++++ ../trunk-jpl/src/c/analyses/AdjointHorizAnalysis.cpp	(revision 27102)
+@@ -3361,7 +3361,7 @@
+ 	if(fe_FS!=LATaylorHoodEnum && fe_FS!=LACrouzeixRaviartEnum)	
+ 	 element->AddInput(AdjointpEnum,lambdap,element->PressureInterpolation());	
+ 
+-	/*Free ressources:*/
++	/*Free resources:*/
+ 	xDelete<int>(vdoflist);
+ 	xDelete<int>(pdoflist);
+ 	xDelete<int>(cs_list);
+@@ -3413,7 +3413,7 @@
+ 	element->AddInput(AdjointxEnum,lambdax,element->GetElementType());
+ 	element->AddInput(AdjointyEnum,lambday,element->GetElementType());
+ 
+-	/*Free ressources:*/
++	/*Free resources:*/
+ 	xDelete<IssmDouble>(values);
+ 	xDelete<IssmDouble>(lambdax);
+ 	xDelete<IssmDouble>(lambday);
+@@ -3482,7 +3482,7 @@
+ 	element->AddInput(AdjointxEnum,lambdax,element->GetElementType());
+ 	element->AddInput(AdjointyEnum,lambday,element->GetElementType());
+ 
+-	/*Free ressources:*/
++	/*Free resources:*/
+ 	xDelete<IssmDouble>(values);
+ 	xDelete<IssmDouble>(lambdax);
+ 	xDelete<IssmDouble>(lambday);
+Index: ../trunk-jpl/src/c/analyses/DamageEvolutionAnalysis.cpp
+===================================================================
+--- ../trunk-jpl/src/c/analyses/DamageEvolutionAnalysis.cpp	(revision 27101)
++++ ../trunk-jpl/src/c/analyses/DamageEvolutionAnalysis.cpp	(revision 27102)
+@@ -713,7 +713,7 @@
+ 		element->AddInput(DamageDEnum,newdamage,element->GetElementType());
+ 	}
+ 
+-	/*Free ressources:*/
++	/*Free resources:*/
+ 	xDelete<IssmDouble>(newdamage);
+ 	xDelete<int>(doflist);
+ }/*}}}*/
+Index: ../trunk-jpl/src/c/analyses/EnthalpyAnalysis.cpp
+===================================================================
+--- ../trunk-jpl/src/c/analyses/EnthalpyAnalysis.cpp	(revision 27101)
++++ ../trunk-jpl/src/c/analyses/EnthalpyAnalysis.cpp	(revision 27102)
+@@ -75,7 +75,7 @@
+ 		IoModelToConstraintsx(constraints,iomodel,spcvector,M,N,EnthalpyAnalysisEnum,finiteelement);
+ 	}
+ 
+-	/*Free ressources:*/
++	/*Free resources:*/
+ 	iomodel->DeleteData(spcvector,"md.thermal.spctemperature");
+ 	iomodel->DeleteData(spcvectorstatic,"md.thermal.spctemperature");
+ 	iomodel->DeleteData(issurface,"md.mesh.vertexonsurface");
+@@ -347,7 +347,7 @@
+ 		}
+ 	}
+ 
+-	/*Free ressources:*/
++	/*Free resources:*/
+ 	xDelete<int>(indices);
+ 	delete gauss;
+ }/*}}}*/
+@@ -1357,7 +1357,7 @@
+ 		}
+ 	}
+ 
+-	/*Free ressources:*/
++	/*Free resources:*/
+ 	xDelete<int>(indices);
+ 	xDelete<int>(indicesup);
+ 	delete gauss;
+@@ -1431,7 +1431,7 @@
+ 
+ 	}
+ 
+-	/*Free ressources:*/
++	/*Free resources:*/
+ 	xDelete<int>(indices);
+ 	xDelete<int>(indicesup);
+ 	delete gauss;
+@@ -1613,7 +1613,7 @@
+ 		element->AddInput(EnthalpyPicardEnum,values,finite_element);
+ 	}
+ 
+-	/*Free ressources:*/
++	/*Free resources:*/
+ 	xDelete<IssmDouble>(values);
+ 	xDelete<IssmDouble>(pressure);
+ 	xDelete<IssmDouble>(surface);
+Index: ../trunk-jpl/src/c/analyses/EsaAnalysis.cpp
+===================================================================
+--- ../trunk-jpl/src/c/analyses/EsaAnalysis.cpp	(revision 27101)
++++ ../trunk-jpl/src/c/analyses/EsaAnalysis.cpp	(revision 27102)
+@@ -143,7 +143,7 @@
+ 	/*All gather:*/
+ 	ISSM_MPI_Allgatherv(U_elastic_local, m, ISSM_MPI_DOUBLE, U_elastic, recvcounts, displs, ISSM_MPI_DOUBLE,IssmComm::GetComm());
+ 	ISSM_MPI_Allgatherv(H_elastic_local, m, ISSM_MPI_DOUBLE, H_elastic, recvcounts, displs, ISSM_MPI_DOUBLE,IssmComm::GetComm());
+-	/*free ressources: */
++	/*Free resources: */
+ 	xDelete<int>(recvcounts);
+ 	xDelete<int>(displs);
+ 
+@@ -155,7 +155,7 @@
+ 	H_elastic[0]=H_elastic[1];
+ 	parameters->AddObject(new DoubleVecParam(EsaHElasticEnum,H_elastic,M));
+ 
+-	/*free ressources: */
++	/*Free resources: */
+ 	xDelete<IssmDouble>(love_h);
+ 	xDelete<IssmDouble>(love_l);
+ 	xDelete<IssmDouble>(U_elastic);
+Index: ../trunk-jpl/src/c/analyses/FreeSurfaceBaseAnalysis.cpp
+===================================================================
+--- ../trunk-jpl/src/c/analyses/FreeSurfaceBaseAnalysis.cpp	(revision 27101)
++++ ../trunk-jpl/src/c/analyses/FreeSurfaceBaseAnalysis.cpp	(revision 27102)
+@@ -41,7 +41,7 @@
+ 		}
+ 	}
+ 
+-	/*free ressources: */
++	/*Free resources: */
+ 	iomodel->DeleteData(vertex_pairing,"md.masstransport.vertex_pairing");
+ 	iomodel->DeleteData(nodeonbase,"md.mesh.vertexonbase");
+ }/*}}}*/
+Index: ../trunk-jpl/src/c/analyses/FreeSurfaceTopAnalysis.cpp
+===================================================================
+--- ../trunk-jpl/src/c/analyses/FreeSurfaceTopAnalysis.cpp	(revision 27101)
++++ ../trunk-jpl/src/c/analyses/FreeSurfaceTopAnalysis.cpp	(revision 27102)
+@@ -41,7 +41,7 @@
+ 		}
+ 	}
+ 
+-	/*free ressources: */
++	/*Free resources: */
+ 	iomodel->DeleteData(vertex_pairing,"md.masstransport.vertex_pairing");
+ 	iomodel->DeleteData(nodeonsurface,"md.mesh.vertexonsurface");
+ }/*}}}*/
+Index: ../trunk-jpl/src/c/analyses/HydrologyDCEfficientAnalysis.cpp
+===================================================================
+--- ../trunk-jpl/src/c/analyses/HydrologyDCEfficientAnalysis.cpp	(revision 27101)
++++ ../trunk-jpl/src/c/analyses/HydrologyDCEfficientAnalysis.cpp	(revision 27102)
+@@ -418,7 +418,7 @@
+ 	/*Add input to the element: */
+ 	element->AddBasalInput(EplHeadSubstepEnum,eplHeads,P1Enum);
+ 
+-	/*Free ressources:*/
++	/*Free resources:*/
+ 	xDelete<IssmDouble>(eplHeads);
+ 	xDelete<int>(doflist);
+ 	if(basalelement->IsSpawnedElement()){basalelement->DeleteMaterials(); delete basalelement;};
+Index: ../trunk-jpl/src/c/analyses/HydrologyDCInefficientAnalysis.cpp
+===================================================================
+--- ../trunk-jpl/src/c/analyses/HydrologyDCInefficientAnalysis.cpp	(revision 27101)
++++ ../trunk-jpl/src/c/analyses/HydrologyDCInefficientAnalysis.cpp	(revision 27102)
+@@ -517,7 +517,7 @@
+ 	element->AddBasalInput(EffectivePressureSubstepEnum,pressure,P1Enum);
+ 	element->AddBasalInput(SedimentHeadResidualEnum,residual,P1Enum);
+ 
+-	/*Free ressources:*/
++	/*Free resources:*/
+ 	xDelete<IssmDouble>(values);
+ 	xDelete<IssmDouble>(residual);
+ 	xDelete<IssmDouble>(pressure);
+Index: ../trunk-jpl/src/c/analyses/HydrologyShreveAnalysis.cpp
+===================================================================
+--- ../trunk-jpl/src/c/analyses/HydrologyShreveAnalysis.cpp	(revision 27101)
++++ ../trunk-jpl/src/c/analyses/HydrologyShreveAnalysis.cpp	(revision 27102)
+@@ -319,7 +319,7 @@
+ 	}
+ 	element->AddInput(AccumulatedDeltaTwsEnum,deltawatercolumn,P1Enum);
+ 
+-	/*Free ressources:*/
++	/*Free resources:*/
+ 	xDelete<IssmDouble>(oldwatercolumn);
+ 	xDelete<IssmDouble>(deltawatercolumn);
+ 	xDelete<IssmDouble>(watercolumn);
+Index: ../trunk-jpl/src/c/analyses/MasstransportAnalysis.cpp
+===================================================================
+--- ../trunk-jpl/src/c/analyses/MasstransportAnalysis.cpp	(revision 27101)
++++ ../trunk-jpl/src/c/analyses/MasstransportAnalysis.cpp	(revision 27102)
+@@ -85,7 +85,7 @@
+ 		}
+ 	}
+ 
+-	/*free ressources: */
++	/*Free resources: */
+ 	iomodel->DeleteData(vertex_pairing,"md.masstransport.vertex_pairing");
+ 	iomodel->DeleteData(nodeonbase,"md.mesh.vertexonbase");
+ }/*}}}*/
+@@ -927,7 +927,7 @@
+ 	element->AddBasalInput(SurfaceEnum,newsurface,P1Enum);
+ 	element->AddBasalInput(BaseEnum,newbase,P1Enum);
+ 
+-	/*Free ressources:*/
++	/*Free resources:*/
+ 	xDelete<IssmDouble>(newthickness);
+ 	xDelete<IssmDouble>(newbase);
+ 	xDelete<IssmDouble>(newsurface);
+Index: ../trunk-jpl/src/c/analyses/OceantransportAnalysis.cpp
+===================================================================
+--- ../trunk-jpl/src/c/analyses/OceantransportAnalysis.cpp	(revision 27101)
++++ ../trunk-jpl/src/c/analyses/OceantransportAnalysis.cpp	(revision 27102)
+@@ -146,7 +146,7 @@
+ 	/*Add value to global vector*/
+ 	solution->SetValues(numdof,doflist,values,INS_VAL);
+ 
+-	/*Free ressources:*/
++	/*Free resources:*/
+ 	delete gauss;
+ 	xDelete<int>(doflist);
+ 	xDelete<IssmDouble>(values);
+@@ -196,7 +196,7 @@
+ 	element->AddInput(DslEnum,dsl,P1Enum);
+ 	element->AddInput(StrEnum,&strmean,P0Enum); 
+ 
+-	/*Free ressources:*/
++	/*Free resources:*/
+ 	xDelete<IssmDouble>(bp);
+ 	xDelete<IssmDouble>(str);
+ 	xDelete<IssmDouble>(dsl);
+Index: ../trunk-jpl/src/c/analyses/SamplingAnalysis.cpp
+===================================================================
+--- ../trunk-jpl/src/c/analyses/SamplingAnalysis.cpp	(revision 27101)
++++ ../trunk-jpl/src/c/analyses/SamplingAnalysis.cpp	(revision 27102)
+@@ -288,7 +288,7 @@
+     /*Add sample inputs to the tria element: */
+     element->AddInput(SampleEnum,newsample,element->GetElementType());
+ 
+-    /*Free ressources:*/
++    /*Free resources:*/
+     xDelete<IssmDouble>(newsample);
+ 		xDelete<IssmDouble>(tau);
+     xDelete<int>(doflist);
+Index: ../trunk-jpl/src/c/analyses/StressbalanceAnalysis.cpp
+===================================================================
+--- ../trunk-jpl/src/c/analyses/StressbalanceAnalysis.cpp	(revision 27101)
++++ ../trunk-jpl/src/c/analyses/StressbalanceAnalysis.cpp	(revision 27102)
+@@ -501,7 +501,7 @@
+ 		}
+ 	}
+ 
+-	/*free ressources: */
++	/*Free resources: */
+ 	iomodel->DeleteData(penalties,"md.stressbalance.vertex_pairing");
+ 
+ 	/*Create Riffront loads for rifts: */
+@@ -1307,7 +1307,7 @@
+ 
+ 	solution->SetValues(numdof,doflist,values,INS_VAL);
+ 
+-	/*Free ressources:*/
++	/*Free resources:*/
+ 	delete gauss;
+ 	xDelete<IssmDouble>(values);
+ 	xDelete<int>(doflist);
+@@ -2142,7 +2142,7 @@
+ 	}
+ 	element->AddBasalInput(VelEnum,vel,element->GetElementType());
+ 
+-	/*Free ressources:*/
++	/*Free resources:*/
+ 	xDelete<IssmDouble>(vel);
+ 	xDelete<IssmDouble>(vz);
+ 	xDelete<IssmDouble>(vy);
+@@ -2748,7 +2748,7 @@
+ 	element->AddBasalInput(VxBaseEnum,vx,element->GetElementType());
+ 	element->AddBasalInput(VyBaseEnum,vy,element->GetElementType());
+ 
+-	/*Free ressources:*/
++	/*Free resources:*/
+ 	xDelete<IssmDouble>(vel);
+ 	xDelete<IssmDouble>(vz);
+ 	xDelete<IssmDouble>(vy);
+@@ -3274,7 +3274,7 @@
+ 		default: _error_("mesh "<<EnumToStringx(domaintype)<<" not supported yet");
+ 	}
+ 
+-	/*Free ressources:*/
++	/*Free resources:*/
+ 	xDelete<IssmDouble>(vel);
+ 	xDelete<IssmDouble>(vx);
+ 	xDelete<IssmDouble>(vy);
+@@ -3342,7 +3342,7 @@
+ 
+ 	solution->SetValues(numdof,doflist,values,INS_VAL);
+ 
+-	/*Free ressources:*/
++	/*Free resources:*/
+ 	delete gauss;
+ 	xDelete<IssmDouble>(values);
+ 	xDelete<int>(doflist);
+@@ -3991,7 +3991,7 @@
+ 	if(dim==3)element->AddInput(VyEnum,vy,element->GetElementType());
+ 	element->AddInput(VelEnum,vel,element->GetElementType());
+ 
+-	/*Free ressources:*/
++	/*Free resources:*/
+ 	xDelete<IssmDouble>(vel);
+ 	xDelete<IssmDouble>(vz);
+ 	xDelete<IssmDouble>(vy);
+@@ -6504,7 +6504,7 @@
+ 	solution->SetValues(vnumdof,vdoflist,vvalues,INS_VAL);
+ 	if(pnumdof>0) solution->SetValues(pnumdof,pdoflist,pvalues,INS_VAL);
+ 
+-	/*Free ressources:*/
++	/*Free resources:*/
+ 	delete gauss;
+ 	xDelete<int>(pdoflist);
+ 	xDelete<int>(vdoflist);
+@@ -6667,7 +6667,7 @@
+ 	if(pnumdof>0) element->AddInput(PressureEnum,pressure,element->PressureInterpolation());
+ 	if(dim==3) element->AddInput(VzEnum,vz,v_interp);
+ 
+-	/*Free ressources:*/
++	/*Free resources:*/
+ 	xDelete<IssmDouble>(pressure);
+ 	xDelete<IssmDouble>(vel);
+ 	xDelete<IssmDouble>(vz);
+@@ -8565,7 +8565,7 @@
+ 	element->AddInput(VelEnum,vel,P1Enum);
+ 	element->AddInput(PressureEnum,pressure,P1Enum);
+ 
+-	/*Free ressources:*/
++	/*Free resources:*/
+ 	xDelete<IssmDouble>(pressure);
+ 	xDelete<IssmDouble>(vel);
+ 	xDelete<IssmDouble>(vz);
+@@ -8668,7 +8668,7 @@
+ 	element->AddInput(VelEnum,vel,P1Enum);
+ 	element->AddInput(PressureEnum,pressure,P1Enum);
+ 
+-	/*Free ressources:*/
++	/*Free resources:*/
+ 	xDelete<IssmDouble>(pressure);
+ 	xDelete<IssmDouble>(vel);
+ 	xDelete<IssmDouble>(vz);
+@@ -8759,7 +8759,7 @@
+ 	element->AddInput(VelEnum,vel,P1Enum);
+ 	element->AddInput(PressureEnum,pressure,P1Enum);
+ 
+-	/*Free ressources:*/
++	/*Free resources:*/
+ 	xDelete<IssmDouble>(surface);
+ 	xDelete<IssmDouble>(pressure);
+ 	xDelete<IssmDouble>(vel);
+Index: ../trunk-jpl/src/c/analyses/StressbalanceSIAAnalysis.cpp
+===================================================================
+--- ../trunk-jpl/src/c/analyses/StressbalanceSIAAnalysis.cpp	(revision 27101)
++++ ../trunk-jpl/src/c/analyses/StressbalanceSIAAnalysis.cpp	(revision 27102)
+@@ -553,7 +553,7 @@
+ 	/*Add value to global vector*/
+ 	solution->SetValues(numdof,doflist,values,INS_VAL);
+ 
+-	/*Free ressources:*/
++	/*Free resources:*/
+ 	delete gauss;
+ 	xDelete<int>(doflist);
+ 	xDelete<IssmDouble>(values);
+@@ -629,7 +629,7 @@
+ 	element->AddInput(VelEnum,vel,P1Enum);
+ 	element->AddInput(PressureEnum,pressure,P1Enum);
+ 
+-	/*Free ressources:*/
++	/*Free resources:*/
+ 	xDelete<IssmDouble>(thickness);
+ 	xDelete<IssmDouble>(surface);
+ 	xDelete<IssmDouble>(pressure);
+Index: ../trunk-jpl/src/c/analyses/StressbalanceVerticalAnalysis.cpp
+===================================================================
+--- ../trunk-jpl/src/c/analyses/StressbalanceVerticalAnalysis.cpp	(revision 27101)
++++ ../trunk-jpl/src/c/analyses/StressbalanceVerticalAnalysis.cpp	(revision 27102)
+@@ -656,7 +656,7 @@
+ 	element->AddInput(VzEnum,vz,P1Enum);
+ 	element->AddInput(VelEnum,vel,P1Enum);
+ 
+-	/*Free ressources:*/
++	/*Free resources:*/
+ 	xDelete<IssmDouble>(surface);
+ 	xDelete<IssmDouble>(pressure);
+ 	xDelete<IssmDouble>(vel);
+Index: ../trunk-jpl/src/c/analyses/ThermalAnalysis.cpp
+===================================================================
+--- ../trunk-jpl/src/c/analyses/ThermalAnalysis.cpp	(revision 27101)
++++ ../trunk-jpl/src/c/analyses/ThermalAnalysis.cpp	(revision 27102)
+@@ -64,7 +64,7 @@
+ 		IoModelToConstraintsx(constraints,iomodel,spcvector,M,N,ThermalAnalysisEnum,finiteelement);
+ 	}
+ 
+-	/*Free ressources:*/
++	/*Free resources:*/
+ 	iomodel->DeleteData(spcvector,"md.thermal.spctemperature");
+ 	iomodel->DeleteData(spcvectorstatic,"md.thermal.spctemperature");
+ 	iomodel->DeleteData(issurface,"md.mesh.vertexonsurface");
+@@ -838,7 +838,7 @@
+ 		element->AddInput(TemperaturePicardEnum,values,element->GetElementType());
+ 	}
+ 
+-	/*Free ressources:*/
++	/*Free resources:*/
+ 	xDelete<IssmDouble>(values);
+ 	xDelete<IssmDouble>(surface);
+ 	xDelete<IssmDouble>(B);
+Index: ../trunk-jpl/src/c/analyses/UzawaPressureAnalysis.cpp
+===================================================================
+--- ../trunk-jpl/src/c/analyses/UzawaPressureAnalysis.cpp	(revision 27101)
++++ ../trunk-jpl/src/c/analyses/UzawaPressureAnalysis.cpp	(revision 27102)
+@@ -286,7 +286,7 @@
+ 		element->AddInput(SigmaNNEnum,valueslambda,P2Enum);
+ 	}
+ 
+-	/*Free ressources:*/
++	/*Free resources:*/
+ 	xDelete<IssmDouble>(values);
+ 	xDelete<IssmDouble>(valueslambda);
+ 	xDelete<IssmDouble>(pressure);
+Index: ../trunk-jpl/src/c/classes/Dakota/IssmDirectApplicInterface.h
+===================================================================
+--- ../trunk-jpl/src/c/classes/Dakota/IssmDirectApplicInterface.h	(revision 27101)
++++ ../trunk-jpl/src/c/classes/Dakota/IssmDirectApplicInterface.h	(revision 27102)
+@@ -117,7 +117,7 @@
+ 					fnVals[i]=responses[i];
+ 				}
+ 
+-				/*Free ressources:*/
++				/*Free resources:*/
+ 				xDelete<IssmDouble>(variables);
+ 				for(i=0;i<numACV;i++){
+ 					variable_descriptor=variable_descriptors[i];
+Index: ../trunk-jpl/src/c/classes/Dakota/IssmParallelDirectApplicInterface.cpp
+===================================================================
+--- ../trunk-jpl/src/c/classes/Dakota/IssmParallelDirectApplicInterface.cpp	(revision 27101)
++++ ../trunk-jpl/src/c/classes/Dakota/IssmParallelDirectApplicInterface.cpp	(revision 27102)
+@@ -133,7 +133,7 @@
+ 			fnVals[i]=responses[i];
+ 		}
+ 
+-		/*Free ressources:*/
++		/*Free resources:*/
+ 		xDelete<IssmDouble>(variables);
+ 		for(i=0;i<numACV;i++){
+ 			variable_descriptor=variable_descriptors[i];
+Index: ../trunk-jpl/src/c/classes/Elements/ElementHook.cpp
+===================================================================
+--- ../trunk-jpl/src/c/classes/Elements/ElementHook.cpp	(revision 27101)
++++ ../trunk-jpl/src/c/classes/Elements/ElementHook.cpp	(revision 27102)
+@@ -119,7 +119,7 @@
+ 	this->hmaterial->Marshall(marshallhandle);
+ 	if(this->hneighbors)this->hneighbors->Marshall(marshallhandle);
+ 
+-	/*Free ressources: */
++	/*Free resources: */
+ 	if(hnodesi_null) xDelete<bool>(hnodesi_null);
+ 
+ }
+Index: ../trunk-jpl/src/c/classes/Elements/Penta.cpp
+===================================================================
+--- ../trunk-jpl/src/c/classes/Elements/Penta.cpp	(revision 27101)
++++ ../trunk-jpl/src/c/classes/Elements/Penta.cpp	(revision 27102)
+@@ -2603,7 +2603,7 @@
+ 	/*Add input to the element: */
+ 	this->AddInput(enum_type,values,this->element_type);
+ 
+-	/*Free ressources:*/
++	/*Free resources:*/
+ 	xDelete<IssmDouble>(values);
+ 	xDelete<int>(doflist);
+ }
+@@ -2644,7 +2644,7 @@
+ 		penta=penta->GetUpperPenta(); _assert_(penta->Id()!=this->id);
+ 	}
+ 
+-	/*Free ressources:*/
++	/*Free resources:*/
+ 	xDelete<int>(doflist);
+ }
+ /*}}}*/
+@@ -2698,7 +2698,7 @@
+ 			/*Add input to the element: */
+ 			inputs->SetPentaInput(name,P1Enum,NUMVERTICES,lidlist,values);
+ 
+-			/*Free ressources:*/
++			/*Free resources:*/
+ 			xDelete<int>(doflist);
+ 			return;
+ 
+@@ -2711,7 +2711,7 @@
+ 			/*Add input to the element: */
+ 			inputs->SetPentaInput(name,P1Enum,NUMVERTICES,lidlist,values);
+ 
+-			/*Free ressources:*/
++			/*Free resources:*/
+ 			xDelete<int>(doflist);
+ 			return;
+ 
+Index: ../trunk-jpl/src/c/classes/Elements/Tetra.cpp
+===================================================================
+--- ../trunk-jpl/src/c/classes/Elements/Tetra.cpp	(revision 27101)
++++ ../trunk-jpl/src/c/classes/Elements/Tetra.cpp	(revision 27102)
+@@ -445,7 +445,7 @@
+ 	/*Add input to the element: */
+ 	this->AddInput(enum_type,values,this->element_type);
+ 
+-	/*Free ressources:*/
++	/*Free resources:*/
+ 	xDelete<IssmDouble>(values);
+ 	xDelete<int>(doflist);
+ }
+Index: ../trunk-jpl/src/c/classes/FemModel.cpp
+===================================================================
+--- ../trunk-jpl/src/c/classes/FemModel.cpp	(revision 27101)
++++ ../trunk-jpl/src/c/classes/FemModel.cpp	(revision 27102)
+@@ -282,7 +282,7 @@
+ 	/*Done, close file :*/
+ 	pfclose(restartfid,restartfilename);
+ 
+-	/*Free ressources: */
++	/*Free resources: */
+ 	xDelete<char>(femmodel_buffer);
+ 	xDelete<char>(restartfilename);
+ }
+@@ -633,7 +633,7 @@
+ 	/*Done, close file :*/
+ 	pfclose(restartfid,restartfilename);
+ 
+-	/*Free ressources: */
++	/*Free resources: */
+ 	xDelete<char>(restartfilename);
+ 	xDelete<char>(femmodel_buffer);
+ }/*}}}*/
+@@ -1802,7 +1802,7 @@
+ 	ISSM_MPI_Allreduce ( (void*)&mass_flux,(void*)&all_mass_flux,1,ISSM_MPI_DOUBLE,ISSM_MPI_SUM,IssmComm::GetComm());
+ 	mass_flux=all_mass_flux;
+ 
+-	/*Free ressources:*/
++	/*Free resources:*/
+ 	for(i=0;i<M;i++){
+ 		IssmDouble* matrix=array[i];
+ 		xDelete<IssmDouble>(matrix);
+@@ -3164,7 +3164,7 @@
+ 	InputUpdateFromVectorx(this,vy,VyMeshEnum,VertexPIdEnum);
+ 	InputUpdateFromVectorx(this,vz,VzMeshEnum,VertexPIdEnum);
+ 
+-	/*Free ressources:*/
++	/*Free resources:*/
+ 	delete vx;
+ 	delete vy;
+ 	delete vz;
+@@ -4616,7 +4616,7 @@
+ 				responses_pointer+=npart;
+ 			}
+ 
+-			/*Free ressources:*/
++			/*Free resources:*/
+ 			xDelete<double>(vertex_response);
+ 			xDelete<double>(qmu_response);
+ 
+@@ -4667,7 +4667,7 @@
+ 	}
+ 	/*}}}*/
+ 
+-	/*Free ressources:*/
++	/*Free resources:*/
+ 	for(i=0;i<response_partitions_num;i++){
+ 		IssmDouble* matrix=response_partitions[i];
+ 		xDelete<IssmDouble>(matrix);
+@@ -4711,7 +4711,7 @@
+ 	pX->Assemble();
+ 	pY->Assemble();
+ 
+-	/*Free ressources:*/
++	/*Free resources:*/
+ 	xDelete<IssmDouble>(xx);
+ 	xDelete<IssmDouble>(yy);
+ }
+@@ -4745,7 +4745,7 @@
+ 	pNorth->Assemble();
+ 	pEast->Assemble();
+ 
+-	/*Free ressources:*/
++	/*Free resources:*/
+ 	xDelete<IssmDouble>(latitude);
+ 	xDelete<IssmDouble>(longitude);
+ 	xDelete<IssmDouble>(radius);
+Index: ../trunk-jpl/src/c/classes/IoModel.cpp
+===================================================================
+--- ../trunk-jpl/src/c/classes/IoModel.cpp	(revision 27101)
++++ ../trunk-jpl/src/c/classes/IoModel.cpp	(revision 27102)
+@@ -1179,7 +1179,7 @@
+ 	else{
+ 		integer_matrix=NULL;
+ 	}
+-	/*Free ressources:*/
++	/*Free resources:*/
+ 	xDelete<IssmPDouble>(matrix);
+ 
+ 	/*Assign output pointers: */
+@@ -1746,7 +1746,7 @@
+ 		}
+ 	}
+ 
+-	/*Free ressources*/
++	/*Free resources:*/
+ 	xDelete<IssmDouble>(doublearray);
+ }
+ /*}}}*/
+@@ -1946,7 +1946,7 @@
+ 			_error_("data code " << code << " not supported yet (detected while processing \""<<vector_name<<"\")");
+ 			break;
+ 	}
+-	/*Free ressources*/
++	/*Free resources:*/
+ 	xDelete<IssmDouble>(doublearray);
+ }
+ /*}}}*/
+@@ -2025,7 +2025,7 @@
+ 			_error_("data code " << code << " not supported yet (detected while processing \""<<vector_name<<"\")");
+ 			break;
+ 	}
+-	/*Free ressources*/
++	/*Free resources:*/
+ 	xDelete<IssmDouble>(doublearray);
+ }
+ /*}}}*/
+@@ -2259,7 +2259,7 @@
+ 			strings[i]=string;
+ 		}
+ 	}
+-	/*Free ressources:*/
++	/*Free resources:*/
+ 	xDelete<int>(codes);
+ 	xDelete<fpos_t>(file_positions);
+ 
+@@ -2312,7 +2312,7 @@
+ 		}
+ 	}
+ 
+-	/*Free ressources:*/
++	/*Free resources:*/
+ 	xDelete<fpos_t>(file_positions);
+ 	xDelete<int>(codes);
+ 
+@@ -2365,7 +2365,7 @@
+ 		}
+ 	}
+ 
+-	/*Free ressources:*/
++	/*Free resources:*/
+ 	xDelete<fpos_t>(file_positions);
+ 	xDelete<int>(codes);
+ 
+@@ -2454,7 +2454,7 @@
+ 		}
+ 	}
+ 
+-	/*Free ressources:*/
++	/*Free resources:*/
+ 	xDelete<fpos_t>(file_positions);
+ 	xDelete<int>(codes);
+ 
+@@ -2557,7 +2557,7 @@
+ 		}
+ 	}
+ 
+-	/*Free ressources:*/
++	/*Free resources:*/
+ 	xDelete<fpos_t>(file_positions);
+ 	xDelete<int>(codes);
+ 
+Index: ../trunk-jpl/src/c/classes/Materials/Matlitho.cpp
+===================================================================
+--- ../trunk-jpl/src/c/classes/Materials/Matlitho.cpp	(revision 27101)
++++ ../trunk-jpl/src/c/classes/Materials/Matlitho.cpp	(revision 27102)
+@@ -87,7 +87,7 @@
+ 	xMemCpy<IssmDouble>(issolidd, iomodel->Data("md.materials.issolid"),this->numlayers);
+ 	for (int i=0;i<this->numlayers;i++)this->issolid[i]=reCast<bool,IssmDouble>(issolidd[i]);*/
+ 
+-	/*free ressources: */
++	/*Free resources: */
+ 	xDelete<IssmDouble>(rheologymodeld);
+ 	xDelete<IssmDouble>(issolidd);
+ }
+Index: ../trunk-jpl/src/c/classes/Misfit.cpp
+===================================================================
+--- ../trunk-jpl/src/c/classes/Misfit.cpp	(revision 27101)
++++ ../trunk-jpl/src/c/classes/Misfit.cpp	(revision 27102)
+@@ -177,7 +177,7 @@
+ 			 }
+ 			 misfit=sqrt(misfit_t/count);
+ 
+-			 /*Free ressources:*/
++			 /*Free resources:*/
+ 			 xDelete<IssmDouble>(model);
+ 			 xDelete<IssmDouble>(observation);
+ 			 xDelete<IssmDouble>(weights);
+@@ -212,7 +212,7 @@
+ 			 /*Do we lock? i.e. are we at final_time? :*/
+ 			 if(time==finaltime)this->lock=1;
+ 
+-			 /*Free ressources:*/
++			 /*Free resources:*/
+ 			 xDelete<IssmDouble>(model);
+ 			 xDelete<IssmDouble>(observation);
+ 			 xDelete<IssmDouble>(weights);
+Index: ../trunk-jpl/src/c/classes/Node.cpp
+===================================================================
+--- ../trunk-jpl/src/c/classes/Node.cpp	(revision 27101)
++++ ../trunk-jpl/src/c/classes/Node.cpp	(revision 27102)
+@@ -837,7 +837,7 @@
+ 		}
+ 		else doflist=NULL;
+ 
+-		/*Free ressources:*/
++		/*Free resources:*/
+ 		xDelete<int>(ndof_list);
+ 	}
+ 
+Index: ../trunk-jpl/src/c/classes/Params/Parameters.cpp
+===================================================================
+--- ../trunk-jpl/src/c/classes/Params/Parameters.cpp	(revision 27101)
++++ ../trunk-jpl/src/c/classes/Params/Parameters.cpp	(revision 27102)
+@@ -655,7 +655,7 @@
+ 	outstring=xNew<char>(strlen(strings[found])+1);
+ 	strcpy(outstring,strings[found]);
+ 
+-	/*Free ressources*/
++	/*Free resources:*/
+ 	for(i=0;i<numanalyses;i++){
+ 		xDelete<char>(toolkits[i]);
+ 		xDelete<char>(strings[i]);
+Index: ../trunk-jpl/src/c/classes/Vertices.cpp
+===================================================================
+--- ../trunk-jpl/src/c/classes/Vertices.cpp	(revision 27101)
++++ ../trunk-jpl/src/c/classes/Vertices.cpp	(revision 27102)
+@@ -167,7 +167,7 @@
+ 	IssmDouble* lat_serial=lat->ToMPISerial();
+ 	IssmDouble* lon_serial=lon->ToMPISerial();
+ 
+-	/*free ressources: */
++	/*Free resources: */
+ 	*plat = lat_serial;
+ 	*plon = lon_serial;
+ 	delete lat;
+Index: ../trunk-jpl/src/c/classes/gauss/GaussSeg.cpp
+===================================================================
+--- ../trunk-jpl/src/c/classes/gauss/GaussSeg.cpp	(revision 27101)
++++ ../trunk-jpl/src/c/classes/gauss/GaussSeg.cpp	(revision 27102)
+@@ -42,7 +42,7 @@
+ 		this->weights[i]=pweights[i];
+ 	}
+ 
+-	/*Free ressources: */
++	/*Free resources: */
+ 	xDelete<IssmPDouble>(pcoords1);
+ 	xDelete<IssmPDouble>(pweights);
+ 
+Index: ../trunk-jpl/src/c/classes/matrix/ElementMatrix.cpp
+===================================================================
+--- ../trunk-jpl/src/c/classes/matrix/ElementMatrix.cpp	(revision 27101)
++++ ../trunk-jpl/src/c/classes/matrix/ElementMatrix.cpp	(revision 27102)
+@@ -161,7 +161,7 @@
+ 		/*add local values into global  matrix, using the fglobaldoflist: */
+ 		pf->SetValues(fsize,this->fglobaldoflist,localvalues,ADD_VAL);
+ 
+-		/*Free ressources:*/
++		/*Free resources:*/
+ 		xDelete<IssmDouble>(localvalues);
+ 	}
+ 
+Index: ../trunk-jpl/src/c/cores/ResetBoundaryConditions.cpp
+===================================================================
+--- ../trunk-jpl/src/c/cores/ResetBoundaryConditions.cpp	(revision 27101)
++++ ../trunk-jpl/src/c/cores/ResetBoundaryConditions.cpp	(revision 27102)
+@@ -24,6 +24,6 @@
+ 	/*update spcs using this new vector of constraints: */
+ 	UpdateDynamicConstraintsx(femmodel->constraints,femmodel->nodes,femmodel->parameters,yg);
+ 
+-	/*Free ressources:*/
++	/*Free resources:*/
+ 	delete yg;
+ }
+Index: ../trunk-jpl/src/c/cores/adgradient_core.cpp
+===================================================================
+--- ../trunk-jpl/src/c/cores/adgradient_core.cpp	(revision 27101)
++++ ../trunk-jpl/src/c/cores/adgradient_core.cpp	(revision 27102)
+@@ -167,7 +167,7 @@
+ 
+ 			if(VerboseAutodiff())_printf0_("   end ad core\n");
+ 
+-			/* delete the allocated space for the parameters and free ressources:{{{*/
++			/* delete the allocated space for the parameters and Free resources:{{{*/
+ 			xDelete(anEDF_for_solverx_p->dp_x);
+ 			xDelete(anEDF_for_solverx_p->dp_X);
+ 			xDelete(anEDF_for_solverx_p->dpp_X);
+Index: ../trunk-jpl/src/c/cores/control_core.cpp
+===================================================================
+--- ../trunk-jpl/src/c/cores/control_core.cpp	(revision 27101)
++++ ../trunk-jpl/src/c/cores/control_core.cpp	(revision 27102)
+@@ -106,7 +106,7 @@
+ 		#endif
+ 	}
+ 
+-	/*Free ressources: */
++	/*Free resources: */
+ 	xDelete<int>(control_type);
+ 	xDelete<int>(maxiter);
+ 	xDelete<IssmDouble>(cm_jump);
+@@ -188,7 +188,7 @@
+ 	for(int i=0;i<num_responses;i++) _printf0_(" "<<setw(12)<<setprecision(7)<<Jlist[i]);
+ 	_printf0_("\n");
+ 
+-	/*Free ressources:*/
++	/*Free resources:*/
+ 	xDelete<IssmDouble>(XU);
+ 	xDelete<IssmDouble>(XL);
+ 	xDelete<IssmDouble>(Jlist);
+Index: ../trunk-jpl/src/c/cores/dakota_core.cpp
+===================================================================
+--- ../trunk-jpl/src/c/cores/dakota_core.cpp	(revision 27101)
++++ ../trunk-jpl/src/c/cores/dakota_core.cpp	(revision 27102)
+@@ -227,7 +227,7 @@
+ 	if(VerboseQmu()) _printf0_("outputing results for this core:\n");
+ 	OutputResultsx(femmodel);
+ 
+-	/*Free ressources:*/
++	/*Free resources:*/
+ 	DakotaFree(&d_variables,&d_variables_descriptors,&responses_descriptors, d_numvariables, numresponsedescriptors);
+ 
+ 	/*Avoid leaks here: */
+Index: ../trunk-jpl/src/c/cores/esa_core.cpp
+===================================================================
+--- ../trunk-jpl/src/c/cores/esa_core.cpp	(revision 27101)
++++ ../trunk-jpl/src/c/cores/esa_core.cpp	(revision 27102)
+@@ -105,7 +105,7 @@
+ 
+ 		if(solution_type==EsaSolutionEnum)femmodel->RequestedDependentsx();
+ 
+-		/*Free ressources:*/	
++		/*Free resources:*/	
+ 		delete U_radial;
+ 		delete U_north;
+ 		delete U_east;
+Index: ../trunk-jpl/src/c/cores/groundingline_core.cpp
+===================================================================
+--- ../trunk-jpl/src/c/cores/groundingline_core.cpp	(revision 27101)
++++ ../trunk-jpl/src/c/cores/groundingline_core.cpp	(revision 27102)
+@@ -39,7 +39,7 @@
+ 	/*Save results*/
+ 	if(save_results) femmodel->RequestedOutputsx(&femmodel->results,requested_outputs,numoutputs);
+ 
+-	/*Free ressources:*/
++	/*Free resources:*/
+    if(numoutputs){for(int i=0;i<numoutputs;i++){xDelete<char>(requested_outputs[i]);} xDelete<char*>(requested_outputs);}
+ 
+ 	/*Stop profiler*/
+Index: ../trunk-jpl/src/c/cores/hydrology_core.cpp
+===================================================================
+--- ../trunk-jpl/src/c/cores/hydrology_core.cpp	(revision 27101)
++++ ../trunk-jpl/src/c/cores/hydrology_core.cpp	(revision 27102)
+@@ -235,7 +235,7 @@
+ 			femmodel->RequestedOutputsx(&femmodel->results,requested_outputs,numoutputs);
+ 		}
+ 	}
+-	/*Free ressources:*/
++	/*Free resources:*/
+ 	if(numoutputs){
+ 		for(int i=0;i<numoutputs;i++){
+ 			xDelete<char>(requested_outputs[i]);
+Index: ../trunk-jpl/src/c/cores/masstransport_core.cpp
+===================================================================
+--- ../trunk-jpl/src/c/cores/masstransport_core.cpp	(revision 27101)
++++ ../trunk-jpl/src/c/cores/masstransport_core.cpp	(revision 27102)
+@@ -96,7 +96,7 @@
+ 
+ 	if(solution_type==MasstransportSolutionEnum)femmodel->RequestedDependentsx();
+ 
+-	/*Free ressources:*/
++	/*Free resources:*/
+ 	if(numoutputs){for(int i=0;i<numoutputs;i++){xDelete<char>(requested_outputs[i]);} xDelete<char*>(requested_outputs);}
+ 
+ 	/*profiler*/
+Index: ../trunk-jpl/src/c/cores/oceantransport_core.cpp
+===================================================================
+--- ../trunk-jpl/src/c/cores/oceantransport_core.cpp	(revision 27101)
++++ ../trunk-jpl/src/c/cores/oceantransport_core.cpp	(revision 27102)
+@@ -51,7 +51,7 @@
+ 	/*profiler*/
+ 	femmodel->profiler->Stop(OCEANTRANSPORTCORE);
+ 
+-	/*free ressources:*/
++	/*Free resources:*/
+ 	delete ug;
+ 
+ } /*}}}*/
+Index: ../trunk-jpl/src/c/cores/sampling_core.cpp
+===================================================================
+--- ../trunk-jpl/src/c/cores/sampling_core.cpp	(revision 27101)
++++ ../trunk-jpl/src/c/cores/sampling_core.cpp	(revision 27102)
+@@ -68,7 +68,7 @@
+ 
+ 	if(solution_type==SamplingSolutionEnum)femmodel->RequestedDependentsx();
+ 
+-	/*Free ressources:*/
++	/*Free resources:*/
+ 	if(numoutputs){for(int i=0;i<numoutputs;i++){xDelete<char>(requested_outputs[i]);} xDelete<char*>(requested_outputs);}
+ 
+ 	/*profiler*/
+Index: ../trunk-jpl/src/c/cores/smb_core.cpp
+===================================================================
+--- ../trunk-jpl/src/c/cores/smb_core.cpp	(revision 27101)
++++ ../trunk-jpl/src/c/cores/smb_core.cpp	(revision 27102)
+@@ -107,7 +107,7 @@
+ 
+ 	if(solution_type==SmbSolutionEnum)femmodel->RequestedDependentsx();
+ 
+-	/*Free ressources:*/
++	/*Free resources:*/
+ 	if(numoutputs){for(int i=0;i<numoutputs;i++){xDelete<char>(requested_outputs[i]);} xDelete<char*>(requested_outputs);}
+ 
+ 	/*End profiler*/
+Index: ../trunk-jpl/src/c/cores/steadystate_core.cpp
+===================================================================
+--- ../trunk-jpl/src/c/cores/steadystate_core.cpp	(revision 27101)
++++ ../trunk-jpl/src/c/cores/steadystate_core.cpp	(revision 27102)
+@@ -80,7 +80,7 @@
+ 		femmodel->RequestedOutputsx(&femmodel->results,requested_outputs,numoutputs);
+ 	}
+ 
+-	/*Free ressources:*/
++	/*Free resources:*/
+ 	delete tg_old;
+ 	delete ug_old;
+ 	delete tg;
+Index: ../trunk-jpl/src/c/cores/stressbalance_core.cpp
+===================================================================
+--- ../trunk-jpl/src/c/cores/stressbalance_core.cpp	(revision 27101)
++++ ../trunk-jpl/src/c/cores/stressbalance_core.cpp	(revision 27102)
+@@ -97,7 +97,7 @@
+ 
+ 	if(solution_type==StressbalanceSolutionEnum && !control_analysis)femmodel->RequestedDependentsx();
+ 
+-	/*Free ressources:*/
++	/*Free resources:*/
+ 	if(numoutputs){for(int i=0;i<numoutputs;i++){xDelete<char>(requested_outputs[i]);} xDelete<char*>(requested_outputs);}
+ 
+ 	/*End profiler*/
+Index: ../trunk-jpl/src/c/cores/thermal_core.cpp
+===================================================================
+--- ../trunk-jpl/src/c/cores/thermal_core.cpp	(revision 27101)
++++ ../trunk-jpl/src/c/cores/thermal_core.cpp	(revision 27102)
+@@ -52,7 +52,7 @@
+ 		femmodel->RequestedOutputsx(&femmodel->results,requested_outputs,numoutputs);
+ 	}
+ 
+-	/*Free ressources:*/
++	/*Free resources:*/
+ 	if(numoutputs){for(int i=0;i<numoutputs;i++){xDelete<char>(requested_outputs[i]);} xDelete<char*>(requested_outputs);}
+ 
+ 	/*End profiler*/
+Index: ../trunk-jpl/src/c/cores/transient_core.cpp
+===================================================================
+--- ../trunk-jpl/src/c/cores/transient_core.cpp	(revision 27101)
++++ ../trunk-jpl/src/c/cores/transient_core.cpp	(revision 27102)
+@@ -248,7 +248,7 @@
+ 		if(VerboseSolution()) _printf0_("   computing transient requested outputs\n");
+ 		femmodel->RequestedOutputsx(&femmodel->results,requested_outputs,numoutputs,save_results);
+ 
+-		/*Free ressources:*/
++		/*Free resources:*/
+ 		for(int i=0;i<numoutputs;i++){xDelete<char>(requested_outputs[i]);} xDelete<char*>(requested_outputs);
+ 	}
+ }/*}}}*/
+Index: ../trunk-jpl/src/c/main/issm_ocean.cpp
+===================================================================
+--- ../trunk-jpl/src/c/main/issm_ocean.cpp	(revision 27101)
++++ ../trunk-jpl/src/c/main/issm_ocean.cpp	(revision 27102)
+@@ -61,7 +61,7 @@
+ 	/*Finalize exception trapping: */
+ 	ExceptionTrapEnd();
+ 
+-	/*Free ressources:*/
++	/*Free resources:*/
+ 
+ 	/*Return unix success: */
+ 	return 0; 
+Index: ../trunk-jpl/src/c/main/issm_slc.cpp
+===================================================================
+--- ../trunk-jpl/src/c/main/issm_slc.cpp	(revision 27101)
++++ ../trunk-jpl/src/c/main/issm_slc.cpp	(revision 27102)
+@@ -121,7 +121,7 @@
+ 	/*Finalize exception trapping: */
+ 	ExceptionTrapEnd();
+ 
+-	/*Free ressources:*/
++	/*Free resources:*/
+ 	xDelete<int>(commsizes);
+ 	for(int i=0;i<nummodels;i++){
+ 		char* string=NULL;
+Index: ../trunk-jpl/src/c/main/kriging.cpp
+===================================================================
+--- ../trunk-jpl/src/c/main/kriging.cpp	(revision 27101)
++++ ../trunk-jpl/src/c/main/kriging.cpp	(revision 27102)
+@@ -67,7 +67,7 @@
+ 	_printf0_("write lock file:\n");
+ 	WriteLockFile(lockfilename);
+ 
+-	/*Free ressources */
++	/*Free resources: */
+ 	xDelete<char>(lockfilename);
+ 	xDelete<char>(binfilename);
+ 	xDelete<char>(outbinfilename);
+Index: ../trunk-jpl/src/c/modules/AllocateSystemMatricesx/AllocateSystemMatricesx.cpp
+===================================================================
+--- ../trunk-jpl/src/c/modules/AllocateSystemMatricesx/AllocateSystemMatricesx.cpp	(revision 27101)
++++ ../trunk-jpl/src/c/modules/AllocateSystemMatricesx/AllocateSystemMatricesx.cpp	(revision 27102)
+@@ -76,7 +76,7 @@
+ 		if(ppf) pf =new Vector<IssmDouble>(flocalsize,fsize);
+ 	}
+ 
+-	/*Free ressources: */
++	/*Free resources: */
+ 	xDelete<char>(toolkittype);
+ 
+ 	/*Allocate output pointers*/
+Index: ../trunk-jpl/src/c/modules/AverageOntoPartitionx/AverageOntoPartitionx.cpp
+===================================================================
+--- ../trunk-jpl/src/c/modules/AverageOntoPartitionx/AverageOntoPartitionx.cpp	(revision 27101)
++++ ../trunk-jpl/src/c/modules/AverageOntoPartitionx/AverageOntoPartitionx.cpp	(revision 27102)
+@@ -44,7 +44,7 @@
+ 	/*serialize:*/
+ 	average=vec_average->ToMPISerial();
+ 
+-	/*Free ressources:*/
++	/*Free resources:*/
+ 	delete partition_contributions;
+ 	delete partition_areas;
+ 	delete vec_average;
+Index: ../trunk-jpl/src/c/modules/ElementCoordinatesx/ElementCoordinatesx.cpp
+===================================================================
+--- ../trunk-jpl/src/c/modules/ElementCoordinatesx/ElementCoordinatesx.cpp	(revision 27101)
++++ ../trunk-jpl/src/c/modules/ElementCoordinatesx/ElementCoordinatesx.cpp	(revision 27102)
+@@ -36,7 +36,7 @@
+ 	IssmDouble* ze=vze->ToMPISerial();
+ 	IssmDouble* areae=vareae->ToMPISerial();
+ 
+-	/*Free ressources: */
++	/*Free resources: */
+ 	delete vxe;
+ 	delete vye;
+ 	delete vze;
+@@ -78,7 +78,7 @@
+ 	IssmDouble* late=vlate->ToMPISerial();
+ 	IssmDouble* areae=vareae->ToMPISerial();
+ 
+-	/*Free ressources: */
++	/*Free resources: */
+ 	delete vlonge;
+ 	delete vlate;
+ 	delete vareae;
+Index: ../trunk-jpl/src/c/modules/GetVectorFromInputsx/GetVectorFromInputsx.cpp
+===================================================================
+--- ../trunk-jpl/src/c/modules/GetVectorFromInputsx/GetVectorFromInputsx.cpp	(revision 27101)
++++ ../trunk-jpl/src/c/modules/GetVectorFromInputsx/GetVectorFromInputsx.cpp	(revision 27102)
+@@ -108,7 +108,7 @@
+ 	GetVectorFromInputsx(&vec_vector,femmodel,name,type);
+ 	vector=vec_vector->ToMPISerial();
+ 
+-	/*Free ressources:*/
++	/*Free resources:*/
+ 	delete vec_vector;
+ 
+ 	/*Assign output pointers:*/
+@@ -125,7 +125,7 @@
+ 	GetVectoronBaseFromInputsx(&vec_vector,femmodel,name,type);
+ 	vector=vec_vector->ToMPISerial();
+ 
+-	/*Free ressources:*/
++	/*Free resources:*/
+ 	delete vec_vector;
+ 
+ 	/*Assign output pointers:*/
+Index: ../trunk-jpl/src/c/modules/GiaDeflectionCorex/GiaDeflectionCorex.cpp
+===================================================================
+--- ../trunk-jpl/src/c/modules/GiaDeflectionCorex/GiaDeflectionCorex.cpp	(revision 27101)
++++ ../trunk-jpl/src/c/modules/GiaDeflectionCorex/GiaDeflectionCorex.cpp	(revision 27102)
+@@ -105,7 +105,7 @@
+ 	*pwi=reCast<IssmDouble>(blocks_.aswokm_w);
+ 	*pdwidt=reCast<IssmDouble>(blocks_.aswokm_dwdt);
+ 
+-	/*Free ressources: */
++	/*Free resources: */
+ 	xDelete<IssmPDouble>(blockt_time);
+ 	xDelete<IssmPDouble>(blockt_bi);
+ 	xDelete<IssmPDouble>(blockt_dmi);
+Index: ../trunk-jpl/src/c/modules/Gradjx/Gradjx.cpp
+===================================================================
+--- ../trunk-jpl/src/c/modules/Gradjx/Gradjx.cpp	(revision 27101)
++++ ../trunk-jpl/src/c/modules/Gradjx/Gradjx.cpp	(revision 27102)
+@@ -88,7 +88,7 @@
+ 	/*Serialize*/
+ 	IssmDouble* gradient=vec_gradient->ToMPISerial();
+ 
+-	/*Free ressources and assign output pointer*/
++	/*Free resources: and assign output pointer*/
+ 	delete vec_gradient;
+ 	*pgradient=gradient;
+ }
+Index: ../trunk-jpl/src/c/modules/GroundinglineMigrationx/GroundinglineMigrationx.cpp
+===================================================================
+--- ../trunk-jpl/src/c/modules/GroundinglineMigrationx/GroundinglineMigrationx.cpp	(revision 27101)
++++ ../trunk-jpl/src/c/modules/GroundinglineMigrationx/GroundinglineMigrationx.cpp	(revision 27102)
+@@ -176,7 +176,7 @@
+ 		phi=vec_phi->ToMPISerial();
+ 	}
+ 
+-	/*Free ressources:*/
++	/*Free resources:*/
+ 	delete vec_phi;
+ 	xDelete<IssmDouble>(elements_neighboring_floatingce);
+ 
+Index: ../trunk-jpl/src/c/modules/InputUpdateFromDakotax/InputUpdateFromDakotax.cpp
+===================================================================
+--- ../trunk-jpl/src/c/modules/InputUpdateFromDakotax/InputUpdateFromDakotax.cpp	(revision 27101)
++++ ../trunk-jpl/src/c/modules/InputUpdateFromDakotax/InputUpdateFromDakotax.cpp	(revision 27102)
+@@ -144,7 +144,7 @@
+ 	/*Save results:*/
+ 	femmodel->results->AddResult(new GenericExternalResult<IssmPDouble*>(femmodel->results->Size()+1,"uq_variables",variables,numdakotavariables,1,1,0));
+ 
+-	/*Free ressources:*/
++	/*Free resources:*/
+ 	for(i=0;i<variable_partitions_num;i++){
+ 		IssmDouble* matrix=variable_partitions[i];
+ 		xDelete<IssmDouble>(matrix);
+Index: ../trunk-jpl/src/c/modules/InputUpdateFromVectorDakotax/InputUpdateFromVectorDakotax.cpp
+===================================================================
+--- ../trunk-jpl/src/c/modules/InputUpdateFromVectorDakotax/InputUpdateFromVectorDakotax.cpp	(revision 27101)
++++ ../trunk-jpl/src/c/modules/InputUpdateFromVectorDakotax/InputUpdateFromVectorDakotax.cpp	(revision 27102)
+@@ -11,7 +11,7 @@
+ 	IssmDouble* serial_vector=vector->ToMPISerial();
+ 	InputUpdateFromVectorDakotax(femmodel,serial_vector,name, type);
+ 
+-	/*Free ressources:*/
++	/*Free resources:*/
+ 	xDelete<double>(serial_vector);
+ }
+ 
+Index: ../trunk-jpl/src/c/modules/IoModelToConstraintsx/IoModelToConstraintsx.cpp
+===================================================================
+--- ../trunk-jpl/src/c/modules/IoModelToConstraintsx/IoModelToConstraintsx.cpp	(revision 27101)
++++ ../trunk-jpl/src/c/modules/IoModelToConstraintsx/IoModelToConstraintsx.cpp	(revision 27102)
+@@ -588,7 +588,7 @@
+ 		_error_("Size of spc field not supported");
+ 	}
+ 
+-	/*Free ressources:*/
++	/*Free resources:*/
+ 	xDelete<IssmDouble>(times);
+ 	xDelete<IssmDouble>(values);
+ 	xDelete<bool>(boundaryedge);
+@@ -722,7 +722,7 @@
+ 		_error_("Size of spc field not supported");
+ 	}
+ 
+-	/*Free ressources:*/
++	/*Free resources:*/
+ 	xDelete<IssmDouble>(times);
+ 	xDelete<IssmDouble>(values);
+ 	xDelete<bool>(boundaryedge);
+Index: ../trunk-jpl/src/c/modules/MeshPartitionx/MeshPartitionx.h
+===================================================================
+--- ../trunk-jpl/src/c/modules/MeshPartitionx/MeshPartitionx.h	(revision 27101)
++++ ../trunk-jpl/src/c/modules/MeshPartitionx/MeshPartitionx.h	(revision 27102)
+@@ -111,7 +111,7 @@
+ 	*pepart=epart;
+ 	*pnpart=npart;
+ 
+-	/*Free ressources: */
++	/*Free resources: */
+ 	xDelete<int>(index);
+ 	xDelete<int>(epart2d);
+ 	xDelete<int>(npart2d);
+Index: ../trunk-jpl/src/c/modules/MeshProfileIntersectionx/MeshProfileIntersectionx.cpp
+===================================================================
+--- ../trunk-jpl/src/c/modules/MeshProfileIntersectionx/MeshProfileIntersectionx.cpp	(revision 27101)
++++ ../trunk-jpl/src/c/modules/MeshProfileIntersectionx/MeshProfileIntersectionx.cpp	(revision 27102)
+@@ -108,7 +108,7 @@
+ 		segments[5*i+4]=(double)segment->eid;
+ 	}
+ 
+-	/*Free ressources:*/
++	/*Free resources:*/
+ 	delete segments_dataset;
+ 
+ 	/*Assign output pointers:*/
+Index: ../trunk-jpl/src/c/modules/ModelProcessorx/Autodiff/CreateParametersAutodiff.cpp
+===================================================================
+--- ../trunk-jpl/src/c/modules/ModelProcessorx/Autodiff/CreateParametersAutodiff.cpp	(revision 27101)
++++ ../trunk-jpl/src/c/modules/ModelProcessorx/Autodiff/CreateParametersAutodiff.cpp	(revision 27102)
+@@ -68,7 +68,7 @@
+ 		theAdolcEDF_p->GetParameterValue().myEDF_for_solverx_p->dp_x_changes=false;
+ 		parameters->AddObject(theAdolcEDF_p);
+ 
+-		/*Free ressources: */
++		/*Free resources: */
+ 		xDelete<char>(options);
+ 		/*}}}*/
+ 		#elif _HAVE_CODIPACK_
+@@ -95,7 +95,7 @@
+ 			default:
+ 							_error_("solver type not supported yet!");
+ 		}
+-		/*Free ressources: */
++		/*Free resources: */
+ 		xDelete<char>(options);
+ 		#endif
+ 		#if defined(_HAVE_AD_) 
+@@ -158,7 +158,7 @@
+ 				num_dep++;
+ 			}
+ 
+-			/*Free ressources:*/
++			/*Free resources:*/
+ 			for(i=0;i<num_dependent_objects;i++){
+ 				char* string=names[i]; xDelete<char>(string);
+ 			}
+Index: ../trunk-jpl/src/c/modules/ModelProcessorx/CreateElementsVerticesAndMaterials.cpp
+===================================================================
+--- ../trunk-jpl/src/c/modules/ModelProcessorx/CreateElementsVerticesAndMaterials.cpp	(revision 27101)
++++ ../trunk-jpl/src/c/modules/ModelProcessorx/CreateElementsVerticesAndMaterials.cpp	(revision 27102)
+@@ -290,7 +290,7 @@
+ 						break;
+ 				}
+ 			}
+-			//Free ressources:
++			//Free resources:
+ 			xDelete<int>(nature);
+ 			break;
+ 
+Index: ../trunk-jpl/src/c/modules/ModelProcessorx/CreateOutputDefinitions.cpp
+===================================================================
+--- ../trunk-jpl/src/c/modules/ModelProcessorx/CreateOutputDefinitions.cpp	(revision 27101)
++++ ../trunk-jpl/src/c/modules/ModelProcessorx/CreateOutputDefinitions.cpp	(revision 27102)
+@@ -49,7 +49,7 @@
+ 				for(j=0;j<numgates;j++){
+ 					output_definitions->AddObject(new Massfluxatgate<IssmDouble>(gatenames[j],StringToEnumx(gatedefinitionstrings[j]),gatesegments_M[j],gatesegments[j]));
+ 				}
+-				/*Free ressources:*/
++				/*Free resources:*/
+ 				for(j=0;j<numgates;j++){
+ 					char*       string  = gatenames[j];             xDelete<char>(string);
+ 					char*       string2 = gatedefinitionstrings[j]; xDelete<char>(string2);
+@@ -125,7 +125,7 @@
+ 
+ 				}
+ 
+-				/*Free ressources:*/
++				/*Free resources:*/
+ 				for(j=0;j<nummisfits;j++){
+ 					char* string=NULL;
+ 					IssmDouble* matrix = NULL;
+@@ -216,7 +216,7 @@
+ 
+ 				}
+ 
+-				  /*Free ressources:*/
++				  /*Free resources:*/
+ 				for(j=0;j<num_cfsurfacesquares;j++){
+ 					char* string=NULL;
+ 					IssmDouble* matrix = NULL;
+@@ -287,7 +287,7 @@
+ 
+ 				}
+ 
+-				/*Free ressources:*/
++				/*Free resources:*/
+ 				for(j=0;j<num_cfdragcoeffabsgrads;j++){
+ 					char* string=NULL;
+ 					IssmDouble* matrix = NULL;
+@@ -373,7 +373,7 @@
+ 
+ 				}
+ 
+-				/*Free ressources:*/
++				/*Free resources:*/
+ 				for(j=0;j<num_cfsurfacelogvels;j++){
+ 					char* string=NULL;
+ 					IssmDouble* matrix = NULL;
+@@ -462,7 +462,7 @@
+ 					}
+ 				}
+ 
+-				  /*Free ressources:*/
++				  /*Free resources:*/
+ 				for(j=0;j<num_cflevelsetmisfits;j++){
+ 					char* string=NULL;
+ 					IssmDouble* matrix = NULL;
+@@ -511,7 +511,7 @@
+ 					output_definitions->AddObject(new Nodalvalue(nodalvalue_name_s[j],StringToEnumx(nodalvalue_definitionstrings[j]),StringToEnumx(nodalvalue_modelstrings[j]),nodalvalue_node_s[j]-1)); //-1 because matlab to c indexing.
+ 				}
+ 
+-				/*Free ressources:*/
++				/*Free resources:*/
+ 				for(j=0;j<numnodalvalues;j++){
+ 					char* string=NULL;
+ 					string = nodalvalue_name_s[j];    xDelete<char>(string);
+@@ -545,7 +545,7 @@
+ 
+ 				}
+ 
+-				/*Free ressources:*/
++				/*Free resources:*/
+ 				for(j=0;j<nummasscons;j++){
+ 					char* string=NULL;
+ 					IssmDouble* matrix = NULL;
+@@ -588,7 +588,7 @@
+ 
+ 				}
+ 
+-				/*Free ressources:*/
++				/*Free resources:*/
+ 				for(j=0;j<num;j++){
+ 					char* string=NULL;
+ 					string = masscon_definitionstring_s[j];    xDelete<char>(string);
+@@ -628,7 +628,7 @@
+ 
+ 				}
+ 
+-				/*Free ressources:*/
++				/*Free resources:*/
+ 				for(j=0;j<numout;j++){
+ 					char* string=NULL;
+ 					IssmDouble* matrix = NULL;
+@@ -706,7 +706,7 @@
+ 				for(int i=0;i<num_cost_functions;i++) xDelete<char>(cost_functions[i]);
+ 				xDelete<char*>(cost_functions);
+ 
+-				/*Free ressources:*/
++				/*Free resources:*/
+ 				for(j=0;j<numout;j++){
+ 					xDelete<char>(ncf_name_s[j]);
+ 					xDelete<char>(ncf_definitionstring_s[j]);
+@@ -743,7 +743,7 @@
+ 	}
+ 	parameters->AddObject(new DataSetParam(OutputdefinitionEnum,output_definitions));
+ 
+-	/*Free ressources:*/
++	/*Free resources:*/
+ 	delete output_definitions;
+ 	xDelete<int>(output_definition_enums);
+ 
+Index: ../trunk-jpl/src/c/modules/PointCloudFindNeighborsx/PointCloudFindNeighborsxt.cpp
+===================================================================
+--- ../trunk-jpl/src/c/modules/PointCloudFindNeighborsx/PointCloudFindNeighborsxt.cpp	(revision 27101)
++++ ../trunk-jpl/src/c/modules/PointCloudFindNeighborsx/PointCloudFindNeighborsxt.cpp	(revision 27102)
+@@ -71,7 +71,7 @@
+ 	if (my_thread==0)
+ 	 _printf_("\r      loop progress: "<<fixed<<setw(6)<<setprecision(2)<<100.<<"%  \n");
+ 
+-	/*Free ressources:*/
++	/*Free resources:*/
+ 	xDelete<bool>(already);
+ 
+ 	return NULL;
+Index: ../trunk-jpl/src/c/modules/Reduceloadx/Reduceloadx.cpp
+===================================================================
+--- ../trunk-jpl/src/c/modules/Reduceloadx/Reduceloadx.cpp	(revision 27101)
++++ ../trunk-jpl/src/c/modules/Reduceloadx/Reduceloadx.cpp	(revision 27102)
+@@ -52,7 +52,7 @@
+ 		pf->AXPY(Kfsy_s,-1.);
+ 	}
+ 
+-	/*Free ressources and return*/
++	/*Free resources: and return*/
+ 	delete y_s0;
+ 	delete Kfsy_s;
+ 
+Index: ../trunk-jpl/src/c/modules/UpdateDynamicConstraintsx/UpdateDynamicConstraintsx.cpp
+===================================================================
+--- ../trunk-jpl/src/c/modules/UpdateDynamicConstraintsx/UpdateDynamicConstraintsx.cpp	(revision 27101)
++++ ../trunk-jpl/src/c/modules/UpdateDynamicConstraintsx/UpdateDynamicConstraintsx.cpp	(revision 27102)
+@@ -26,6 +26,6 @@
+ 
+ 	}
+ 
+-	/*Free ressources:*/
++	/*Free resources:*/
+ 	xDelete<IssmDouble>(yg_serial);
+ }
+Index: ../trunk-jpl/src/c/modules/VertexCoordinatesx/VertexCoordinatesx.cpp
+===================================================================
+--- ../trunk-jpl/src/c/modules/VertexCoordinatesx/VertexCoordinatesx.cpp	(revision 27101)
++++ ../trunk-jpl/src/c/modules/VertexCoordinatesx/VertexCoordinatesx.cpp	(revision 27102)
+@@ -33,7 +33,7 @@
+ 	IssmDouble* y=vy->ToMPISerial();
+ 	IssmDouble* z=vz->ToMPISerial();
+ 
+-	/*Free ressources: */
++	/*Free resources: */
+ 	delete vx;
+ 	delete vy;
+ 	delete vz;
+Index: ../trunk-jpl/src/c/shared/Threads/LaunchThread.cpp
+===================================================================
+--- ../trunk-jpl/src/c/shared/Threads/LaunchThread.cpp	(revision 27101)
++++ ../trunk-jpl/src/c/shared/Threads/LaunchThread.cpp	(revision 27102)
+@@ -55,7 +55,7 @@
+ 		}
+ 	}
+ 
+-	/*Free ressources:*/
++	/*Free resources:*/
+ 	xDelete<pthread_t>(threads);
+ 	xDelete<pthread_handle>(handles);
+ 
+Index: ../trunk-jpl/src/c/shared/Triangle/TriangleUtils.cpp
+===================================================================
+--- ../trunk-jpl/src/c/shared/Triangle/TriangleUtils.cpp	(revision 27101)
++++ ../trunk-jpl/src/c/shared/Triangle/TriangleUtils.cpp	(revision 27102)
+@@ -231,7 +231,7 @@
+ 		break;
+ 	}// for (;;)
+ 
+-	/*Free ressources: */
++	/*Free resources: */
+ 	xDelete<int>(GridElements);
+ 	/*Assign output pointers: */
+ 	*pNumGridElementListOnOneSideOfRift=NumGridElementListOnOneSideOfRift;
+@@ -421,7 +421,7 @@
+ 		*(riftssegments+i)=riftsegment;
+ 	}
+ 
+-	/*Free ressources: */
++	/*Free resources: */
+ 	xDelete<int>(segments);
+ 
+ 	/*Assign output pointers: */
+Index: ../trunk-jpl/src/c/solutionsequences/solutionsequence_hydro_nonlinear.cpp
+===================================================================
+--- ../trunk-jpl/src/c/solutionsequences/solutionsequence_hydro_nonlinear.cpp	(revision 27101)
++++ ../trunk-jpl/src/c/solutionsequences/solutionsequence_hydro_nonlinear.cpp	(revision 27102)
+@@ -286,7 +286,7 @@
+ 	if(isefficientlayer)InputUpdateFromSolutionx(femmodel,ug_epl);
+ 	femmodel->SetCurrentConfiguration(HydrologyDCInefficientAnalysisEnum);
+ 	InputUpdateFromSolutionx(femmodel,ug_sed);
+-	/*Free ressources: */
++	/*Free resources: */
+ 	delete ug_epl;
+ 	delete ug_sed;
+ 	delete uf_sed;
+Index: ../trunk-jpl/src/c/solutionsequences/solutionsequence_thermal_nonlinear.cpp
+===================================================================
+--- ../trunk-jpl/src/c/solutionsequences/solutionsequence_thermal_nonlinear.cpp	(revision 27101)
++++ ../trunk-jpl/src/c/solutionsequences/solutionsequence_thermal_nonlinear.cpp	(revision 27102)
+@@ -130,7 +130,7 @@
+ 		femmodel->parameters->SetParam(melting_offset,MeltingOffsetEnum);
+ 	}
+ 
+-	/*Free ressources: */
++	/*Free resources: */
+ 	delete tg;
+ 	delete tf;
+ 	delete tf_old;
+Index: ../trunk-jpl/src/c/toolkits/issm/IssmMpiDenseMat.h
+===================================================================
+--- ../trunk-jpl/src/c/toolkits/issm/IssmMpiDenseMat.h	(revision 27101)
++++ ../trunk-jpl/src/c/toolkits/issm/IssmMpiDenseMat.h	(revision 27102)
+@@ -265,7 +265,7 @@
+ 			}
+ 			/*}}}*/
+ 
+-			/*Free ressources:{{{*/
++			/*Free resources:{{{*/
+ 			xDelete<int>(RowRank);
+ 			xDelete<int>(row_indices_forcpu);
+ 			xDelete<int>(col_indices_forcpu);
+@@ -375,7 +375,7 @@
+ 				}
+ 			}
+ 
+-			/*Free ressources: */
++			/*Free resources: */
+ 			xDelete<doubletype>(X_serial);
+ 		}
+ 		/*}}}*/
+Index: ../trunk-jpl/src/c/toolkits/issm/IssmMpiSparseMat.h
+===================================================================
+--- ../trunk-jpl/src/c/toolkits/issm/IssmMpiSparseMat.h	(revision 27101)
++++ ../trunk-jpl/src/c/toolkits/issm/IssmMpiSparseMat.h	(revision 27102)
+@@ -291,7 +291,7 @@
+ 			/*Plug into matrix: */
+ 			for(int i=0;i<this->m;i++) this->matrix[i]->SetValues(numvalues_perrow[i],cols_perrow[i],values_perrow[i],mods_perrow[i]);
+ 
+-			/*Free ressources*/
++			/*Free resources:*/
+ 			xDelete<int>(numvalues_perrow);
+ 			xDelete<int>(RowRank);
+ 			xDelete<int>(row_indices_forcpu);
+@@ -393,7 +393,7 @@
+ 				AX->vector[i]=this->matrix[i]->Mult(X_serial);
+ 			}
+ 
+-			/*Free ressources: */
++			/*Free resources: */
+ 			xDelete<doubletype>(X_serial);
+ 		}
+ 		/*}}}*/
+Index: ../trunk-jpl/src/c/toolkits/issm/IssmMpiVec.h
+===================================================================
+--- ../trunk-jpl/src/c/toolkits/issm/IssmMpiVec.h	(revision 27101)
++++ ../trunk-jpl/src/c/toolkits/issm/IssmMpiVec.h	(revision 27102)
+@@ -278,7 +278,7 @@
+ 			/*}}}*/
+ 			this->isassembled=true;
+ 
+-			/*Free ressources:{{{*/
++			/*Free resources:{{{*/
+ 			xDelete<int>(RowRank);
+ 			xDelete<int>(row_indices_forcpu);
+ 			xDelete<int>(modes_forcpu);
+@@ -467,7 +467,7 @@
+ 
+ 			/*All gather:*/
+ 			ISSM_MPI_Allgatherv(this->vector, this->m, TypeToMPIType<doubletype>(), buffer, recvcounts, displs, TypeToMPIType<doubletype>(),comm);
+-			/*free ressources: */
++			/*Free resources: */
+ 			xDelete<int>(recvcounts);
+ 			xDelete<int>(displs);
+ 
+Index: ../trunk-jpl/src/c/toolkits/issm/IssmToolkitUtils.cpp
+===================================================================
+--- ../trunk-jpl/src/c/toolkits/issm/IssmToolkitUtils.cpp	(revision 27101)
++++ ../trunk-jpl/src/c/toolkits/issm/IssmToolkitUtils.cpp	(revision 27102)
+@@ -47,7 +47,7 @@
+ 	}
+ 	else _error_("matrix type not supported yet!");
+ 
+-	/*free ressources: */
++	/*Free resources: */
+ 	xDelete<char>(mat_type);
+ 
+ 	/*return: */
+@@ -77,7 +77,7 @@
+ 	}
+ 	else _error_("vector type not supported yet!");
+ 
+-	/*free ressources: */
++	/*Free resources: */
+ 	xDelete<char>(vec_type);
+ 
+ 	/*return: */
+@@ -106,7 +106,7 @@
+ 	}
+ 	else _error_("solver type not supported yet!");
+ 
+-	/*free ressources: */
++	/*Free resources: */
+ 	xDelete<char>(solver_type);
+ 
+ 	/*return: */
+Index: ../trunk-jpl/src/c/toolkits/mpi/commops/DetermineLocalSize.cpp
+===================================================================
+--- ../trunk-jpl/src/c/toolkits/mpi/commops/DetermineLocalSize.cpp	(revision 27101)
++++ ../trunk-jpl/src/c/toolkits/mpi/commops/DetermineLocalSize.cpp	(revision 27102)
+@@ -49,7 +49,7 @@
+ 	}
+ 	local_size=num_local_rows[my_rank];
+ 
+-	/*free ressources: */
++	/*Free resources: */
+ 	xDelete<int>(num_local_rows);
+ 
+ 	/*return size: */
+Index: ../trunk-jpl/src/c/toolkits/objects/Matrix.h
+===================================================================
+--- ../trunk-jpl/src/c/toolkits/objects/Matrix.h	(revision 27101)
++++ ../trunk-jpl/src/c/toolkits/objects/Matrix.h	(revision 27102)
+@@ -150,7 +150,7 @@
+ 				_error_("unknow toolkit type ");
+ 			}
+ 
+-			/*Free ressources: */
++			/*Free resources: */
+ 			xDelete<char>(toolkittype);
+ 		}
+ 		/*}}}*/
+Index: ../trunk-jpl/src/c/toolkits/objects/Vector.h
+===================================================================
+--- ../trunk-jpl/src/c/toolkits/objects/Vector.h	(revision 27101)
++++ ../trunk-jpl/src/c/toolkits/objects/Vector.h	(revision 27102)
+@@ -122,7 +122,7 @@
+ 				_error_("unknow toolkit type ");
+ 			}
+ 
+-			/*Free ressources: */
++			/*Free resources: */
+ 			xDelete<char>(toolkittype);
+ 		}
+ 		/*}}}*/
+Index: ../trunk-jpl/src/c/toolkits/petsc/objects/PetscSolver.cpp
+===================================================================
+--- ../trunk-jpl/src/c/toolkits/petsc/objects/PetscSolver.cpp	(revision 27101)
++++ ../trunk-jpl/src/c/toolkits/petsc/objects/PetscSolver.cpp	(revision 27102)
+@@ -227,7 +227,7 @@
+ 		#endif
+ 	}
+ 
+-	/*Free ressources:*/
++	/*Free resources:*/
+ 	xDelete<int>(pressure_indices);
+ 	xDelete<int>(velocity_indices);
+ 
+Index: ../trunk-jpl/src/c/toolkits/petsc/patches/MatMultPatch.cpp
+===================================================================
+--- ../trunk-jpl/src/c/toolkits/petsc/patches/MatMultPatch.cpp	(revision 27101)
++++ ../trunk-jpl/src/c/toolkits/petsc/patches/MatMultPatch.cpp	(revision 27102)
+@@ -106,7 +106,7 @@
+ 	VecAssemblyBegin(outvector);; 
+ 	VecAssemblyEnd(outvector);; 
+ 
+-	/*Free ressources:*/
++	/*Free resources:*/
+ 	xDelete<int>(index);
+ 	xDelete<double>(values);	
+ 
+Index: ../trunk-jpl/src/c/toolkits/petsc/patches/VecToMPISerial.cpp
+===================================================================
+--- ../trunk-jpl/src/c/toolkits/petsc/patches/VecToMPISerial.cpp	(revision 27101)
++++ ../trunk-jpl/src/c/toolkits/petsc/patches/VecToMPISerial.cpp	(revision 27102)
+@@ -92,7 +92,7 @@
+ 	/*Assign output pointers: */
+ 	*pgathered_vector=gathered_vector;
+ 
+-	/*free ressources: */
++	/*Free resources: */
+ 	xDelete<int>(idxn);
+ 	xDelete<double>(local_vector);
+ 
+Index: ../trunk-jpl/src/c/analyses/LevelsetAnalysis.cpp
+===================================================================
+--- ../trunk-jpl/src/c/analyses/LevelsetAnalysis.cpp	(revision 27101)
++++ ../trunk-jpl/src/c/analyses/LevelsetAnalysis.cpp	(revision 27102)
+@@ -890,7 +890,7 @@
+          femmodel->GetLocalVectorWithClonesNodes(&constraint_nodes,vec_constraint_nodes);
+ 		}
+ 
+-		/*Free ressources:*/
++		/*Free resources:*/
+ 		delete vec_constraint_nodes;
+ 
+ 		/*Contrain the nodes that will be calved*/
+Index: ../trunk-jpl/src/c/classes/Elements/Element.cpp
+===================================================================
+--- ../trunk-jpl/src/c/classes/Elements/Element.cpp	(revision 27101)
++++ ../trunk-jpl/src/c/classes/Elements/Element.cpp	(revision 27102)
+@@ -1532,7 +1532,7 @@
+ 
+ 	solution->SetValues(numnodes,doflist,values,INS_VAL);
+ 
+-	/*Free ressources:*/
++	/*Free resources:*/
+ 	xDelete<int>(doflist);
+ 	xDelete<IssmDouble>(values);
+ 	delete gauss;
+Index: ../trunk-jpl/src/c/classes/Elements/Tria.cpp
+===================================================================
+--- ../trunk-jpl/src/c/classes/Elements/Tria.cpp	(revision 27101)
++++ ../trunk-jpl/src/c/classes/Elements/Tria.cpp	(revision 27102)
+@@ -2017,7 +2017,7 @@
+ 	if(total_weight>0.) for(int i=0;i<NUMVERTICES;i++)weights[i]/=total_weight/phi; 
+ 	else for(int i=0;i<NUMVERTICES;i++)weights[i]=0;
+ 
+-	/*free ressources:*/
++	/*Free resources:*/
+ 	delete gauss;
+ 
+ 	/*Assign output pointers:*/
+@@ -3904,7 +3904,7 @@
+ 	/*Add input to the element: */
+ 	this->AddInput(enum_type,values,this->element_type);
+ 
+-	/*Free ressources:*/
++	/*Free resources:*/
+ 	xDelete<IssmDouble>(values);
+ 	xDelete<int>(doflist);
+ }
+@@ -6043,7 +6043,7 @@
+ 	pX->SetValues(gsize,indices,X_values,ADD_VAL);
+ 	pY->SetValues(gsize,indices,Y_values,ADD_VAL);
+ 
+-	/*free ressources:*/
++	/*Free resources:*/
+ 	xDelete<int>(indices);
+ 	xDelete<IssmDouble>(U_values); xDelete<IssmDouble>(N_values); xDelete<IssmDouble>(E_values);
+ 	xDelete<IssmDouble>(U_elastic); xDelete<IssmDouble>(N_elastic); xDelete<IssmDouble>(E_elastic);
+@@ -6205,7 +6205,7 @@
+ 	pNorth->SetValues(gsize,indices,N_values,ADD_VAL);
+ 	pEast->SetValues(gsize,indices,E_values,ADD_VAL);
+ 
+-	/*free ressources:*/
++	/*Free resources:*/
+ 	xDelete<int>(indices);
+ 	xDelete<IssmDouble>(U_values); xDelete<IssmDouble>(N_values); xDelete<IssmDouble>(E_values);
+ 	xDelete<IssmDouble>(U_elastic); xDelete<IssmDouble>(N_elastic); xDelete<IssmDouble>(E_elastic);
+@@ -6312,7 +6312,7 @@
+ 		dwgdt->SetValue(i,dwidt,ADD_VAL);
+ 	}
+ 
+-	/*Free ressources: */
++	/*Free resources: */
+ 	xDelete<IssmDouble>(hes);
+ 	xDelete<IssmDouble>(times);
+ 
+@@ -6668,7 +6668,7 @@
+ 				this->inputs->SetArrayInput(SealevelchangeGErotEnum,this->lid,GErot,3*3*nt);
+ 			}
+ 		}
+-		/*Free ressources:*/
++		/*Free resources:*/
+ 		xDelete<IssmDouble>(LoveRotRSL);
+ 		xDelete<IssmDouble>(LoveRotU);
+ 		if(horiz)xDelete<IssmDouble>(LoveRothoriz);
+@@ -7396,7 +7396,7 @@
+ 	/*Keep track of barystatic contributions:*/
+ 	barycontrib->Set(this->Sid(),bslcice,bslchydro,bslcbp);
+ 
+-	/*Free ressources:*/
++	/*Free resources:*/
+ 	xDelete<IssmDouble>(areae);
+ 
+ }
+@@ -7715,7 +7715,7 @@
+ 			/*Save viscous stack now that we updated the values:*/
+ 			this->inputs->SetArrayInput(viscousenum,this->lid,viscousfield,3*viscousnumsteps);
+ 
+-			/*Free ressources:*/
++			/*Free resources:*/
+ 			xDelete<IssmDouble>(grdfieldinterp);
+ 		}
+ 
+@@ -7735,7 +7735,7 @@
+ 	else{
+ 		for(i=0;i<NUMVERTICES;i++) grdfieldout[i]=grdfield[i*nt+0];
+ 	}
+-	/*Free ressources:*/
++	/*Free resources:*/
+ 	xDelete<IssmDouble>(grdfield);
+ 
+ } /*}}}*/
Index: /issm/oecreview/Archive/27032-27229/ISSM-27111-27112.diff
===================================================================
--- /issm/oecreview/Archive/27032-27229/ISSM-27111-27112.diff	(revision 27230)
+++ /issm/oecreview/Archive/27032-27229/ISSM-27111-27112.diff	(revision 27230)
@@ -0,0 +1,18 @@
+Index: ../trunk-jpl/src/m/plot/plot_mesh.py
+===================================================================
+--- ../trunk-jpl/src/m/plot/plot_mesh.py	(revision 27111)
++++ ../trunk-jpl/src/m/plot/plot_mesh.py	(revision 27112)
+@@ -20,8 +20,12 @@
+     ax = axgrid[gridindex]
+     fig.delaxes(axgrid.cbar_axes[gridindex])
+ 
++    #retrieve some options
++    edgecolor=options.getfieldvalue('edgecolor','k')
++    linewidth=options.getfieldvalue('linewidth',1)
++
+     if is2d:
+-        ax.triplot(x, y, elements)
++        ax.triplot(x, y, elements,color=edgecolor,linewidth=linewidth)
+     else:
+         ax = inset_axes(axgrid[gridindex], width='100%', height='100%', loc=3, borderpad=0, axes_class=Axes3D)
+ 
Index: /issm/oecreview/Archive/27032-27229/ISSM-27112-27113.diff
===================================================================
--- /issm/oecreview/Archive/27032-27229/ISSM-27112-27113.diff	(revision 27230)
+++ /issm/oecreview/Archive/27032-27229/ISSM-27112-27113.diff	(revision 27230)
@@ -0,0 +1,67 @@
+Index: ../trunk-jpl/src/c/classes/Inputs/ArrayInput.cpp
+===================================================================
+--- ../trunk-jpl/src/c/classes/Inputs/ArrayInput.cpp	(revision 27112)
++++ ../trunk-jpl/src/c/classes/Inputs/ArrayInput.cpp	(revision 27113)
+@@ -80,19 +80,40 @@
+ 	int object_enum = ArrayInputEnum;
+ 	marshallhandle->call(object_enum);
+ 	marshallhandle->call(this->numberofelements_local);
++
++	/*Allocate memory if reading restart file*/
++	if(marshallhandle->OperationNumber() == MARSHALLING_LOAD){
++		_assert_(this->numberofelements_local>0);
++		_assert_(this->numberofelements_local<1e11);
++		if(this->numberofelements_local){
++			this->N                      = xNewZeroInit<int>(this->numberofelements_local);
++			this->values                 = xNewZeroInit<IssmDouble*>(this->numberofelements_local);
++		}
++		else{
++			this->N      = NULL;
++			this->values = NULL;
++		}
++	}
++
++	/*Marshall N*/
+ 	if(this->numberofelements_local){
+ 		marshallhandle->call(this->N,this->numberofelements_local);
++	}
++
++	/*Marshall individual arrays*/
++	if(this->numberofelements_local){
+ 		for(int i=0;i<this->numberofelements_local;i++){
+-			if(this->values[i]){
++			if(this->N[i]){
++
++				/*Allocate if reading restart*/
++				if(marshallhandle->OperationNumber() == MARSHALLING_LOAD){
++					this->values[i] = xNew<IssmDouble>(this->N[i]);
++				}
++				_assert_(this->values[i]);
+ 				marshallhandle->call(this->values[i],this->N[i]);
+ 			}
+ 		}
+ 	}
+-	else{
+-		this->N      = NULL;
+-		this->values = NULL;
+-	}
+-
+ }
+ /*}}}*/
+ int  ArrayInput::ObjectEnum(void){/*{{{*/
+Index: ../trunk-jpl/src/c/classes/Inputs/Inputs.cpp
+===================================================================
+--- ../trunk-jpl/src/c/classes/Inputs/Inputs.cpp	(revision 27112)
++++ ../trunk-jpl/src/c/classes/Inputs/Inputs.cpp	(revision 27113)
+@@ -166,6 +166,11 @@
+ 				input->Marshall(marshallhandle);
+ 				this->inputs[index]=input;
+ 			}
++			else if(object_enum==ArrayInputEnum){
++				ArrayInput* input=new ArrayInput();
++				input->Marshall(marshallhandle);
++				this->inputs[index]=input;
++			}
+ 			else{
+ 				_error_("input "<<EnumToStringx(object_enum)<<" not supported");
+ 			}
Index: /issm/oecreview/Archive/27032-27229/ISSM-27115-27116.diff
===================================================================
--- /issm/oecreview/Archive/27032-27229/ISSM-27115-27116.diff	(revision 27230)
+++ /issm/oecreview/Archive/27032-27229/ISSM-27115-27116.diff	(revision 27230)
@@ -0,0 +1,15 @@
+Index: ../trunk-jpl/test/NightlyRun/runme.m
+===================================================================
+--- ../trunk-jpl/test/NightlyRun/runme.m	(revision 27115)
++++ ../trunk-jpl/test/NightlyRun/runme.m	(revision 27116)
+@@ -216,7 +216,9 @@
+ 					return;
+ 				end
+ 			end
+-
++		% Write NetCDF file
++		elseif strcmpi(procedure,'ncexp'),
++			export_netCDF(md, ['./test' num2str(id) 'ma.nc'])
+ 		%PRODUCE nc files?
+ 		elseif strcmpi(procedure,'ncExport'),
+ 			export_netCDF(md, ['test' num2str(id) 'ma.nc'])
Index: /issm/oecreview/Archive/27032-27229/ISSM-27116-27117.diff
===================================================================
--- /issm/oecreview/Archive/27032-27229/ISSM-27116-27117.diff	(revision 27230)
+++ /issm/oecreview/Archive/27032-27229/ISSM-27116-27117.diff	(revision 27230)
@@ -0,0 +1,14 @@
+Index: ../trunk-jpl/test/NightlyRun/runme.m
+===================================================================
+--- ../trunk-jpl/test/NightlyRun/runme.m	(revision 27116)
++++ ../trunk-jpl/test/NightlyRun/runme.m	(revision 27117)
+@@ -216,9 +216,6 @@
+ 					return;
+ 				end
+ 			end
+-		% Write NetCDF file
+-		elseif strcmpi(procedure,'ncexp'),
+-			export_netCDF(md, ['./test' num2str(id) 'ma.nc'])
+ 		%PRODUCE nc files?
+ 		elseif strcmpi(procedure,'ncExport'),
+ 			export_netCDF(md, ['test' num2str(id) 'ma.nc'])
Index: /issm/oecreview/Archive/27032-27229/ISSM-27117-27118.diff
===================================================================
--- /issm/oecreview/Archive/27032-27229/ISSM-27117-27118.diff	(revision 27230)
+++ /issm/oecreview/Archive/27032-27229/ISSM-27117-27118.diff	(revision 27230)
@@ -0,0 +1,13 @@
+Index: ../trunk-jpl/test/NightlyRun/test446.py
+===================================================================
+--- ../trunk-jpl/test/NightlyRun/test446.py	(revision 27117)
++++ ../trunk-jpl/test/NightlyRun/test446.py	(revision 27118)
+@@ -14,7 +14,7 @@
+ md = setflowequation(md, 'MOLHO', 'all')
+ md.cluster = generic('name', gethostname(), 'np', 3)
+ md.stressbalance.requested_outputs = ['default', 'VxSurface', 'VySurface', 'VxShear', 'VyShear', 'VxBase', 'VyBase']
+-md = SetMLHOBC(md)
++md = SetMOLHOBC(md)
+ md = solve(md, 'Stressbalance')
+ 
+ #Fields and tolerances to track changes
Index: /issm/oecreview/Archive/27032-27229/ISSM-27118-27119.diff
===================================================================
--- /issm/oecreview/Archive/27032-27229/ISSM-27118-27119.diff	(revision 27230)
+++ /issm/oecreview/Archive/27032-27229/ISSM-27118-27119.diff	(revision 27230)
@@ -0,0 +1,172 @@
+Index: ../trunk-jpl/src/m/coordsystems/epsg2proj.py
+===================================================================
+--- ../trunk-jpl/src/m/coordsystems/epsg2proj.py	(revision 27118)
++++ ../trunk-jpl/src/m/coordsystems/epsg2proj.py	(revision 27119)
+@@ -1,8 +1,8 @@
+ import subprocess
+ 
+ 
+-def epsg2proj(epsg): #{{{
+-    """EPSG2PROJ - uses gdalsrsinfo to provide PROJ.4 compatible string 
++def epsg2proj(epsg):  #{{{
++    """EPSG2PROJ - uses gdalsrsinfo to provide PROJ.4 compatible string
+     from EPSG code
+ 
+     Usage:
+@@ -20,7 +20,7 @@
+ 
+     #First, get GDAL version
+     subproc_args = "gdalsrsinfo --version | awk '{print $2}' | cut -d '.' -f1"
+-    subproc = subprocess.Popen(subproc_args, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
++    subproc = subprocess.Popen(subproc_args, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE, universal_newlines=True)
+     outs, errs = subproc.communicate()
+     if errs != '':
+         raise RuntimeError("epsg2proj: call to gdalsrsinfo failed: {}".format(errs))
+@@ -28,13 +28,13 @@
+     version_major=int(outs)
+ 
+     subproc_args = "gdalsrsinfo epsg:{} | command grep PROJ.4 | tr -d '\n' | sed 's/PROJ.4 : //'".format(epsg)
+-    subproc = subprocess.Popen(subproc_args, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
++    subproc = subprocess.Popen(subproc_args, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE, universal_newlines=True)
+     outs, errs = subproc.communicate()
+     if errs != '':
+         raise RuntimeError("epsg2proj: call to gdalsrsinfo failed: {}".format(errs))
+ 
+     if version_major == 1:
+-        r = r[1:-1]
++        outs = outs[1:-1]
+ 
+     return outs
+ #}}}
+Index: ../trunk-jpl/src/m/coordsystems/gdaltransform.py
+===================================================================
+--- ../trunk-jpl/src/m/coordsystems/gdaltransform.py	(revision 27118)
++++ ../trunk-jpl/src/m/coordsystems/gdaltransform.py	(revision 27119)
+@@ -45,7 +45,7 @@
+     file_in = open(filename_in) # Open for reading by subprocess
+ 
+     subproc_args = shlex.split("gdaltransform -s_srs '{}' -t_srs '{}'".format(proj_in, proj_out))
+-    subproc = subprocess.Popen(subproc_args, bufsize=-1, stdin=file_in, stdout=file_out, stderr=subprocess.PIPE, close_fds=True)
++    subproc = subprocess.Popen(subproc_args, bufsize=-1, stdin=file_in, stdout=file_out, stderr=subprocess.PIPE, close_fds=True, universal_newlines=True)
+     outs, errs = subproc.communicate()
+     if errs != '':
+         raise RuntimeError("gdaltransform: call to gdaltransform failed: {}".format(errs))
+Index: ../trunk-jpl/src/m/mesh/planet/gmsh/gmshplanet.py
+===================================================================
+--- ../trunk-jpl/src/m/mesh/planet/gmsh/gmshplanet.py	(revision 27118)
++++ ../trunk-jpl/src/m/mesh/planet/gmsh/gmshplanet.py	(revision 27119)
+@@ -1,7 +1,5 @@
+ import subprocess
+-
+ import numpy as np
+-
+ from MatlabFuncs import *
+ from mesh3dsurface import *
+ from pairoptions import *
+@@ -25,10 +23,9 @@
+ 
+     # Get Gmsh version
+     subproc_args = 'gmsh -info 2>&1 | command grep \'Version\' | sed -e \'s/Version[[:blank:]]*:[[:blank:]]//\' | cut -d \'.\' -f1'
+-    subproc = subprocess.Popen(subproc_args, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
++    subproc = subprocess.Popen(subproc_args, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE, universal_newlines=True)
+     outs, errs = subproc.communicate()
+-
+-    if ((not isinstance(errs,bytes)) & (errs != '')) or (isinstance(errs,bytes) & (errs.decode() != '')):
++    if ((not isinstance(errs, bytes)) & (errs != '')) or (isinstance(errs, bytes) & (errs.decode() != '')):
+         raise Exception('gmshplanet: call to gmsh failed: {}'.format(errs))
+     gmshmajorversion = int(outs)
+     if gmshmajorversion not in [3, 4]:
+@@ -50,11 +47,11 @@
+     # Call gmsh
+     #
+     # NOTE:
+-    # - The default format in Gmsh 3 is "msh2". Rather than conditionally 
+-    # modifying our parsing scheme for Gmsh 4, for now, we simply set the 
++    # - The default format in Gmsh 3 is "msh2". Rather than conditionally
++    # modifying our parsing scheme for Gmsh 4, for now, we simply set the
+     # 'Mesh.MshFileVersion' option.
+-    # - Decreasing the value of the 'Mesh.RandomFactor' option leads to an 
+-    # equal number of nodes and elements being produced under macOS and Linux 
++    # - Decreasing the value of the 'Mesh.RandomFactor' option leads to an
++    # equal number of nodes and elements being produced under macOS and Linux
+     # at certain resolutions using certain meshing algorithms.
+     #
+     fid.write('Mesh.Algorithm = 1;\n') # MeshAdapt
+@@ -125,14 +122,20 @@
+         fid.write('View "background mesh" {\n')
+         for i in range(meshini.numberofelements):
+             fid.write('ST(%g,%g,%g,%g,%g,%g,%g,%g,%g){%g,%g,%g};\n'
+-                % (meshini.x[meshini.elements[i, 0]-1], meshini.y[meshini.elements[i, 0]-1], meshini.z[meshini.elements[i, 0]-1],
+-                meshini.x[meshini.elements[i, 1]-1], meshini.y[meshini.elements[i, 1]-1], meshini.z[meshini.elements[i, 1]-1],
+-                meshini.x[meshini.elements[i, 2]-1], meshini.y[meshini.elements[i, 2]-1], meshini.z[meshini.elements[i, 2]-1],
+-                metric[meshini.elements[i, 0]-1], metric[meshini.elements[i, 1]-1], metric[meshini.elements[i, 2]-1]))
++                      % (meshini.x[meshini.elements[i, 0] - 1], meshini.y[meshini.elements[i, 0] - 1], meshini.z[meshini.elements[i, 0] - 1],
++                         meshini.x[meshini.elements[i, 1] - 1], meshini.y[meshini.elements[i, 1] - 1], meshini.z[meshini.elements[i, 1] - 1],
++                         meshini.x[meshini.elements[i, 2] - 1], meshini.y[meshini.elements[i, 2] - 1], meshini.z[meshini.elements[i, 2] - 1],
++                         metric[meshini.elements[i, 0] - 1], metric[meshini.elements[i, 1] - 1], metric[meshini.elements[i, 2] - 1]))
+         fid.write('};\n')
+         fid.close()
+         #}}}
+ 
++    # Call gmsh
++    #
++    # NOTE: The default format in Gmsh 3 is "msh2". Rather than conditionally
++    #       modifying our parsing scheme for Gmsh 4, for now, we simply set the
++    #       "-format" option.
++    #
+     if options.exist('refine'):
+         subprocess.call('gmsh -2 sphere.geo -bgm sphere.pos', shell=True)
+     else:
+@@ -186,7 +189,7 @@
+     fid.close()
+     #}}}
+ 
+-    # A little technicality here. The mesh is not exactly on the sphere. We 
++    # A little technicality here. The mesh is not exactly on the sphere. We
+     # create lat,long coordiantes, and reproject onto an exact sphere.
+     mesh.r = np.sqrt(mesh.x ** 2 + mesh.y ** 2 + mesh.z ** 2)
+ 
+Index: ../trunk-jpl/src/m/solve/waitonlock.py
+===================================================================
+--- ../trunk-jpl/src/m/solve/waitonlock.py	(revision 27118)
++++ ../trunk-jpl/src/m/solve/waitonlock.py	(revision 27119)
+@@ -10,8 +10,8 @@
+ def waitonlock(md):
+     """WAITONLOCK - wait for a file
+ 
+-    This routine will return when a file named 'lockfilename' is written to 
+-    disk. Also check for outlog file because it might be written several 
++    This routine will return when a file named 'lockfilename' is written to
++    disk. Also check for outlog file because it might be written several
+     seconds after the lock file.
+ 
+     If the time limit given in input is exceeded, return 0.
+@@ -20,7 +20,7 @@
+         flag = waitonlock(md)
+ 
+     TODO:
+-    - Uncomment import of localpfe and check on cluster type once localpfe.py 
++    - Uncomment import of localpfe and check on cluster type once localpfe.py
+     has been translated from localpfe.m.
+     """
+ 
+@@ -78,14 +78,15 @@
+             elapsedtime = etime(time.time(), starttime)
+             sys.stdout.write('\rchecking for job completion (time: {} min {} sec)      '.format(floor(elapsedtime / 60), floor(rem(elapsedtime, 60)))) # TODO: After Python 2 is deprecated, we can change this call to print([...], end='')
+             elapsedtime = elapsedtime / 60 # Converts time from sec to min
+-            subproc = subprocess.Popen(command, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
+-            outs, errs = subproc.communicate() # NOTE: Need to consume output before checking return code
++            subproc = subprocess.Popen(command, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE, universal_newlines=True)
++            outs, errs = subproc.communicate()  # NOTE: Need to consume output before checking return code
+ 
+             # TODO: Debug the following check under Linux (exits after first iteration with errs = "b")
+             # UPDATE: Works in testing under Debian Linux system. Leaving comment for now so that it is easier to backtrace this issue if someone else encounters it.
++            # FIXED: comunicates returns stuff in bytes in Python 3 unless you set "universal_newlines=True"
+             #
+-            #if errs != '':
+-            #    raise Exception('waitonlock: check for existence of files failed: {}'.format(errs))
++            if errs != '':
++               raise Exception('waitonlock: check for existence of files failed: {}'.format(errs))
+             ispresent = not subproc.returncode
+             if ispresent:
+                 print('')
Index: /issm/oecreview/Archive/27032-27229/ISSM-27119-27120.diff
===================================================================
--- /issm/oecreview/Archive/27032-27229/ISSM-27119-27120.diff	(revision 27230)
+++ /issm/oecreview/Archive/27032-27229/ISSM-27119-27120.diff	(revision 27230)
@@ -0,0 +1,180 @@
+Index: ../trunk-jpl/src/m/mesh/bamg.py
+===================================================================
+--- ../trunk-jpl/src/m/mesh/bamg.py	(revision 27119)
++++ ../trunk-jpl/src/m/mesh/bamg.py	(revision 27120)
+@@ -22,94 +22,94 @@
+ 
+     Available options (for more details see ISSM website http://issm.jpl.nasa.gov/):
+ 
+-    - domain :                              followed by an ARGUS file that 
++    - domain :                              followed by an ARGUS file that
+                                             prescribes the domain outline
+-    - holes :                               followed by an ARGUS file that 
++    - holes :                               followed by an ARGUS file that
+                                             prescribes the holes
+-    - subdomains :                          followed by an ARGUS file that 
+-                                            prescribes the list of subdomains 
++    - subdomains :                          followed by an ARGUS file that
++                                            prescribes the list of subdomains
+                                             (that need to be inside domain)
+ 
+-    - hmin :                                minimum edge length (default is 
++    - hmin :                                minimum edge length (default is
+                                             1.0e-100)
+-    - hmax :                                maximum edge length (default is 
++    - hmax :                                maximum edge length (default is
+                                             1.0e100)
+-    - hVertices :                           imposed edge length for each vertex 
++    - hVertices :                           imposed edge length for each vertex
+                                             (geometry or mesh)
+-    - hminVertices :                        minimum edge length for each vertex 
++    - hminVertices :                        minimum edge length for each vertex
+                                             (mesh)
+-    - hmaxVertices :                        maximum edge length for each vertex 
++    - hmaxVertices :                        maximum edge length for each vertex
+                                             (mesh)
+ 
+-    - anisomax :                            maximum ratio between the smallest 
+-                                            and largest edges (default is 
++    - anisomax :                            maximum ratio between the smallest
++                                            and largest edges (default is
+                                             1.0e30)
+-    - coeff :                               coefficient applied to the metric 
+-                                            (2 -> twice as many elements, 
++    - coeff :                               coefficient applied to the metric
++                                            (2 -> twice as many elements,
+                                             default is 1)
+-    - cutoff :                              scalar used to compute the metric 
++    - cutoff :                              scalar used to compute the metric
+                                             when metric type 2 or 3 are applied
+-    - err :                                 error used to generate the metric 
++    - err :                                 error used to generate the metric
+                                             from a field
+     - errg :                                geometric error (default is 0.1)
+-    - field :                               field of the model that will be 
+-                                            used to compute the metric to apply 
+-                                            several fields, use one column per 
++    - field :                               field of the model that will be
++                                            used to compute the metric to apply
++                                            several fields, use one column per
+                                             field
+-    - gradation :                           maximum ratio between two adjacent 
++    - gradation :                           maximum ratio between two adjacent
+                                             edges
+-    - Hessiantype :                         0 -> use double P2 projection 
++    - Hessiantype :                         0 -> use double P2 projection
+                                             (default)
+                                             1 -> use Green formula
+-    - KeepVertices :                        try to keep initial vertices when 
+-                                            adaptation is done on an existing 
++    - KeepVertices :                        try to keep initial vertices when
++                                            adaptation is done on an existing
+                                             mesh (default 1)
+-    - NoBoundaryRefinement :                do not refine boundary, only follow 
+-                                            contour provided (default 0). Allow 
+-                                            subdomain boundary refinement 
++    - NoBoundaryRefinement :                do not refine boundary, only follow
++                                            contour provided (default 0). Allow
++                                            subdomain boundary refinement
+                                             though
+-    - NoBoundaryRefinementAllBoundaries :   do not refine boundary, only follow 
++    - NoBoundaryRefinementAllBoundaries :   do not refine boundary, only follow
+                                             contour provided (default 0)
+-    - maxnbv :                              maximum number of vertices used to 
++    - maxnbv :                              maximum number of vertices used to
+                                             allocate memory (default is 1.0e6)
+-    - maxsubdiv :                           maximum subdivision of exisiting 
++    - maxsubdiv :                           maximum subdivision of exisiting
+                                             elements (default is 10)
+-    - metric :                              matrix (numberofnodes x 3) used as 
++    - metric :                              matrix (numberofnodes x 3) used as
+                                             a metric
+-    - Metrictype :                          1 -> absolute error 
++    - Metrictype :                          1 -> absolute error
+                                             c/(err coeff^2) * Abs(H) (default)
+-                                            2 -> relative error 
+-                                            c / (err coeff^2) * Abs(H) / 
++                                            2 -> relative error
++                                            c / (err coeff^2) * Abs(H) /
+                                             max(s, cutoff * max(s))
+-                                            3 -> rescaled absolute error 
+-                                            c / (err coeff^2) * Abs(H) / 
++                                            3 -> rescaled absolute error
++                                            c / (err coeff^2) * Abs(H) /
+                                             (smax - smin)
+-    - nbjacoby :                            correction used by Hessiantype = 1 
++    - nbjacoby :                            correction used by Hessiantype = 1
+                                             (default is 1)
+-    - nbsmooth :                            number of metric smoothing 
++    - nbsmooth :                            number of metric smoothing
+                                             procedure (default is 3)
+-    - omega :                               relaxation parameter of the 
+-                                            smoothing procedure (default is 
++    - omega :                               relaxation parameter of the
++                                            smoothing procedure (default is
+                                             1.8)
+-    - power :                               power applied to the metric 
++    - power :                               power applied to the metric
+                                             (default is 1)
+-    - splitcorners :                        split triangles which have 3 
+-                                            vertices on the outline (default is 
++    - splitcorners :                        split triangles which have 3
++                                            vertices on the outline (default is
+                                             1)
+     - verbose :                             level of verbosity (default is 1)
+ 
+-    - rifts :                               followed by an ARGUS file that 
++    - rifts :                               followed by an ARGUS file that
+                                             prescribes the rifts
+-    - toltip :                              tolerance to move tip on an 
+-                                            existing point of the domain 
++    - toltip :                              tolerance to move tip on an
++                                            existing point of the domain
+                                             outline
+-    - tracks :                              followed by an ARGUS file that 
+-                                            prescribes the tracks that the mesh 
++    - tracks :                              followed by an ARGUS file that
++                                            prescribes the tracks that the mesh
+                                             will stick to
+-    - RequiredVertices :                    mesh vertices that are required. 
++    - RequiredVertices :                    mesh vertices that are required.
+                                             [x, y, ref]; ref is optional
+-    - tol :                                 if the distance between 2 points of 
+-                                            the domain outline is less than 
++    - tol :                                 if the distance between 2 points of
++                                            the domain outline is less than
+                                             tol, they will be merged
+ 
+     Examples:
+@@ -249,11 +249,10 @@
+             bamg_geometry.Edges = np.vstack((bamg_geometry.Edges, np.vstack((np.arange(count + 1, count + nods + 1), np.hstack((np.arange(count + 2, count + nods + 1), count + 1)), 1. * np.ones((nods)))).T))
+ 
+             # Flag how many edges we have now, that way we know which edges
+-            # belong to the subdomain. Will be used later fo required edges 
++            # belong to the subdomain. Will be used later fo required edges
+             # if NoBoundaryRefinement equals 1.
+             new_edge_length = len(bamg_geometry.Edges)
+-            edges_required = range((edge_length + 1), (new_edge_length + 1)) # NOTE: Upper bound of range is non-inclusive (compare to src/m/mesh/bamg.m)
+-
++            edges_required = np.asarray(range((edge_length + 1), (new_edge_length + 1)))  # NOTE: Upper bound of range is non-inclusive (compare to src/m/mesh/bamg.m)
+             if i: # NOTE: same as `if i > 0` (MATLAB is `if i > 1`)
+                 bamg_geometry.SubDomains = np.vstack((bamg_geometry.SubDomains, [2, count + 1, 1, -subdomain_ref]))
+                 subdomain_ref = subdomain_ref + 1
+@@ -444,7 +443,7 @@
+                                     bamg_geometry.Edges,
+                                     np.array([[count, count + 1, 2]]),
+                                     np.hstack((
+-                                        np.arange(count + 1, count + nods).reshape(-1, ), 
++                                        np.arange(count + 1, count + nods).reshape(-1, ),
+                                         np.arange(count + 2, count + nods + 1).reshape(-1, ),
+                                         (1 + i) * np.ones((nods - 1, 1))
+                                     ))
+@@ -454,7 +453,7 @@
+                 else:
+                     nods = rift[i]['nods'] - 1
+                     bamg_geometry.Vertices = np.vstack((
+-                        bamg_geometry.Vertices, 
++                        bamg_geometry.Vertices,
+                         np.hstack((
+                             rift[i]['x'][:],
+                             rift[i]['y'][:],
Index: /issm/oecreview/Archive/27032-27229/ISSM-27120-27121.diff
===================================================================
--- /issm/oecreview/Archive/27032-27229/ISSM-27120-27121.diff	(revision 27230)
+++ /issm/oecreview/Archive/27032-27229/ISSM-27120-27121.diff	(revision 27230)
@@ -0,0 +1,324 @@
+Index: ../trunk-jpl/src/c/analyses/LevelsetAnalysis.cpp
+===================================================================
+--- ../trunk-jpl/src/c/analyses/LevelsetAnalysis.cpp	(revision 27120)
++++ ../trunk-jpl/src/c/analyses/LevelsetAnalysis.cpp	(revision 27121)
+@@ -113,8 +113,6 @@
+ 		case CalvingTestEnum:
+ 			break;
+ 		case CalvingParameterizationEnum:
+-			iomodel->FetchDataToInput(inputs,elements,"md.calving.stress_threshold_groundedice",CalvingStressThresholdGroundediceEnum);
+-			iomodel->FetchDataToInput(inputs,elements,"md.calving.stress_threshold_floatingice",CalvingStressThresholdFloatingiceEnum);
+ 			iomodel->FetchDataToInput(inputs,elements,"md.geometry.bed",BedEnum);
+ 			break;
+ 
+@@ -220,12 +218,12 @@
+ 			xDelete<IssmDouble>(transparam);
+ 			break;
+ 		case CalvingParameterizationEnum:
++			parameters->AddObject(iomodel->CopyConstantObject("md.calving.use_param",CalvingUseParamEnum));
+ 			parameters->AddObject(iomodel->CopyConstantObject("md.calving.min_thickness",CalvingMinthicknessEnum));
+-			parameters->AddObject(iomodel->CopyConstantObject("md.calving.use_param",CalvingUseParamEnum));
+-			parameters->AddObject(iomodel->CopyConstantObject("md.calving.scale_theta",CalvingScaleThetaEnum));
+-			parameters->AddObject(iomodel->CopyConstantObject("md.calving.amp_alpha",CalvingAmpAlphaEnum));
+-			parameters->AddObject(iomodel->CopyConstantObject("md.calving.midp",CalvingMidpointEnum));
+-			parameters->AddObject(iomodel->CopyConstantObject("md.calving.nonlinearlaw",CalvingNonlinearLawEnum));
++			parameters->AddObject(iomodel->CopyConstantObject("md.calving.theta",CalvingThetaEnum));
++			parameters->AddObject(iomodel->CopyConstantObject("md.calving.alpha",CalvingAlphaEnum));
++			parameters->AddObject(iomodel->CopyConstantObject("md.calving.xoffset",CalvingXoffsetEnum));
++			parameters->AddObject(iomodel->CopyConstantObject("md.calving.yoffset",CalvingYoffsetEnum));
+ 			break;
+ 		default:
+ 			_error_("Calving law "<<EnumToStringx(calvinglaw)<<" not supported yet");
+Index: ../trunk-jpl/src/m/classes/calvingparameterization.m
+===================================================================
+--- ../trunk-jpl/src/m/classes/calvingparameterization.m	(revision 27120)
++++ ../trunk-jpl/src/m/classes/calvingparameterization.m	(revision 27121)
+@@ -5,14 +5,12 @@
+ 
+ classdef calvingparameterization
+ 	properties (SetAccess=public) 
+-		stress_threshold_groundedice = 0.;
+-		stress_threshold_floatingice = 0.;
+ 		min_thickness = 0.;
+ 		use_param = 0;
+-		scale_theta = 0.;
+-		amp_alpha = 0;
+-		midp = 0;
+-		nonlinearlaw = 0;
++		theta = 0.;
++		alpha = 0;
++		xoffset = 0;
++		yoffset = 0;
+ 	end
+ 	methods
+ 		function self = calvingparameterization(varargin) % {{{
+@@ -36,63 +34,52 @@
+ 		function self = extrude(self,md) % {{{
+ 		end % }}}
+ 		function self = setdefaultparameters(self) % {{{
+-
+-			%Default sigma max
+-			self.stress_threshold_groundedice = 1e6;
+-			self.stress_threshold_floatingice = 150e3;
+-
+ 			%For now we turn this off by setting the threshold to 0
+ 			self.min_thickness = 0.;
+ 
+ 			%parameters for the spatial temporal seperation 
+-			%The coefficient follows: \gamma = \frac{\theta}{2}(1-\tanh(\frac{b+p}{\alpha}))+(1-\theta)
+-			% 0 - Use bed elevation, 1 - use heigh above floatation
++			%The coefficient follows: gamma= f(x)
++			% 0 - f(x) = y_{o} + \alpha (x+x_{o})
++			% 1 - f(x)=y_{o}-\frac{\theta}{2}\tanh(\alpha(x+x_{o}))
+ 			self.use_param = 0;
+-			% between 0 and 1, larger theta means more reduction for shallower ice
+-			self.scale_theta = 0;
+-			% alpha in the denominator
+-			self.amp_alpha = 0;
+-			% mid-point of this step function
+-			self.midp = 0;
+-			% if use a nonlinear calving law
+-			self.nonlinearlaw = 0;
++			% the amplifier
++			self.theta = 0;
++			% the slope alpha 
++			self.alpha = 0;
++			% offset in x-axis 
++			self.xoffset = 0;
++			% offset in y-axis 
++			self.yoffset = 0;
+ 		end % }}}
+ 		function md = checkconsistency(self,md,solution,analyses) % {{{
+ 			%Early return
+ 			if (~strcmp(solution,'TransientSolution') | md.transient.ismovingfront==0), return; end
+ 
+-			md = checkfield(md,'fieldname','calving.stress_threshold_groundedice','>',0,'nan',1,'Inf',1);
+-			md = checkfield(md,'fieldname','calving.stress_threshold_floatingice','>',0,'nan',1,'Inf',1);
+ 			md = checkfield(md,'fieldname','calving.min_thickness','>=',0,'NaN',1,'Inf',1,'numel',1);
+-			md = checkfield(md,'fieldname','calving.use_param','values',[-1, 0, 1, 2, 3, 4]);
+-			md = checkfield(md,'fieldname','calving.scale_theta','NaN',1,'Inf',1,'numel',1);
+-			md = checkfield(md,'fieldname','calving.amp_alpha','<>',0,'NaN',1,'Inf',1,'numel',1);
+-			md = checkfield(md,'fieldname','calving.midp','NaN',1,'Inf',1,'numel',1);
+-			md = checkfield(md,'fieldname','calving.nonlinearlaw','values',[0, 1]);
++			md = checkfield(md,'fieldname','calving.use_param','values',[-1, 0, 1]);
++			md = checkfield(md,'fieldname','calving.theta','NaN',1,'Inf',1,'numel',1);
++			md = checkfield(md,'fieldname','calving.alpha','NaN',1,'Inf',1,'numel',1);
++			md = checkfield(md,'fieldname','calving.xoffset','NaN',1,'Inf',1,'numel',1);
++			md = checkfield(md,'fieldname','calving.yoffset','NaN',1,'Inf',1,'numel',1);
+ 		end % }}}
+ 		function disp(self) % {{{
+ 			disp(sprintf('   Calving test parameters:'));
+-			fielddisplay(self,'stress_threshold_groundedice','sigma_max applied to grounded ice only [Pa]');
+-			fielddisplay(self,'stress_threshold_floatingice','sigma_max applied to floating ice only [Pa]');
+ 			fielddisplay(self,'min_thickness','minimum thickness below which no ice is allowed [m]');
+-			fielddisplay(self,'use_param','0 - Use bed elevation, 1 - use heigh above floatation, 2 - use ice thickness');
+-			fielddisplay(self,'scale_theta','larger than 0, larger theta means more reduction for shallower ice');
+-			fielddisplay(self,'amp_alpha','alpha');
+-			fielddisplay(self,'midp','mid-point');
+-			fielddisplay(self,'nonlinearlaw','use a nonlinear law');
+-
++			fielddisplay(self,'use_param','-1 - just use frontal ablation rate, 0 - f(x) = y_{o} + \alpha (x+x_{o}), 1 - f(x)=y_{o}-\frac{\theta}{2}\tanh(\alpha(x+x_{o}))');
++			fielddisplay(self,'theta','the amplifier');
++			fielddisplay(self,'alpha','the slope');
++			fielddisplay(self,'xoffset','offset in x-axis');
++			fielddisplay(self,'yoffset','offset in y-axis');
+ 		end % }}}
+ 		function marshall(self,prefix,md,fid) % {{{
+ 			yts=md.constants.yts;
+ 			WriteData(fid,prefix,'name','md.calving.law','data',9,'format','Integer');
+-			WriteData(fid,prefix,'object',self,'fieldname','stress_threshold_groundedice','format','DoubleMat','mattype',1);
+-			WriteData(fid,prefix,'object',self,'fieldname','stress_threshold_floatingice','format','DoubleMat','mattype',1);
+ 			WriteData(fid,prefix,'object',self,'fieldname','min_thickness','format','Double');
+ 			WriteData(fid,prefix,'object',self,'fieldname','use_param','format','Integer');
+-			WriteData(fid,prefix,'object',self,'fieldname','scale_theta','format','Double');
+-			WriteData(fid,prefix,'object',self,'fieldname','amp_alpha','format','Double');
+-			WriteData(fid,prefix,'object',self,'fieldname','midp','format','Double');
+-			WriteData(fid,prefix,'object',self,'fieldname','nonlinearlaw','format','Integer');
++			WriteData(fid,prefix,'object',self,'fieldname','theta','format','Double');
++			WriteData(fid,prefix,'object',self,'fieldname','alpha','format','Double');
++			WriteData(fid,prefix,'object',self,'fieldname','xoffset','format','Double');
++			WriteData(fid,prefix,'object',self,'fieldname','yoffset','format','Double');
+ 		end % }}}
+ 	end
+ end
+Index: ../trunk-jpl/src/c/classes/Elements/Tria.cpp
+===================================================================
+--- ../trunk-jpl/src/c/classes/Elements/Tria.cpp	(revision 27120)
++++ ../trunk-jpl/src/c/classes/Elements/Tria.cpp	(revision 27121)
+@@ -375,6 +375,7 @@
+ 	IssmDouble  dphidx, dphidy, dphi;
+ 	IssmDouble  time;
+ 	IssmDouble  coeff, indrate;
++	IssmDouble  bed, bedrate = 1.0;
+ 
+ 	/*Retrieve all inputs and parameters we will need*/
+ 	parameters->FindParam(&time,TimeEnum);
+@@ -381,6 +382,7 @@
+ 	parameters->FindParam(&coeff,CalvingTestSpeedfactorEnum,time);
+ 	parameters->FindParam(&indrate,CalvingTestIndependentRateEnum,time);
+ 
++	Input *bs_input = this->GetInput(BedEnum);_assert_(bs_input);
+ 	Input* vx_input = this->GetInput(VxEnum); _assert_(vx_input);
+ 	Input* vy_input = this->GetInput(VyEnum); _assert_(vy_input);
+ 	Input *lsf_slopex_input  = this->GetInput(LevelsetfunctionSlopeXEnum); _assert_(lsf_slopex_input);
+@@ -398,11 +400,14 @@
+ 		lsf_slopex_input->GetInputValue(&dphidx,&gauss);
+       lsf_slopey_input->GetInputValue(&dphidy,&gauss);
+ 
++		bs_input->GetInputValue(&bed,&gauss);
++		bedrate = (bed>0)?0.0:1.0;
++
+       vel=sqrt(vx*vx + vy*vy) + 1e-14;
+       dphi=sqrt(dphidx*dphidx+dphidy*dphidy)+ 1e-14;
+ 
+-		calvingratex[iv]= coeff*vx + indrate*dphidx/dphi;
+-		calvingratey[iv]= coeff*vy + indrate*dphidy/dphi;
++		calvingratex[iv]= coeff*vx + bedrate*indrate*dphidx/dphi;
++		calvingratey[iv]= coeff*vy + bedrate*indrate*dphidy/dphi;
+ 		calvingrate[iv] = sqrt(calvingratex[iv]*calvingratex[iv] + calvingratey[iv]*calvingratey[iv]);
+ 	}
+ 
+@@ -834,12 +839,11 @@
+ 	IssmDouble  calvingrate[NUMVERTICES];
+ 	IssmDouble  lambda1,lambda2,ex,ey,vx,vy,vel;
+ 	IssmDouble  sigma_vm[NUMVERTICES];
+-	IssmDouble  B,sigma_max,sigma_max_floating,sigma_max_grounded,n;
++	IssmDouble  B, n;
+ 	IssmDouble  epse_2,groundedice,bed,sealevel;
+-	IssmDouble  arate, rho_ice, rho_water, thickness, paramX, Hab;
+-	int			use_parameter=0;
+-	int			nonlinear_law=0;
+-	IssmDouble  theta, alpha, midp, gamma;
++	IssmDouble  arate, rho_ice, rho_water, thickness;
++	int			use_parameter=-1;
++	IssmDouble  gamma, theta, alpha, xoffset, yoffset;
+ 
+ 	/* Get node coordinates and dof list: */
+ 	::GetVerticesCoordinates(&xyz_list[0][0],vertices,NUMVERTICES);
+@@ -851,8 +855,6 @@
+ 	Input *gr_input      = this->GetInput(MaskOceanLevelsetEnum);                 _assert_(gr_input);
+ 	Input *bs_input      = this->GetInput(BedEnum);                               _assert_(bs_input);
+ 	Input *H_input       = this->GetInput(ThicknessEnum);                         _assert_(H_input);
+-	Input *smax_fl_input = this->GetInput(CalvingStressThresholdFloatingiceEnum); _assert_(smax_fl_input);
+-	Input *smax_gr_input = this->GetInput(CalvingStressThresholdGroundediceEnum); _assert_(smax_gr_input);
+ 	Input *n_input       = this->GetInput(MaterialsRheologyNEnum);                _assert_(n_input);
+ 	Input *sl_input      = this->GetInput(SealevelEnum);                          _assert_(sl_input);
+ 	Input *arate_input   = this->GetInput(CalvingAblationrateEnum);               _assert_(arate_input);
+@@ -863,10 +865,10 @@
+ 
+ 	/* Use which parameter  */
+ 	this->FindParam(&use_parameter, CalvingUseParamEnum);
+-	this->FindParam(&theta, CalvingScaleThetaEnum);
+-	this->FindParam(&alpha, CalvingAmpAlphaEnum);
+-	this->FindParam(&midp, CalvingMidpointEnum);
+-	this->FindParam(&nonlinear_law, CalvingNonlinearLawEnum);
++	this->FindParam(&theta, CalvingThetaEnum);
++	this->FindParam(&alpha, CalvingAlphaEnum);
++	this->FindParam(&xoffset, CalvingXoffsetEnum);
++	this->FindParam(&yoffset, CalvingYoffsetEnum);
+ 
+ 	/* Start looping on the number of vertices: */
+ 	GaussTria* gauss=new GaussTria();
+@@ -880,9 +882,6 @@
+ 		vy_input->GetInputValue(&vy,gauss);
+ 		gr_input->GetInputValue(&groundedice,gauss);
+ 		bs_input->GetInputValue(&bed,gauss);
+-		H_input->GetInputValue(&thickness,gauss);
+-		smax_fl_input->GetInputValue(&sigma_max_floating,gauss);
+-		smax_gr_input->GetInputValue(&sigma_max_grounded,gauss);
+ 		vel=sqrt(vx*vx+vy*vy)+1.e-14;
+ 		sl_input->GetInputValue(&sealevel,gauss);
+ 		arate_input->GetInputValue(&arate,gauss);
+@@ -903,32 +902,18 @@
+ 		epse_2    = 1./2. *(lambda1*lambda1 + lambda2*lambda2);
+ 		sigma_vm[iv]  = sqrt(3.) * B * pow(epse_2,1./(2.*n));
+ 
+-		/*Tensile stress threshold*/
+-		if(groundedice<0)
+-		 sigma_max = sigma_max_floating;
+-		else
+-		 sigma_max = sigma_max_grounded;
+-
+ 		switch (use_parameter) { 
+ 			case 0:
+-				/* bed elevation */
+-				paramX = bed;
++				/* 0 Linear: f(x) = y_{o} + \alpha (x+x_{o}) */
++				gamma = yoffset = alpha * (bed+xoffset);
+ 				break;
+ 			case 1:
+-				/* Height above floatation */
+-				if (bed>sealevel)	paramX = 0.0;
+-				else paramX = thickness - (rho_water/rho_ice) * (sealevel-bed);
++				/* 1 tanh: f(x)=y_{o}-\frac{\theta}{2}\tanh(\alpha(x+x_{o})) */
++				gamma = yoffset -  0.5*theta*tanh(alpha*(bed+xoffset));
+ 				break;
+-			case 2:
+-				/* Thicknese */
+-				paramX = thickness;
+-				break;
+-			case 4:
+-				/* bed elevation+linear curve fitting */
+-				paramX = bed;
+-				break;
+ 			case -1:
+-				/* use nothing, just the arate*/
++				/* nothing, just the arate*/
++				gamma = 1;
+ 				break;
+ 			default:
+ 				_error_("The parameter is not supported yet!");
+@@ -935,31 +920,11 @@
+ 		}
+ 
+ 		/* Compute the hyperbolic tangent function */
+-		if ((use_parameter>-0.5) & (use_parameter<3)) {
+-			gamma = 0.5*theta*(1.0-tanh((paramX+midp)/alpha))+(1.0-theta);
+-			if (gamma<0.0) gamma =0.0;
+-		}
+-		else if (use_parameter>=3) {
+-			gamma = alpha*paramX + theta;
+-			if (gamma > 1.0) gamma = 1.0;
+-			if (gamma < 0.0) gamma = 0.0;
+-		}
+-		else gamma = 1;
++		if (gamma > 1.0) gamma = 1.0;
++		if (gamma < 0.0) gamma = 0.0;
+ 
+ 		/*-------------------------------------------*/
+-		if (nonlinear_law) {
+-			/*This von Mises type has too strong positive feedback with vel included
+-			 * calvingrate[iv] = (arate+sigma_vm[iv]*vel/sigma_max)*gamma;
+-			 */
+-			Hab = thickness - (rho_water/rho_ice) * (sealevel-bed);
+-			if (Hab < 0.) Hab = 0.;
+-			if (bed > sealevel) Hab = 0.;
+-
+-			calvingrate[iv] = (arate+Hab/sigma_max)*gamma;
+-		}
+-		else {
+-			calvingrate[iv] = arate*gamma;
+-		}
++		calvingrate[iv] = arate*gamma;
+ 	}
+ 
+ 	/*Add input*/
+Index: ../trunk-jpl/src/c/shared/Enum/EnumDefinitions.h
+===================================================================
+--- ../trunk-jpl/src/c/shared/Enum/EnumDefinitions.h	(revision 27120)
++++ ../trunk-jpl/src/c/shared/Enum/EnumDefinitions.h	(revision 27121)
+@@ -108,10 +108,10 @@
+ 	CalvingTestSpeedfactorEnum,
+ 	CalvingTestIndependentRateEnum,
+ 	CalvingUseParamEnum,
+-	CalvingScaleThetaEnum,
+-	CalvingAmpAlphaEnum,
+-	CalvingMidpointEnum,
+-	CalvingNonlinearLawEnum,
++	CalvingThetaEnum,
++	CalvingAlphaEnum,
++	CalvingXoffsetEnum,
++	CalvingYoffsetEnum,
+ 	ConfigurationTypeEnum,
+ 	ConstantsGEnum,
+ 	ConstantsNewtonGravityEnum,
Index: /issm/oecreview/Archive/27032-27229/ISSM-27121-27122.diff
===================================================================
--- /issm/oecreview/Archive/27032-27229/ISSM-27121-27122.diff	(revision 27230)
+++ /issm/oecreview/Archive/27032-27229/ISSM-27121-27122.diff	(revision 27230)
@@ -0,0 +1,76 @@
+Index: ../trunk-jpl/src/c/shared/Enum/Enum.vim
+===================================================================
+--- ../trunk-jpl/src/c/shared/Enum/Enum.vim	(revision 27121)
++++ ../trunk-jpl/src/c/shared/Enum/Enum.vim	(revision 27122)
+@@ -114,10 +114,10 @@
+ syn keyword cConstant CalvingTestSpeedfactorEnum
+ syn keyword cConstant CalvingTestIndependentRateEnum
+ syn keyword cConstant CalvingUseParamEnum
+-syn keyword cConstant CalvingScaleThetaEnum
+-syn keyword cConstant CalvingAmpAlphaEnum
+-syn keyword cConstant CalvingMidpointEnum
+-syn keyword cConstant CalvingNonlinearLawEnum
++syn keyword cConstant CalvingThetaEnum
++syn keyword cConstant CalvingAlphaEnum
++syn keyword cConstant CalvingXoffsetEnum
++syn keyword cConstant CalvingYoffsetEnum
+ syn keyword cConstant ConfigurationTypeEnum
+ syn keyword cConstant ConstantsGEnum
+ syn keyword cConstant ConstantsNewtonGravityEnum
+Index: ../trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp
+===================================================================
+--- ../trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp	(revision 27121)
++++ ../trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp	(revision 27122)
+@@ -116,10 +116,10 @@
+ 		case CalvingTestSpeedfactorEnum : return "CalvingTestSpeedfactor";
+ 		case CalvingTestIndependentRateEnum : return "CalvingTestIndependentRate";
+ 		case CalvingUseParamEnum : return "CalvingUseParam";
+-		case CalvingScaleThetaEnum : return "CalvingScaleTheta";
+-		case CalvingAmpAlphaEnum : return "CalvingAmpAlpha";
+-		case CalvingMidpointEnum : return "CalvingMidpoint";
+-		case CalvingNonlinearLawEnum : return "CalvingNonlinearLaw";
++		case CalvingThetaEnum : return "CalvingTheta";
++		case CalvingAlphaEnum : return "CalvingAlpha";
++		case CalvingXoffsetEnum : return "CalvingXoffset";
++		case CalvingYoffsetEnum : return "CalvingYoffset";
+ 		case ConfigurationTypeEnum : return "ConfigurationType";
+ 		case ConstantsGEnum : return "ConstantsG";
+ 		case ConstantsNewtonGravityEnum : return "ConstantsNewtonGravity";
+Index: ../trunk-jpl/src/c/shared/Enum/Enumjl.vim
+===================================================================
+--- ../trunk-jpl/src/c/shared/Enum/Enumjl.vim	(revision 27121)
++++ ../trunk-jpl/src/c/shared/Enum/Enumjl.vim	(revision 27122)
+@@ -107,10 +107,10 @@
+ syn keyword juliaConstC CalvingTestSpeedfactorEnum
+ syn keyword juliaConstC CalvingTestIndependentRateEnum
+ syn keyword juliaConstC CalvingUseParamEnum
+-syn keyword juliaConstC CalvingScaleThetaEnum
+-syn keyword juliaConstC CalvingAmpAlphaEnum
+-syn keyword juliaConstC CalvingMidpointEnum
+-syn keyword juliaConstC CalvingNonlinearLawEnum
++syn keyword juliaConstC CalvingThetaEnum
++syn keyword juliaConstC CalvingAlphaEnum
++syn keyword juliaConstC CalvingXoffsetEnum
++syn keyword juliaConstC CalvingYoffsetEnum
+ syn keyword juliaConstC ConfigurationTypeEnum
+ syn keyword juliaConstC ConstantsGEnum
+ syn keyword juliaConstC ConstantsNewtonGravityEnum
+Index: ../trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp
+===================================================================
+--- ../trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp	(revision 27121)
++++ ../trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp	(revision 27122)
+@@ -116,10 +116,10 @@
+ 	      else if (strcmp(name,"CalvingTestSpeedfactor")==0) return CalvingTestSpeedfactorEnum;
+ 	      else if (strcmp(name,"CalvingTestIndependentRate")==0) return CalvingTestIndependentRateEnum;
+ 	      else if (strcmp(name,"CalvingUseParam")==0) return CalvingUseParamEnum;
+-	      else if (strcmp(name,"CalvingScaleTheta")==0) return CalvingScaleThetaEnum;
+-	      else if (strcmp(name,"CalvingAmpAlpha")==0) return CalvingAmpAlphaEnum;
+-	      else if (strcmp(name,"CalvingMidpoint")==0) return CalvingMidpointEnum;
+-	      else if (strcmp(name,"CalvingNonlinearLaw")==0) return CalvingNonlinearLawEnum;
++	      else if (strcmp(name,"CalvingTheta")==0) return CalvingThetaEnum;
++	      else if (strcmp(name,"CalvingAlpha")==0) return CalvingAlphaEnum;
++	      else if (strcmp(name,"CalvingXoffset")==0) return CalvingXoffsetEnum;
++	      else if (strcmp(name,"CalvingYoffset")==0) return CalvingYoffsetEnum;
+ 	      else if (strcmp(name,"ConfigurationType")==0) return ConfigurationTypeEnum;
+ 	      else if (strcmp(name,"ConstantsG")==0) return ConstantsGEnum;
+ 	      else if (strcmp(name,"ConstantsNewtonGravity")==0) return ConstantsNewtonGravityEnum;
Index: /issm/oecreview/Archive/27032-27229/ISSM-27122-27123.diff
===================================================================
--- /issm/oecreview/Archive/27032-27229/ISSM-27122-27123.diff	(revision 27230)
+++ /issm/oecreview/Archive/27032-27229/ISSM-27122-27123.diff	(revision 27230)
@@ -0,0 +1,16 @@
+Index: ../trunk-jpl/src/c/classes/Elements/Tria.cpp
+===================================================================
+--- ../trunk-jpl/src/c/classes/Elements/Tria.cpp	(revision 27122)
++++ ../trunk-jpl/src/c/classes/Elements/Tria.cpp	(revision 27123)
+@@ -919,9 +919,10 @@
+ 				_error_("The parameter is not supported yet!");
+ 		}
+ 
+-		/* Compute the hyperbolic tangent function */
++		/* set upper and lower bounds */
+ 		if (gamma > 1.0) gamma = 1.0;
+ 		if (gamma < 0.0) gamma = 0.0;
++		if (bed >= sealevel) gamma = 0.0;
+ 
+ 		/*-------------------------------------------*/
+ 		calvingrate[iv] = arate*gamma;
Index: /issm/oecreview/Archive/27032-27229/ISSM-27127-27128.diff
===================================================================
--- /issm/oecreview/Archive/27032-27229/ISSM-27127-27128.diff	(revision 27230)
+++ /issm/oecreview/Archive/27032-27229/ISSM-27127-27128.diff	(revision 27230)
@@ -0,0 +1,312 @@
+Index: ../trunk-jpl/src/c/classes/Inputs/Inputs.cpp
+===================================================================
+--- ../trunk-jpl/src/c/classes/Inputs/Inputs.cpp	(revision 27127)
++++ ../trunk-jpl/src/c/classes/Inputs/Inputs.cpp	(revision 27128)
+@@ -23,6 +23,7 @@
+ #include "./ControlInput.h"
+ #include "./DatasetInput.h"
+ #include "./ArrayInput.h"
++#include "./IntArrayInput.h"
+ using namespace std;
+ /*}}}*/
+ 
+@@ -570,6 +571,23 @@
+ 	ArrayInput* input = xDynamicCast<ArrayInput*>(this->inputs[id]);
+ 	input->GetArrayPtr(row,pvalues,pN);
+ }/*}}}*/
++void Inputs::GetIntArrayPtr(int enum_in,int row,int** pvalues,int* pN){/*{{{*/
++
++	/*Get input id*/
++	int id = EnumToIndex(enum_in);
++
++	/*Create it if necessary*/
++	if(this->inputs[id]){
++		if(this->inputs[id]->ObjectEnum()!=IntArrayInputEnum) _error_(EnumToStringx(this->inputs[id]->ObjectEnum())<<" cannot return an int array");
++	}
++	else{
++		_error_("Input "<<EnumToStringx(enum_in)<<" not found");
++	}
++
++	/*Set input*/
++	IntArrayInput* input = xDynamicCast<IntArrayInput*>(this->inputs[id]);
++	input->GetArrayPtr(row,pvalues,pN);
++}/*}}}*/
+ void Inputs::GetArray(int enum_in,int row,IssmDouble** pvalues,int* pN){/*{{{*/
+ 
+ 	/*Get input id*/
+@@ -587,6 +605,23 @@
+ 	ArrayInput* input = xDynamicCast<ArrayInput*>(this->inputs[id]);
+ 	input->GetArray(row,pvalues,pN);
+ }/*}}}*/
++void Inputs::GetIntArray(int enum_in,int row,int** pvalues,int* pN){/*{{{*/
++
++	/*Get input id*/
++	int id = EnumToIndex(enum_in);
++
++	/*Create it if necessary*/
++	if(this->inputs[id]){
++		if(this->inputs[id]->ObjectEnum()!=IntArrayInputEnum) _error_(EnumToStringx(this->inputs[id]->ObjectEnum())<<" cannot return an int array");
++	}
++	else{
++		_error_("Input "<<EnumToStringx(enum_in)<<" not found");
++	}
++
++	/*Set input*/
++	IntArrayInput* input = xDynamicCast<IntArrayInput*>(this->inputs[id]);
++	input->GetArray(row,pvalues,pN);
++}/*}}}*/
+ void Inputs::GetInputValue(bool* pvalue,int enum_in,int index){/*{{{*/
+ 
+ 	/*Get input id*/
+@@ -734,6 +769,32 @@
+ 	ArrayInput* input = xDynamicCast<ArrayInput*>(this->inputs[id]);
+ 	input->SetInput(row,numlayers,values);
+ }/*}}}*/
++void Inputs::SetIntArrayInput(int enum_in,int row,int* values,int numlayers){/*{{{*/
++
++	bool recreate = false;
++
++	/*Get input id*/
++	int id = EnumToIndex(enum_in);
++
++	/*Create it if necessary*/
++	if(this->inputs[id]){
++		if(this->inputs[id]->ObjectEnum()!=IntArrayInputEnum){
++			delete this->inputs[id];
++			recreate = true;
++		}
++	}
++	else{
++		recreate = true;
++	}
++
++	if(recreate){
++		this->inputs[id] = new IntArrayInput(this->numberofelements_local);
++	}
++
++	/*Set input*/
++	IntArrayInput* input = xDynamicCast<IntArrayInput*>(this->inputs[id]);
++	input->SetInput(row,numlayers,values);
++}/*}}}*/
+ TransientInput* Inputs::SetDatasetTransientInput(int enum_in,int dataset_id,IssmDouble* times,int numtimes){/*{{{*/
+ 
+ 	bool recreate = false;
+Index: ../trunk-jpl/src/c/classes/Inputs/Inputs.h
+===================================================================
+--- ../trunk-jpl/src/c/classes/Inputs/Inputs.h	(revision 27127)
++++ ../trunk-jpl/src/c/classes/Inputs/Inputs.h	(revision 27128)
+@@ -10,6 +10,7 @@
+ class ElementInput;
+ class DatasetInput;
+ class ArrayInput;
++class IntArrayInput;
+ class ControlInput;
+ class Parameters;
+ #include "../../shared/shared.h"
+@@ -55,7 +56,9 @@
+ 		bool     Exist(int enum_type);
+ 		void     GetInputsInterpolations(int* pnuminputs,int** pinterpolations,int** penum);
+ 		void             GetArray(int enum_in,int row,IssmDouble** pvalues,int* pN);
++		void             GetIntArray(int enum_in,int row,int** pvalues,int* pN);
+ 		void             GetArrayPtr(int enum_in,int row,IssmDouble** pvalues,int* pN);
++		void             GetIntArrayPtr(int enum_in,int row,int** pvalues,int* pN);
+ 		SegInput*       GetSegInput(int enum_type);
+ 		TriaInput*      GetTriaInput(int enum_type);
+ 		TriaInput*      GetTriaInput(int enum_type,IssmDouble time);
+@@ -81,6 +84,7 @@
+ 		void  SetTransientControlInput(int enum_in,int control_id,IssmDouble* times,int numtimes);
+ 		TransientInput* SetDatasetTransientInput(int enum_in,int id,IssmDouble* times,int numtimes);
+ 		void  SetArrayInput(int enum_in,int row,IssmDouble* layers,int numlayers);
++		void  SetIntArrayInput(int enum_in,int row,int* layers,int numlayers);
+ 		void  SetTriaControlInputGradient(int enum_in,int interpolation,int numindices,int* indices,IssmDouble* values);
+ 		void  SetTriaControlInputGradient(int enum_in,int interpolation,int numindices,int* indices,IssmDouble* values,int n);
+ 		void  SetTriaDatasetInput(int enum_in,int id,int interpolation,int numindices,int* indices,IssmDouble* values);
+Index: ../trunk-jpl/src/c/classes/Inputs/IntArrayInput.cpp
+===================================================================
+--- ../trunk-jpl/src/c/classes/Inputs/IntArrayInput.cpp	(nonexistent)
++++ ../trunk-jpl/src/c/classes/Inputs/IntArrayInput.cpp	(revision 27128)
+@@ -0,0 +1,145 @@
++/*!\file IntArrayInput.c
++ * \brief: implementation of the IntArrayInput object
++ */
++
++#ifdef HAVE_CONFIG_H
++	#include <config.h>
++#else
++#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
++#endif
++
++#include "../classes.h"
++#include "../../shared/shared.h"
++#include "./IntArrayInput.h"
++
++/*IntArrayInput constructors and destructor*/
++IntArrayInput::IntArrayInput(void){/*{{{*/
++
++	this->numberofelements_local = -1;
++	this->N                      = NULL;
++	this->values                 = NULL;
++
++}/*}}}*/
++IntArrayInput::IntArrayInput(int nbe_in){/*{{{*/
++
++	_assert_(nbe_in>0);
++	_assert_(nbe_in<1e11);
++	this->numberofelements_local = nbe_in;
++	this->N                      = xNewZeroInit<int>(this->numberofelements_local);
++	this->values                 = xNewZeroInit<int*>(this->numberofelements_local);
++
++}/*}}}*/
++IntArrayInput::~IntArrayInput(){/*{{{*/
++	if(this->values){
++		for(int i=0;i<this->numberofelements_local;i++) if(this->values[i]) xDelete<int>(this->values[i]);
++		xDelete<int>(this->values);
++	}
++	if(this->N) xDelete<int>(this->N);
++}
++/*}}}*/
++
++/*Object virtual functions definitions:*/
++Input* IntArrayInput::copy() {/*{{{*/
++
++	IntArrayInput* output = new IntArrayInput(this->numberofelements_local);
++
++	output->N = xNew<int>(this->numberofelements_local);
++	xMemCpy<int>(output->N,this->N,this->numberofelements_local);
++
++	output->values = xNew<int*>(this->numberofelements_local);
++	for(int i=0;i<this->numberofelements_local;i++){
++		if(this->values[i]){
++			_assert_(this->N[i]>0);
++			output->values[i] = xNew<int>(this->N[i]);
++			xMemCpy<int>(output->values[i],this->values[i],this->N[i]);
++		}
++		else{
++			output->values[i] = NULL;
++		}
++	}
++
++	return output;
++}
++/*}}}*/
++void IntArrayInput::DeepEcho(void){/*{{{*/
++	_printf_("IntArrayInput Echo:\n");
++	///_printf_("   Size:          "<<N<<"\n");
++	//printarray(this->values,this->M,this->N);
++	//_printf_(setw(15)<<"   IntArrayInput "<<setw(25)<<left<<EnumToStringx(this->enum_type)<<" "<<(value?"true":"false") << "\n");
++}
++/*}}}*/
++void IntArrayInput::Echo(void){/*{{{*/
++	this->DeepEcho();
++}
++/*}}}*/
++int  IntArrayInput::Id(void){/*{{{*/
++	return -1;
++}/*}}}*/
++void IntArrayInput::Marshall(MarshallHandle* marshallhandle){ /*{{{*/
++
++	int object_enum = IntArrayInputEnum;
++	marshallhandle->call(object_enum);
++	marshallhandle->call(this->numberofelements_local);
++	if(this->numberofelements_local){
++		marshallhandle->call(this->N,this->numberofelements_local);
++		for(int i=0;i<this->numberofelements_local;i++){
++			if(this->values[i]){
++				marshallhandle->call(this->values[i],this->N[i]);
++			}
++		}
++	}
++	else{
++		this->N      = NULL;
++		this->values = NULL;
++	}
++
++}
++/*}}}*/
++int  IntArrayInput::ObjectEnum(void){/*{{{*/
++	return IntArrayInputEnum;
++}
++/*}}}*/
++
++/*IntArrayInput management*/
++void IntArrayInput::SetInput(int row,int numindices,int* values_in){/*{{{*/
++
++	_assert_(this);
++	_assert_(row>=0 && row<this->numberofelements_local);
++
++	if(this->N[row] != numindices){
++		if(this->values[row]) xDelete<int>(this->values[row]);
++		this->values[row] = xNew<int>(numindices);
++	}
++
++	int *el_values = this->values[row];
++	for(int i=0;i<numindices;i++) el_values[i] = values_in[i];
++
++	this->N[row] = numindices;
++}
++/*}}}*/
++void IntArrayInput::GetArray(int row,int** pvalues,int* pN){/*{{{*/
++
++	_assert_(this);
++	_assert_(row>=0 && row<this->numberofelements_local);
++	if(pvalues){
++		int* outvalues = xNew<int>(this->N[row]);
++		xMemCpy<int>(outvalues,this->values[row],this->N[row]);
++		*pvalues = outvalues;
++	}
++	if(pN){
++		*pN = this->N[row];
++	}
++}
++/*}}}*/
++void IntArrayInput::GetArrayPtr(int row,int** pvalues,int* pN){/*{{{*/
++
++	_assert_(this);
++	_assert_(row>=0 && row<this->numberofelements_local);
++	if(pvalues){
++		*pvalues = this->values[row];
++	}
++	if(pN){
++		*pN = this->N[row];
++	}
++}
++/*}}}*/
+Index: ../trunk-jpl/src/c/classes/Inputs/IntArrayInput.h
+===================================================================
+--- ../trunk-jpl/src/c/classes/Inputs/IntArrayInput.h	(nonexistent)
++++ ../trunk-jpl/src/c/classes/Inputs/IntArrayInput.h	(revision 27128)
+@@ -0,0 +1,34 @@
++#ifndef _INTARRAYINPUT_H_
++#define _INTARRAYINPUT_H_
++
++/*Headers:*/
++#include "./Input.h"
++
++class IntArrayInput: public Input{
++
++	private:
++		int         numberofelements_local;
++		int*        N;
++		int** values;
++
++	public:
++		/*IntArrayInput constructors, destructors: {{{*/
++		IntArrayInput();
++		IntArrayInput(int nbe_in);
++		~IntArrayInput();
++		/*}}}*/
++		/*Object virtual functions definitions:{{{ */
++		Input *copy();
++		void    DeepEcho();
++		void    Echo();
++		int     Id();
++		void    Marshall(MarshallHandle* marshallhandle);
++		int     ObjectEnum();
++		/*}}}*/
++		/*IntArrayInput management:*/
++		void SetInput(int row,int numinds,int* values_in);
++		void GetArray(int row,int** pvalues,int* pN);
++		void GetArrayPtr(int row,int** pvalues,int* pN);
++
++};
++#endif  /* _INTARRAYINPUT_H */
Index: /issm/oecreview/Archive/27032-27229/ISSM-27128-27129.diff
===================================================================
--- /issm/oecreview/Archive/27032-27229/ISSM-27128-27129.diff	(revision 27230)
+++ /issm/oecreview/Archive/27032-27229/ISSM-27128-27129.diff	(revision 27230)
@@ -0,0 +1,78 @@
+Index: ../trunk-jpl/src/c/shared/Enum/EnumDefinitions.h
+===================================================================
+--- ../trunk-jpl/src/c/shared/Enum/EnumDefinitions.h	(revision 27128)
++++ ../trunk-jpl/src/c/shared/Enum/EnumDefinitions.h	(revision 27129)
+@@ -1293,6 +1293,7 @@
+ 	Domain3DsurfaceEnum,
+ 	DoubleArrayInputEnum,
+ 	ArrayInputEnum,
++	IntArrayInputEnum,
+ 	DoubleExternalResultEnum,
+ 	DoubleMatArrayParamEnum,
+ 	DoubleMatExternalResultEnum,
+Index: ../trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp
+===================================================================
+--- ../trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp	(revision 27128)
++++ ../trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp	(revision 27129)
+@@ -1296,6 +1296,7 @@
+ 		case Domain3DsurfaceEnum : return "Domain3Dsurface";
+ 		case DoubleArrayInputEnum : return "DoubleArrayInput";
+ 		case ArrayInputEnum : return "ArrayInput";
++		case IntArrayInputEnum : return "IntArrayInput";
+ 		case DoubleExternalResultEnum : return "DoubleExternalResult";
+ 		case DoubleMatArrayParamEnum : return "DoubleMatArrayParam";
+ 		case DoubleMatExternalResultEnum : return "DoubleMatExternalResult";
+Index: ../trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp
+===================================================================
+--- ../trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp	(revision 27128)
++++ ../trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp	(revision 27129)
+@@ -1326,6 +1326,7 @@
+ 	      else if (strcmp(name,"Domain3Dsurface")==0) return Domain3DsurfaceEnum;
+ 	      else if (strcmp(name,"DoubleArrayInput")==0) return DoubleArrayInputEnum;
+ 	      else if (strcmp(name,"ArrayInput")==0) return ArrayInputEnum;
++	      else if (strcmp(name,"IntArrayInput")==0) return IntArrayInputEnum;
+ 	      else if (strcmp(name,"DoubleExternalResult")==0) return DoubleExternalResultEnum;
+ 	      else if (strcmp(name,"DoubleMatArrayParam")==0) return DoubleMatArrayParamEnum;
+ 	      else if (strcmp(name,"DoubleMatExternalResult")==0) return DoubleMatExternalResultEnum;
+@@ -1365,11 +1366,11 @@
+ 	      else if (strcmp(name,"GaussPenta")==0) return GaussPentaEnum;
+ 	      else if (strcmp(name,"GaussSeg")==0) return GaussSegEnum;
+ 	      else if (strcmp(name,"GaussTetra")==0) return GaussTetraEnum;
+-	      else if (strcmp(name,"GaussTria")==0) return GaussTriaEnum;
+          else stage=12;
+    }
+    if(stage==12){
+-	      if (strcmp(name,"GenericOption")==0) return GenericOptionEnum;
++	      if (strcmp(name,"GaussTria")==0) return GaussTriaEnum;
++	      else if (strcmp(name,"GenericOption")==0) return GenericOptionEnum;
+ 	      else if (strcmp(name,"GenericParam")==0) return GenericParamEnum;
+ 	      else if (strcmp(name,"GenericExternalResult")==0) return GenericExternalResultEnum;
+ 	      else if (strcmp(name,"Gradient1")==0) return Gradient1Enum;
+@@ -1488,11 +1489,11 @@
+ 	      else if (strcmp(name,"NoFrictionOnPartiallyFloating")==0) return NoFrictionOnPartiallyFloatingEnum;
+ 	      else if (strcmp(name,"NoMeltOnPartiallyFloating")==0) return NoMeltOnPartiallyFloatingEnum;
+ 	      else if (strcmp(name,"Nodal")==0) return NodalEnum;
+-	      else if (strcmp(name,"Nodalvalue")==0) return NodalvalueEnum;
+          else stage=13;
+    }
+    if(stage==13){
+-	      if (strcmp(name,"NodeSId")==0) return NodeSIdEnum;
++	      if (strcmp(name,"Nodalvalue")==0) return NodalvalueEnum;
++	      else if (strcmp(name,"NodeSId")==0) return NodeSIdEnum;
+ 	      else if (strcmp(name,"NoneApproximation")==0) return NoneApproximationEnum;
+ 	      else if (strcmp(name,"None")==0) return NoneEnum;
+ 	      else if (strcmp(name,"Numberedcostfunction")==0) return NumberedcostfunctionEnum;
+@@ -1611,11 +1612,11 @@
+ 	      else if (strcmp(name,"TotalGroundedBmbScaled")==0) return TotalGroundedBmbScaledEnum;
+ 	      else if (strcmp(name,"TotalSmb")==0) return TotalSmbEnum;
+ 	      else if (strcmp(name,"TotalSmbScaled")==0) return TotalSmbScaledEnum;
+-	      else if (strcmp(name,"TransientArrayParam")==0) return TransientArrayParamEnum;
+          else stage=14;
+    }
+    if(stage==14){
+-	      if (strcmp(name,"TransientInput")==0) return TransientInputEnum;
++	      if (strcmp(name,"TransientArrayParam")==0) return TransientArrayParamEnum;
++	      else if (strcmp(name,"TransientInput")==0) return TransientInputEnum;
+ 	      else if (strcmp(name,"TransientParam")==0) return TransientParamEnum;
+ 	      else if (strcmp(name,"TransientSolution")==0) return TransientSolutionEnum;
+ 	      else if (strcmp(name,"Tria")==0) return TriaEnum;
Index: /issm/oecreview/Archive/27032-27229/ISSM-27129-27130.diff
===================================================================
--- /issm/oecreview/Archive/27032-27229/ISSM-27129-27130.diff	(revision 27230)
+++ /issm/oecreview/Archive/27032-27229/ISSM-27129-27130.diff	(revision 27230)
@@ -0,0 +1,29 @@
+Index: ../trunk-jpl/src/c/Makefile.am
+===================================================================
+--- ../trunk-jpl/src/c/Makefile.am	(revision 27129)
++++ ../trunk-jpl/src/c/Makefile.am	(revision 27130)
+@@ -345,7 +345,8 @@
+ 	./classes/Inputs/DatasetInput.cpp \
+ 	./classes/Inputs/ControlInput.cpp \
+ 	./classes/Inputs/TransientInput.cpp \
+-	./classes/Inputs/ArrayInput.cpp
++	./classes/Inputs/ArrayInput.cpp \
++	./classes/Inputs/IntArrayInput.cpp
+ #}}}
+ # ADJOINTMPI/MeDiPack sources {{{
+ if ADJOINTMPI
+@@ -529,13 +530,7 @@
+ if FORTRAN
+ issm_sources += \
+ 	./cores/love_core.cpp \
+-	./analyses/LoveAnalysis.cpp \
+-	./modules/FourierLoveCorex/FourierLoveCorex.cpp \
+-	./modules/FourierLoveCorex/lnb_param.f90 \
+-	./modules/FourierLoveCorex/model.f90 \
+-	./modules/FourierLoveCorex/util.f90 \
+-	./modules/FourierLoveCorex/lovenb_sub.f90 \
+-	./modules/FourierLoveCorex/love_numbers.f90
++	./analyses/LoveAnalysis.cpp
+ endif
+ endif
+ #}}}
Index: /issm/oecreview/Archive/27032-27229/ISSM-27130-27131.diff
===================================================================
--- /issm/oecreview/Archive/27032-27229/ISSM-27130-27131.diff	(revision 27230)
+++ /issm/oecreview/Archive/27032-27229/ISSM-27130-27131.diff	(revision 27230)
@@ -0,0 +1,3157 @@
+Index: ../trunk-jpl/src/c/analyses/SealevelchangeAnalysis.cpp
+===================================================================
+--- ../trunk-jpl/src/c/analyses/SealevelchangeAnalysis.cpp	(revision 27130)
++++ ../trunk-jpl/src/c/analyses/SealevelchangeAnalysis.cpp	(revision 27131)
+@@ -123,6 +123,9 @@
+ 	IssmDouble  timeacc;
+ 	IssmDouble  planetradius=0;
+ 	IssmDouble  planetarea=0;
++	IssmDouble  constant=0;
++	IssmDouble  rho_earth;
++	int		isgrd=0;
+ 	bool		selfattraction=false;
+ 	bool		elastic=false;
+ 	bool		viscous=false;
+@@ -136,6 +139,8 @@
+ 
+ 	int     numoutputs;
+ 	char**  requestedoutputs = NULL;
++	int* recvcounts = NULL;
++	int* displs=NULL;
+ 
+ 	/*transition vectors: */
+ 	IssmDouble **transitions    = NULL;
+@@ -157,6 +162,7 @@
+ 	iomodel->FetchData(&isexternal,"md.solidearth.isexternal");
+ 	if(isexternal) parameters->AddObject(iomodel->CopyConstantObject("md.solidearth.external.nature",SolidearthExternalNatureEnum));
+ 	parameters->AddObject(iomodel->CopyConstantObject("md.solidearth.settings.runfrequency",SolidearthSettingsRunFrequencyEnum));
++	parameters->AddObject(iomodel->CopyConstantObject("md.solidearth.settings.degacc",SolidearthSettingsDegreeAccuracyEnum));
+ 	parameters->AddObject(iomodel->CopyConstantObject("md.solidearth.settings.reltol",SolidearthSettingsReltolEnum));
+ 	parameters->AddObject(iomodel->CopyConstantObject("md.solidearth.settings.abstol",SolidearthSettingsAbstolEnum));
+ 	parameters->AddObject(iomodel->CopyConstantObject("md.solidearth.settings.maxiter",SolidearthSettingsMaxiterEnum));
+@@ -180,9 +186,9 @@
+ 	parameters->AddObject(new DoubleParam(CumBslcIceEnum,0.0));
+ 	parameters->AddObject(new DoubleParam(CumBslcHydroEnum,0.0));
+ 	parameters->AddObject(new DoubleParam(CumGmtslcEnum,0.0));
+-
+ 	/*compute planet area and plug into parameters:*/
+ 	iomodel->FetchData(&planetradius,"md.solidearth.planetradius");
++	iomodel->FetchData(&rho_earth,"md.materials.earth_density");
+ 	planetarea=4*M_PI*planetradius*planetradius;
+ 	parameters->AddObject(new DoubleParam(SolidearthPlanetAreaEnum,planetarea));
+ 
+@@ -244,7 +250,8 @@
+ 	}
+ 
+ 	parameters->FindParam(&grdmodel,GrdModelEnum);
+-	if(grdmodel==ElasticEnum){
++	parameters->FindParam(&isgrd,SolidearthSettingsGRDEnum);
++	if(grdmodel==ElasticEnum && isgrd){
+ 		/*Deal with elasticity {{{*/
+ 		iomodel->FetchData(&selfattraction,"md.solidearth.settings.selfattraction");
+ 		iomodel->FetchData(&elastic,"md.solidearth.settings.elastic");
+@@ -258,6 +265,9 @@
+ 			M=reCast<int,IssmDouble>(180./degacc+1.);
+ 		}
+ 
++		//default values
++		nt=1;
++		ntimesteps=1;
+ 		/*love numbers: */
+ 		if(viscous || elastic){
+ 			int dummy;
+@@ -272,9 +282,9 @@
+ 			iomodel->FetchData(&love_l,&ndeg,&precomputednt,"md.solidearth.lovenumbers.l");
+ 
+ 			parameters->AddObject(new DoubleParam(SolidearthSettingsTimeAccEnum,timeacc));
+-			parameters->AddObject(new DoubleMatParam(LoadLoveHEnum,love_h,ndeg,precomputednt));
+-			parameters->AddObject(new DoubleMatParam(LoadLoveKEnum,love_k,ndeg,precomputednt));
+-			parameters->AddObject(new DoubleMatParam(LoadLoveLEnum,love_l,ndeg,precomputednt));
++			//parameters->AddObject(new DoubleMatParam(LoadLoveHEnum,love_h,ndeg,precomputednt));
++			//parameters->AddObject(new DoubleMatParam(LoadLoveKEnum,love_k,ndeg,precomputednt));
++			//parameters->AddObject(new DoubleMatParam(LoadLoveLEnum,love_l,ndeg,precomputednt));
+ 
+ 			if (rotation){
+ 				iomodel->FetchData(&love_th,&ndeg,&precomputednt,"md.solidearth.lovenumbers.th");
+@@ -285,17 +295,14 @@
+ 
+ 				parameters->AddObject(new DoubleMatParam(LovePolarMotionTransferFunctionColinearEnum,love_pmtf_colinear,1,precomputednt));
+ 				parameters->AddObject(new DoubleMatParam(LovePolarMotionTransferFunctionOrthogonalEnum,love_pmtf_ortho,1,precomputednt));
+-				parameters->AddObject(new DoubleMatParam(TidalLoveHEnum,love_th,ndeg,precomputednt));
+-				parameters->AddObject(new DoubleMatParam(TidalLoveKEnum,love_tk,ndeg,precomputednt));
+-				parameters->AddObject(new DoubleMatParam(TidalLoveLEnum,love_tl,ndeg,precomputednt));
++				//parameters->AddObject(new DoubleMatParam(TidalLoveHEnum,love_th,ndeg,precomputednt));
++				//parameters->AddObject(new DoubleMatParam(TidalLoveKEnum,love_tk,ndeg,precomputednt));
++				//parameters->AddObject(new DoubleMatParam(TidalLoveLEnum,love_tl,ndeg,precomputednt));
+ 			}
+ 
+ 			parameters->AddObject(new DoubleMatParam(LoveTimeFreqEnum,love_timefreq,precomputednt,1));
+ 			parameters->AddObject(new BoolParam(LoveIsTimeEnum,love_istime));
+ 
+-			/*Free allocations:*/
+-			xDelete<IssmDouble>(love_timefreq);
+-
+ 			// AD performance is sensitive to calls to ensurecontiguous.
+ 			// // Providing "t" will cause ensurecontiguous to be called.
+ 			if(viscous){
+@@ -319,136 +326,124 @@
+ 					xDelete<IssmDouble>(viscouspolarmotion);
+ 				}
+ 			}
+-			else {
+-				ntimesteps=1;
+-				nt=1;
+-			}
+-
+ #ifdef _HAVE_AD_
+-			G_viscoelastic=xNew<IssmDouble>(M*ntimesteps,"t");
+ 			U_viscoelastic=xNew<IssmDouble>(M*ntimesteps,"t");
+ 			if(horiz)H_viscoelastic=xNew<IssmDouble>(M*ntimesteps,"t");
+ #else
+-			G_viscoelastic=xNew<IssmDouble>(M*ntimesteps);
+ 			U_viscoelastic=xNew<IssmDouble>(M*ntimesteps);
+ 			if(horiz)H_viscoelastic=xNew<IssmDouble>(M*ntimesteps);
+ #endif
+ 		}
+ 		if(selfattraction){
++			/*compute combined legendre + love number (elastic green function):*/
++			m=DetermineLocalSize(M,IssmComm::GetComm());
++			GetOwnershipBoundariesFromRange(&lower_row,&upper_row,m,IssmComm::GetComm());
+ #ifdef _HAVE_AD_
+ 			G_gravi=xNew<IssmDouble>(M,"t");
++			G_gravi_local=xNew<IssmDouble>(m,"t");
++			G_viscoelastic=xNew<IssmDouble>(M*ntimesteps,"t");
++			G_viscoelastic_local=xNew<IssmDouble>(m*ntimesteps,"t");
+ #else
+ 			G_gravi=xNew<IssmDouble>(M);
++			G_gravi_local=xNew<IssmDouble>(m);
++			G_viscoelastic=xNew<IssmDouble>(M*ntimesteps);
++			G_viscoelastic_local=xNew<IssmDouble>(m*ntimesteps);
+ #endif
+ 		}
+-
+-		if(rotation) parameters->AddObject(iomodel->CopyConstantObject("md.solidearth.lovenumbers.tk2secular",TidalLoveK2SecularEnum));
+-		if(selfattraction){
+-
+-			/*compute combined legendre + love number (elastic green function):*/
+-			m=DetermineLocalSize(M,IssmComm::GetComm());
+-			GetOwnershipBoundariesFromRange(&lower_row,&upper_row,m,IssmComm::GetComm());
+-		}
+ 		if(viscous | elastic){
+ #ifdef _HAVE_AD_
+-			G_viscoelastic_local=xNew<IssmDouble>(m*ntimesteps,"t");
+ 			U_viscoelastic_local=xNew<IssmDouble>(m*ntimesteps,"t");
+ 			if(horiz)H_viscoelastic_local=xNew<IssmDouble>(m*ntimesteps,"t");
+ #else
+-			G_viscoelastic_local=xNew<IssmDouble>(m*ntimesteps);
+ 			U_viscoelastic_local=xNew<IssmDouble>(m*ntimesteps);
+ 			if(horiz)H_viscoelastic_local=xNew<IssmDouble>(m*ntimesteps);
+ #endif
+ 		}
+-		if(selfattraction){
+-#ifdef _HAVE_AD_
+-			G_gravi_local=xNew<IssmDouble>(m,"t");
+-#else
+-			G_gravi_local=xNew<IssmDouble>(m);
+-#endif
+-		}
+ 
++		if(rotation) parameters->AddObject(iomodel->CopyConstantObject("md.solidearth.lovenumbers.tk2secular",TidalLoveK2SecularEnum));
++		constant=3/rho_earth/planetarea;
+ 		if(selfattraction){
+ 			for(int i=lower_row;i<upper_row;i++){
+ 				IssmDouble alpha,x;
+ 				alpha= reCast<IssmDouble>(i)*degacc * M_PI / 180.0;
+-				G_gravi_local[i-lower_row]= .5/sin(alpha/2.0);
++				G_gravi_local[i-lower_row]= constant*.5/sin(alpha/2.0);
+ 			}
+-		}
+-		if(viscous | elastic){
+-			for(int i=lower_row;i<upper_row;i++){
+-				IssmDouble alpha,x;
+-				alpha= reCast<IssmDouble>(i)*degacc * M_PI / 180.0;
++			if(viscous | elastic){
++				for(int i=lower_row;i<upper_row;i++){
++					IssmDouble alpha,x;
++					alpha= reCast<IssmDouble>(i)*degacc * M_PI / 180.0;
+ 
+-				for(int t=0;t<ntimesteps;t++){
+-					G_viscoelastic_local[(i-lower_row)*ntimesteps+t]= (love_k[(ndeg-1)*precomputednt+t]-love_h[(ndeg-1)*precomputednt+t])*G_gravi_local[i-lower_row];
+-					U_viscoelastic_local[(i-lower_row)*ntimesteps+t]= (love_h[(ndeg-1)*precomputednt+t])*G_gravi_local[i-lower_row];
+-					if(horiz)H_viscoelastic_local[(i-lower_row)*ntimesteps+t]= 0; 
+-				}
++					for(int t=0;t<ntimesteps;t++){
++						G_viscoelastic_local[(i-lower_row)*ntimesteps+t]= (1.0+love_k[(ndeg-1)*precomputednt+t]-love_h[(ndeg-1)*precomputednt+t])*G_gravi_local[i-lower_row];
++						U_viscoelastic_local[(i-lower_row)*ntimesteps+t]= (love_h[(ndeg-1)*precomputednt+t])*G_gravi_local[i-lower_row];
++						if(horiz)H_viscoelastic_local[(i-lower_row)*ntimesteps+t]= 0; 
++					}
+ 
+-				IssmDouble Pn = 0.; 
+-				IssmDouble Pn1 = 0.; 
+-				IssmDouble Pn2 = 0.; 
+-				IssmDouble Pn_p = 0.; 
+-				IssmDouble Pn_p1 = 0.; 
+-				IssmDouble Pn_p2 = 0.; 
++					IssmDouble Pn = 0.; 
++					IssmDouble Pn1 = 0.; 
++					IssmDouble Pn2 = 0.; 
++					IssmDouble Pn_p = 0.; 
++					IssmDouble Pn_p1 = 0.; 
++					IssmDouble Pn_p2 = 0.; 
+ 
+-				for (int n=0;n<ndeg;n++) {
++					for (int n=0;n<ndeg;n++) {
+ 
+-					/*compute legendre polynomials: P_n(cos\theta) & d P_n(cos\theta)/ d\theta: */
+-					if(n==0){
+-						Pn=1; 
+-						Pn_p=0; 
+-					}
+-					else if(n==1){ 
+-						Pn = cos(alpha); 
+-						Pn_p = 1; 
+-					}
+-					else{
+-						Pn = ( (2*n-1)*cos(alpha)*Pn1 - (n-1)*Pn2 ) /n;
+-						Pn_p = ( (2*n-1)*(Pn1+cos(alpha)*Pn_p1) - (n-1)*Pn_p2 ) /n;
+-					}
+-					Pn2=Pn1; Pn1=Pn;
+-					Pn_p2=Pn_p1; Pn_p1=Pn_p;
++						/*compute legendre polynomials: P_n(cos\theta) & d P_n(cos\theta)/ d\theta: */
++						if(n==0){
++							Pn=1; 
++							Pn_p=0; 
++						}
++						else if(n==1){ 
++							Pn = cos(alpha); 
++							Pn_p = 1; 
++						}
++						else{
++							Pn = ( (2*n-1)*cos(alpha)*Pn1 - (n-1)*Pn2 ) /n;
++							Pn_p = ( (2*n-1)*(Pn1+cos(alpha)*Pn_p1) - (n-1)*Pn_p2 ) /n;
++						}
++						Pn2=Pn1; Pn1=Pn;
++						Pn_p2=Pn_p1; Pn_p1=Pn_p;
+ 
+-					for(int t=0;t<ntimesteps;t++){
+-						IssmDouble deltalove_G;
+-						IssmDouble deltalove_U;
++						for(int t=0;t<ntimesteps;t++){
++							IssmDouble deltalove_G;
++							IssmDouble deltalove_U;
+ 
+-						deltalove_G = (love_k[n*precomputednt+t]-love_k[(ndeg-1)*precomputednt+t]-love_h[n*precomputednt+t]+love_h[(ndeg-1)*precomputednt+t]);
+-						deltalove_U = (love_h[n*precomputednt+t]-love_h[(ndeg-1)*precomputednt+t]);
++							deltalove_G = (love_k[n*precomputednt+t]-love_k[(ndeg-1)*precomputednt+t]-love_h[n*precomputednt+t]+love_h[(ndeg-1)*precomputednt+t]);
++							deltalove_U = (love_h[n*precomputednt+t]-love_h[(ndeg-1)*precomputednt+t]);
+ 
+-						G_viscoelastic_local[(i-lower_row)*ntimesteps+t] += deltalove_G*Pn;		                // gravitational potential 
+-						U_viscoelastic_local[(i-lower_row)*ntimesteps+t] += deltalove_U*Pn;		                // vertical (up) displacement 
+-						if(horiz)H_viscoelastic_local[(i-lower_row)*ntimesteps+t] += sin(alpha)*love_l[n*precomputednt+t]*Pn_p;		// horizontal displacements 
++							G_viscoelastic_local[(i-lower_row)*ntimesteps+t] += constant*deltalove_G*Pn;		                // gravitational potential 
++							U_viscoelastic_local[(i-lower_row)*ntimesteps+t] += constant*deltalove_U*Pn;		                // vertical (up) displacement 
++							if(horiz)H_viscoelastic_local[(i-lower_row)*ntimesteps+t] += constant*sin(alpha)*love_l[n*precomputednt+t]*Pn_p;		// horizontal displacements 
++						}
+ 					}
+ 				}
+ 			}
+-		}
+-		if(selfattraction){
+-
++			else { //just copy G_gravi into G_viscoelastic
++				for(int i=lower_row;i<upper_row;i++){
++					for(int t=0;t<ntimesteps;t++){
++						G_viscoelastic_local[(i-lower_row)*ntimesteps+t]= G_gravi_local[i-lower_row];
++					}
++				}
++			}
+ 			/*merge G_viscoelastic_local into G_viscoelastic; U_viscoelastic_local into U_viscoelastic; H_viscoelastic_local to H_viscoelastic:{{{*/
+-			int* recvcounts=xNew<int>(IssmComm::GetSize());
+-			int* displs=xNew<int>(IssmComm::GetSize());
++			recvcounts=xNew<int>(IssmComm::GetSize());
++			displs=xNew<int>(IssmComm::GetSize());
+ 			int  rc;
+ 			int  offset;
+ 
+ 			//deal with selfattraction first: 
+ 			ISSM_MPI_Allgather(&m,1,ISSM_MPI_INT,recvcounts,1,ISSM_MPI_INT,IssmComm::GetComm());
+-
+ 			/*displs: */
+ 			ISSM_MPI_Allgather(&lower_row,1,ISSM_MPI_INT,displs,1,ISSM_MPI_INT,IssmComm::GetComm());
+-
+ 			/*All gather:*/
+ 			ISSM_MPI_Allgatherv(G_gravi_local, m, ISSM_MPI_DOUBLE, G_gravi, recvcounts, displs, ISSM_MPI_DOUBLE,IssmComm::GetComm());
+ 
++			rc=m*ntimesteps;
++			offset=lower_row*ntimesteps;
++			ISSM_MPI_Allgather(&rc,1,ISSM_MPI_INT,recvcounts,1,ISSM_MPI_INT,IssmComm::GetComm());
++			ISSM_MPI_Allgather(&offset,1,ISSM_MPI_INT,displs,1,ISSM_MPI_INT,IssmComm::GetComm());
++			ISSM_MPI_Allgatherv(G_viscoelastic_local, m*ntimesteps, ISSM_MPI_DOUBLE, G_viscoelastic, recvcounts, displs, ISSM_MPI_DOUBLE,IssmComm::GetComm());
+ 			if(elastic){
+-				rc=m*ntimesteps;
+-				offset=lower_row*ntimesteps;
+-				ISSM_MPI_Allgather(&rc,1,ISSM_MPI_INT,recvcounts,1,ISSM_MPI_INT,IssmComm::GetComm());
+-				ISSM_MPI_Allgather(&offset,1,ISSM_MPI_INT,displs,1,ISSM_MPI_INT,IssmComm::GetComm());
+-
+-				ISSM_MPI_Allgatherv(G_viscoelastic_local, m*ntimesteps, ISSM_MPI_DOUBLE, G_viscoelastic, recvcounts, displs, ISSM_MPI_DOUBLE,IssmComm::GetComm());
+ 				ISSM_MPI_Allgatherv(U_viscoelastic_local, m*ntimesteps, ISSM_MPI_DOUBLE, U_viscoelastic, recvcounts, displs, ISSM_MPI_DOUBLE,IssmComm::GetComm());
+ 				if(horiz)ISSM_MPI_Allgatherv(H_viscoelastic_local, m*ntimesteps, ISSM_MPI_DOUBLE, H_viscoelastic, recvcounts, displs, ISSM_MPI_DOUBLE,IssmComm::GetComm());
+ 			}
+@@ -459,9 +454,11 @@
+ 
+ 			/*Avoid singularity at 0: */
+ 			G_gravi[0]=G_gravi[1];
++			for(int t=0;t<ntimesteps;t++){
++				G_viscoelastic[t]=G_viscoelastic[ntimesteps+t];
++			}
+ 			if(elastic){
+ 				for(int t=0;t<ntimesteps;t++){
+-					G_viscoelastic[t]=G_viscoelastic[ntimesteps+t];
+ 					U_viscoelastic[t]=U_viscoelastic[ntimesteps+t];
+ 					if(horiz)H_viscoelastic[t]=H_viscoelastic[ntimesteps+t];
+ 				}
+@@ -474,7 +471,7 @@
+ #ifdef _HAVE_AD_
+ 				G_viscoelastic_interpolated=xNew<IssmDouble>(M*nt,"t");
+ 				U_viscoelastic_interpolated=xNew<IssmDouble>(M*nt,"t");
+-				if(horiz)H_viscoelastic_interpolated=xNew<IssmDouble>(M*nt,"t");
++				if(horiz) H_viscoelastic_interpolated=xNew<IssmDouble>(M*nt,"t");
+ 				if(rotation){
+ 					Pmtf_col_interpolated=xNew<IssmDouble>(nt,"t");
+ 					Pmtf_ortho_interpolated=xNew<IssmDouble>(nt,"t");
+@@ -486,7 +483,7 @@
+ #else
+ 				G_viscoelastic_interpolated=xNew<IssmDouble>(M*nt);
+ 				U_viscoelastic_interpolated=xNew<IssmDouble>(M*nt);
+-				if(horiz)H_viscoelastic_interpolated=xNew<IssmDouble>(M*nt);
++				if(horiz) H_viscoelastic_interpolated=xNew<IssmDouble>(M*nt);
+ 				if(rotation){
+ 					Pmtf_col_interpolated=xNew<IssmDouble>(nt);
+ 					Pmtf_ortho_interpolated=xNew<IssmDouble>(nt);
+@@ -496,12 +493,10 @@
+ 					if (horiz) Love_tl2_interpolated=xNew<IssmDouble>(nt);
+ 				}
+ #endif
+-
+ 				for(int t=0;t<nt;t++){
+ 					IssmDouble lincoeff;
+ 					IssmDouble viscoelastic_time=t*timeacc;
+ 					int        timeindex2=-1;
+-
+ 					/*Find a way to interpolate precomputed Gkernels to our solution time stepping:*/
+ 					if(t!=0){
+ 						for(int t2=0;t2<ntimesteps;t2++){
+@@ -520,7 +515,6 @@
+ 					}
+ 
+ 					for(int index=0;index<M;index++){
+-
+ 						int timeindex=index*nt+t;
+ 						int timepreindex= index*ntimesteps+timeindex2;
+ 						G_viscoelastic_interpolated[timeindex]=(1-lincoeff)*G_viscoelastic[timepreindex]+lincoeff*G_viscoelastic[timepreindex+1];
+@@ -538,55 +532,59 @@
+ 						if (horiz) Love_tl2_interpolated[t]=(1.0-lincoeff)*love_tl[timepreindex]+lincoeff*love_tl[timepreindex+1];
+ 					}
+ 				}
++			}
++			else {
+ 
+-			}
+-			else if(elastic){
+ 				nt=1; //in elastic, or if we run only selfattraction, we need only one step
+ #ifdef _HAVE_AD_
+ 				G_viscoelastic_interpolated=xNew<IssmDouble>(M,"t");
+-				U_viscoelastic_interpolated=xNew<IssmDouble>(M,"t");
+-				if(horiz) H_viscoelastic_interpolated=xNew<IssmDouble>(M,"t");
+ #else
+ 				G_viscoelastic_interpolated=xNew<IssmDouble>(M);
+-				U_viscoelastic_interpolated=xNew<IssmDouble>(M);
+-				if(horiz) H_viscoelastic_interpolated=xNew<IssmDouble>(M);
+ #endif
+-
+-
+ 				xMemCpy<IssmDouble>(G_viscoelastic_interpolated,G_viscoelastic,M);
+-				xMemCpy<IssmDouble>(U_viscoelastic_interpolated,U_viscoelastic,M);
+-				if(horiz) xMemCpy<IssmDouble>(H_viscoelastic_interpolated,H_viscoelastic,M);
+ 
+-				if(rotation){ //if this cpu handles degree 2
++				if(elastic){
+ #ifdef _HAVE_AD_
+-					Pmtf_col_interpolated=xNew<IssmDouble>(1,"t");
+-					Pmtf_ortho_interpolated=xNew<IssmDouble>(1,"t");
+-					Pmtf_z_interpolated=xNew<IssmDouble>(1,"t");
+-					Love_tk2_interpolated=xNew<IssmDouble>(1,"t");
+-					Love_th2_interpolated=xNew<IssmDouble>(1,"t");
+-					if (horiz) Love_tl2_interpolated=xNew<IssmDouble>(1,"t");
++					U_viscoelastic_interpolated=xNew<IssmDouble>(M,"t");
++					if (horiz) H_viscoelastic_interpolated=xNew<IssmDouble>(M,"t");
+ #else
+-					Pmtf_col_interpolated=xNew<IssmDouble>(1);
+-					Pmtf_ortho_interpolated=xNew<IssmDouble>(1);
+-					Pmtf_z_interpolated=xNew<IssmDouble>(1);
+-					Love_tk2_interpolated=xNew<IssmDouble>(1);
+-					Love_th2_interpolated=xNew<IssmDouble>(1);
+-					if (horiz) Love_tl2_interpolated=xNew<IssmDouble>(1);
++					U_viscoelastic_interpolated=xNew<IssmDouble>(M);
++					if (horiz) H_viscoelastic_interpolated=xNew<IssmDouble>(M);
+ #endif
++					xMemCpy<IssmDouble>(U_viscoelastic_interpolated,U_viscoelastic,M);
++					if (horiz) xMemCpy<IssmDouble>(H_viscoelastic_interpolated,H_viscoelastic,M);
+ 
+-					Pmtf_col_interpolated[0]=love_pmtf_colinear[0];
+-					Pmtf_ortho_interpolated[0]=love_pmtf_ortho[0];
+-					Pmtf_z_interpolated[0]=1.0+love_k[2];
+-					Love_tk2_interpolated[0]=love_tk[2];
+-					Love_th2_interpolated[0]=love_th[2];
+-					if (horiz) Love_tl2_interpolated[0]=love_tl[2];
++					if(rotation){ //if this cpu handles degree 2
++#ifdef _HAVE_AD_
++						Pmtf_col_interpolated=xNew<IssmDouble>(1,"t");
++						Pmtf_ortho_interpolated=xNew<IssmDouble>(1,"t");
++						Pmtf_z_interpolated=xNew<IssmDouble>(1,"t");
++						Love_tk2_interpolated=xNew<IssmDouble>(1,"t");
++						Love_th2_interpolated=xNew<IssmDouble>(1,"t");
++						if (horiz) Love_tl2_interpolated=xNew<IssmDouble>(1,"t");
++#else
++						Pmtf_col_interpolated=xNew<IssmDouble>(1);
++						Pmtf_ortho_interpolated=xNew<IssmDouble>(1);
++						Pmtf_z_interpolated=xNew<IssmDouble>(1);
++						Love_tk2_interpolated=xNew<IssmDouble>(1);
++						Love_th2_interpolated=xNew<IssmDouble>(1);
++						if (horiz) Love_tl2_interpolated=xNew<IssmDouble>(1);
++#endif
++
++						Pmtf_col_interpolated[0]=love_pmtf_colinear[0];
++						Pmtf_ortho_interpolated[0]=love_pmtf_ortho[0];
++						Pmtf_z_interpolated[0]=1.0+love_k[2];
++						Love_tk2_interpolated[0]=love_tk[2];
++						Love_th2_interpolated[0]=love_th[2];
++						if (horiz) Love_tl2_interpolated[0]=love_tl[2];
++					}
++
+ 				}
+ 			}	
+-
+ 			/*Save our precomputed tables into parameters*/
+ 			parameters->AddObject(new DoubleVecParam(SealevelchangeGSelfAttractionEnum,G_gravi,M));
++			parameters->AddObject(new DoubleVecParam(SealevelchangeGViscoElasticEnum,G_viscoelastic_interpolated,M*nt));
+ 			if(viscous || elastic){
+-				parameters->AddObject(new DoubleVecParam(SealevelchangeGViscoElasticEnum,G_viscoelastic_interpolated,M*nt));
+ 				parameters->AddObject(new DoubleVecParam(SealevelchangeUViscoElasticEnum,U_viscoelastic_interpolated,M*nt));
+ 				if(horiz)parameters->AddObject(new DoubleVecParam(SealevelchangeHViscoElasticEnum,H_viscoelastic_interpolated,M*nt));
+ 				if(rotation){
+@@ -598,11 +596,14 @@
+ 					if (horiz) parameters->AddObject(new DoubleVecParam(SealevelchangeTidalL2Enum,Love_tl2_interpolated,nt));
+ 				}
+ 			}
+-
+ 			/*free resources: */
+ 			xDelete<IssmDouble>(G_gravi);
+ 			xDelete<IssmDouble>(G_gravi_local);
++			xDelete<IssmDouble>(G_viscoelastic);
++			xDelete<IssmDouble>(G_viscoelastic_local);
++			xDelete<IssmDouble>(G_viscoelastic_interpolated);
+ 			if(elastic){
++				xDelete<IssmDouble>(love_timefreq);
+ 				xDelete<IssmDouble>(love_h);
+ 				xDelete<IssmDouble>(love_k);
+ 				xDelete<IssmDouble>(love_l);
+@@ -609,30 +610,27 @@
+ 				xDelete<IssmDouble>(love_th);
+ 				xDelete<IssmDouble>(love_tk);
+ 				xDelete<IssmDouble>(love_tl);
+-				xDelete<IssmDouble>(G_viscoelastic);
+-				xDelete<IssmDouble>(G_viscoelastic_local);
++
+ 				xDelete<IssmDouble>(G_viscoelastic_interpolated);
+ 				xDelete<IssmDouble>(U_viscoelastic);
+ 				xDelete<IssmDouble>(U_viscoelastic_interpolated);
+ 				xDelete<IssmDouble>(U_viscoelastic_local);
++				xDelete<IssmDouble>(U_viscoelastic_interpolated);
+ 				if(horiz){
+ 					xDelete<IssmDouble>(H_viscoelastic);
+ 					xDelete<IssmDouble>(H_viscoelastic_interpolated);
+ 					xDelete<IssmDouble>(H_viscoelastic_local);
++					xDelete<IssmDouble>(H_viscoelastic_interpolated);
+ 				}
+ 				if(rotation){
+ 					xDelete<IssmDouble>(love_pmtf_colinear);
+ 					xDelete<IssmDouble>(love_pmtf_ortho);
+-					
+-					xDelete<IssmDouble>(Love_tk2_interpolated);
+-					xDelete<IssmDouble>(Love_th2_interpolated);
+ 					xDelete<IssmDouble>(Pmtf_col_interpolated);
+ 					xDelete<IssmDouble>(Pmtf_ortho_interpolated);
+ 					xDelete<IssmDouble>(Pmtf_z_interpolated);
+-					if(horiz){
+-						xDelete<IssmDouble>(Love_tl2_interpolated);
+-					}
+-
++					xDelete<IssmDouble>(Love_tk2_interpolated);
++					xDelete<IssmDouble>(Love_th2_interpolated);
++					if (horiz) xDelete<IssmDouble>(Love_tl2_interpolated);
+ 				}
+ 			}
+ 		} /*}}}*/
+Index: ../trunk-jpl/src/c/classes/Elements/Element.cpp
+===================================================================
+--- ../trunk-jpl/src/c/classes/Elements/Element.cpp	(revision 27130)
++++ ../trunk-jpl/src/c/classes/Elements/Element.cpp	(revision 27131)
+@@ -21,6 +21,7 @@
+ #include "../Inputs/DatasetInput.h"
+ #include "../Inputs/ControlInput.h"
+ #include "../Inputs/ArrayInput.h"
++#include "../Inputs/IntArrayInput.h"
+ /*}}}*/
+ #define MAXVERTICES 6 /*Maximum number of vertices per element, currently Penta, to avoid dynamic mem allocation*/
+ 
+Index: ../trunk-jpl/src/c/classes/Elements/Element.h
+===================================================================
+--- ../trunk-jpl/src/c/classes/Elements/Element.h	(revision 27130)
++++ ../trunk-jpl/src/c/classes/Elements/Element.h	(revision 27131)
+@@ -403,7 +403,7 @@
+ 
+ 		virtual void       SealevelchangeGeometrySubElementKernel(SealevelGeometry* slgeom)=0;
+ 		virtual void       SealevelchangeShift(GrdLoads* loads, IssmDouble offset, SealevelGeometry* slgeom)=0;
+-		virtual void       SealevelchangeGeometryInitial(IssmDouble* xxe, IssmDouble* yye, IssmDouble* zze, IssmDouble* areae)=0;
++		virtual void       SealevelchangeGeometryInitial(IssmDouble* xxe, IssmDouble* yye, IssmDouble* zze, IssmDouble* areae, int* lids)=0;
+ 		virtual void       SealevelchangeGeometryCentroidLoads(SealevelGeometry* slgeom, IssmDouble* xxe, IssmDouble* yye, IssmDouble* zze, IssmDouble* areae)=0;
+ 		virtual void       SealevelchangeGeometrySubElementLoads(SealevelGeometry* slgeom, IssmDouble* areae)=0;
+ 		virtual void       SealevelchangeBarystaticLoads(GrdLoads* loads, BarystaticContributions* barycontrib, SealevelGeometry* slgeom)=0;
+Index: ../trunk-jpl/src/c/classes/Elements/Penta.h
+===================================================================
+--- ../trunk-jpl/src/c/classes/Elements/Penta.h	(revision 27130)
++++ ../trunk-jpl/src/c/classes/Elements/Penta.h	(revision 27131)
+@@ -226,7 +226,7 @@
+ 		void       GiaDeflection(Vector<IssmDouble>* wg,Vector<IssmDouble>* dwgdt,Matlitho* litho, IssmDouble* x,IssmDouble* y){_error_("not implemented yet");};
+ 		void       SealevelchangeGeometrySubElementKernel(SealevelGeometry* slgeom){_error_("not implemented yet");};
+ 		void       SealevelchangeShift(GrdLoads* loads,  IssmDouble offset, SealevelGeometry* slgeom){_error_("not implemented yet");};
+-		void       SealevelchangeGeometryInitial(IssmDouble* xxe, IssmDouble* yye, IssmDouble* zze, IssmDouble* areae){_error_("not implemented yet");};
++		void       SealevelchangeGeometryInitial(IssmDouble* xxe, IssmDouble* yye, IssmDouble* zze, IssmDouble* areae, int* lids){_error_("not implemented yet");};
+ 		void       SealevelchangeGeometryCentroidLoads(SealevelGeometry* slgeom, IssmDouble* xxe, IssmDouble* yye, IssmDouble* zze, IssmDouble* areae){_error_("not implemented yet");};
+ 		void       SealevelchangeGeometrySubElementLoads(SealevelGeometry* slgeom, IssmDouble* areae){_error_("not implemented yet");};
+ 		void       SealevelchangeBarystaticLoads(GrdLoads* loads,  BarystaticContributions* barycontrib, SealevelGeometry* slgeom){_error_("not implemented yet");};
+Index: ../trunk-jpl/src/c/classes/Elements/Seg.h
+===================================================================
+--- ../trunk-jpl/src/c/classes/Elements/Seg.h	(revision 27130)
++++ ../trunk-jpl/src/c/classes/Elements/Seg.h	(revision 27131)
+@@ -179,7 +179,7 @@
+ 		void       GiaDeflection(Vector<IssmDouble>* wg,Vector<IssmDouble>* dwgdt,Matlitho* litho, IssmDouble* x,IssmDouble* y){_error_("not implemented yet");};
+ 		void       SealevelchangeGeometrySubElementKernel(SealevelGeometry* slgeom){_error_("not implemented yet");};
+ 		void       SealevelchangeShift(GrdLoads* loads, IssmDouble offset, SealevelGeometry* slgeom){_error_("not implemented yet");};
+-		void       SealevelchangeGeometryInitial(IssmDouble* xxe, IssmDouble* yye, IssmDouble* zze, IssmDouble* areae){_error_("not implemented yet");};
++		void       SealevelchangeGeometryInitial(IssmDouble* xxe, IssmDouble* yye, IssmDouble* zze, IssmDouble* areae, int* lids){_error_("not implemented yet");};
+ 		void       SealevelchangeGeometryCentroidLoads(SealevelGeometry* slgeom, IssmDouble* xxe, IssmDouble* yye, IssmDouble* zze, IssmDouble* areae){_error_("not implemented yet");};
+ 		void       SealevelchangeGeometrySubElementLoads(SealevelGeometry* slgeom, IssmDouble* areae){_error_("not implemented yet");};
+ 		void       SealevelchangeBarystaticLoads(GrdLoads* loads,  BarystaticContributions* barycontrib, SealevelGeometry* slgeom){_error_("not implemented yet");};
+Index: ../trunk-jpl/src/c/classes/Elements/Tetra.h
+===================================================================
+--- ../trunk-jpl/src/c/classes/Elements/Tetra.h	(revision 27130)
++++ ../trunk-jpl/src/c/classes/Elements/Tetra.h	(revision 27131)
+@@ -186,7 +186,7 @@
+ 		void       GiaDeflection(Vector<IssmDouble>* wg,Vector<IssmDouble>* dwgdt, Matlitho* litho, IssmDouble* x,IssmDouble* y){_error_("not implemented yet");};
+ 		void       SealevelchangeGeometrySubElementKernel(SealevelGeometry* slgeom){_error_("not implemented yet");};
+ 		void       SealevelchangeShift(GrdLoads* loads,  IssmDouble offset, SealevelGeometry* slgeom){_error_("not implemented yet");};
+-		void       SealevelchangeGeometryInitial(IssmDouble* xxe, IssmDouble* yye, IssmDouble* zze, IssmDouble* areae){_error_("not implemented yet");};
++		void       SealevelchangeGeometryInitial(IssmDouble* xxe, IssmDouble* yye, IssmDouble* zze, IssmDouble* areae, int* lids){_error_("not implemented yet");};
+ 		void       SealevelchangeGeometryCentroidLoads(SealevelGeometry* slgeom, IssmDouble* xxe, IssmDouble* yye, IssmDouble* zze, IssmDouble* areae){_error_("not implemented yet");};
+ 		void       SealevelchangeGeometrySubElementLoads(SealevelGeometry* slgeom, IssmDouble* areae){_error_("not implemented yet");};
+ 		void       SealevelchangeBarystaticLoads(GrdLoads* loads, BarystaticContributions* barycontrib, SealevelGeometry* slgeom){_error_("not implemented yet");};
+Index: ../trunk-jpl/src/c/classes/Elements/Tria.cpp
+===================================================================
+--- ../trunk-jpl/src/c/classes/Elements/Tria.cpp	(revision 27130)
++++ ../trunk-jpl/src/c/classes/Elements/Tria.cpp	(revision 27131)
+@@ -6285,7 +6285,7 @@
+ 	return;
+ }
+ /*}}}*/
+-void       Tria::SealevelchangeGeometryInitial(IssmDouble* xxe, IssmDouble* yye, IssmDouble* zze, IssmDouble* areae){ /*{{{*/
++void       Tria::SealevelchangeGeometryInitial(IssmDouble* xxe, IssmDouble* yye, IssmDouble* zze, IssmDouble* areae, int* lids){ /*{{{*/
+ 
+ 	/*Declarations:{{{*/
+ 	int nel;
+@@ -6307,28 +6307,15 @@
+ 	IssmDouble* viscousE = NULL;
+ 
+ 	#ifdef _HAVE_RESTRICT_
+-	IssmDouble* __restrict__ G=NULL;
+-	IssmDouble* __restrict__ GU=NULL;
+-	IssmDouble* __restrict__ GN=NULL;
+-	IssmDouble* __restrict__ GE=NULL;
+-	IssmDouble* __restrict__ G_viscoelastic_precomputed=NULL;
+ 	IssmDouble* __restrict__ G_gravi_precomputed=NULL;
+-	IssmDouble* __restrict__ U_viscoelastic_precomputed=NULL;
+-	IssmDouble* __restrict__ H_viscoelastic_precomputed=NULL;
+ 	#else
+-	IssmDouble* G=NULL;
+-	IssmDouble* GU=NULL;
+-	IssmDouble* GN=NULL;
+-	IssmDouble* GE=NULL;
+-	IssmDouble* G_viscoelastic_precomputed=NULL;
+ 	IssmDouble* G_gravi_precomputed=NULL;
+-	IssmDouble* U_viscoelastic_precomputed=NULL;
+-	IssmDouble* H_viscoelastic_precomputed=NULL;
+ 	#endif
+ 
+ 	/*viscoelastic green function:*/
+ 	int index;
+ 	int M;
++	IssmDouble degacc;
+ 	IssmDouble doubleindex,lincoef;
+ 
+ 	/*Computational flags:*/
+@@ -6345,6 +6332,10 @@
+ 
+ 	/*Rotational:*/
+ 	#ifdef _HAVE_RESTRICT_
++	IssmDouble* __restrict__ Grot=NULL;
++	IssmDouble* __restrict__ GUrot=NULL;
++	IssmDouble* __restrict__ GNrot=NULL;
++	IssmDouble* __restrict__ GErot=NULL;
+ 	IssmDouble* __restrict__ tide_love_h  = NULL;
+ 	IssmDouble* __restrict__ tide_love_k  = NULL;
+ 	IssmDouble* __restrict__ tide_love_l  = NULL;
+@@ -6351,11 +6342,13 @@
+ 	IssmDouble* __restrict__ LoveRotRSL   = NULL;
+ 	IssmDouble* __restrict__ LoveRotU     = NULL;
+ 	IssmDouble* __restrict__ LoveRothoriz = NULL;
+-	IssmDouble* __restrict__  Grot        = NULL;
+-	IssmDouble* __restrict__ GUrot        = NULL;
+-	IssmDouble* __restrict__ GNrot        = NULL;
+-	IssmDouble* __restrict__ GErot        = NULL;
++	int* __restrict__ AplhaIndex   = NULL;
++	int* __restrict__ AzimuthIndex = NULL;
+ 	#else
++	IssmDouble* Grot=NULL;
++	IssmDouble* GUrot=NULL;
++	IssmDouble* GNrot=NULL;
++	IssmDouble* GErot=NULL;
+ 	IssmDouble* tide_love_h  = NULL;
+ 	IssmDouble* tide_love_k  = NULL;
+ 	IssmDouble* tide_love_l  = NULL;
+@@ -6362,10 +6355,8 @@
+ 	IssmDouble* LoveRotRSL   = NULL;
+ 	IssmDouble* LoveRotU     = NULL;
+ 	IssmDouble* LoveRothoriz = NULL;
+-	IssmDouble*  Grot        = NULL;
+-	IssmDouble* GUrot        = NULL;
+-	IssmDouble* GNrot        = NULL;
+-	IssmDouble* GErot        = NULL;
++	int* AlphaIndex   = NULL;
++	int* AzimuthIndex = NULL;
+ 	#endif
+ 
+ 	IssmDouble  moi_e, moi_p, omega;
+@@ -6404,21 +6395,11 @@
+ 	/*}}}*/
+ 
+ 	/*Recover precomputed green function kernels:{{{*/
+-	DoubleVecParam* parameter = static_cast<DoubleVecParam*>(this->parameters->FindParamObject(SealevelchangeGSelfAttractionEnum)); _assert_(parameter);
+-	parameter->GetParameterValueByPointer((IssmDouble**)&G_gravi_precomputed,&M);
++	parameters->FindParam(&degacc,SolidearthSettingsDegreeAccuracyEnum);
++	M=reCast<int,IssmDouble>(180.0/degacc+1.);
+ 
++	DoubleVecParam* parameter;
+ 	if(computeelastic){
+-		parameter = static_cast<DoubleVecParam*>(this->parameters->FindParamObject(SealevelchangeGViscoElasticEnum)); _assert_(parameter);
+-		parameter->GetParameterValueByPointer((IssmDouble**)&G_viscoelastic_precomputed,NULL);
+-
+-		parameter = static_cast<DoubleVecParam*>(this->parameters->FindParamObject(SealevelchangeUViscoElasticEnum)); _assert_(parameter);
+-		parameter->GetParameterValueByPointer((IssmDouble**)&U_viscoelastic_precomputed,NULL);
+-
+-		if(horiz){
+-			parameter = static_cast<DoubleVecParam*>(this->parameters->FindParamObject(SealevelchangeHViscoElasticEnum)); _assert_(parameter);
+-			parameter->GetParameterValueByPointer((IssmDouble**)&H_viscoelastic_precomputed,NULL);
+-		}
+-
+ 		if(computerotation){
+ 			parameter = static_cast<DoubleVecParam*>(this->parameters->FindParamObject(SealevelchangeTidalH2Enum)); _assert_(parameter);
+ 			parameter->GetParameterValueByPointer((IssmDouble**)&tide_love_h,NULL);
+@@ -6454,94 +6435,47 @@
+ 		nt=1; //in elastic, or if we run only selfattraction, we need only one step
+ 	}
+ 
+-	constant=3/rho_earth/planetarea;
++	AlphaIndex=xNewZeroInit<int>(3*nel);
++	if (horiz) AzimuthIndex=xNewZeroInit<int>(3*nel);
++	int intmax=pow(2,16)-1;
+ 
+-	G=xNewZeroInit<IssmDouble>(3*nel*nt);
+-	if(computeelastic){
+-		GU=xNewZeroInit<IssmDouble>(3*nel*nt);
+-		if(horiz){
+-			GN=xNewZeroInit<IssmDouble>(3*nel*nt);
+-			GE=xNewZeroInit<IssmDouble>(3*nel*nt);
+-		}
+-	}
+ 
+-	for(int e=0;e<nel;e++){
+-		ratioe=constant*areae[e];
+-		for (int i=0;i<3;i++){
+-			IssmDouble alpha;
+-			IssmDouble delPhi,delLambda;
+-			/*recovers info for this element and vertex:*/
+-			IssmDouble late= asin(zze[e]/sqrt( pow(xxe[e],2.0)+ pow(yye[e],2.0)+ pow(zze[e],2.0)));
+-			IssmDouble longe= atan2(yye[e],xxe[e]);
++	for (int i=0;i<3;i++){
++		if(lids[this->vertices[i]->lid]==this->lid){
++			for(int e=0;e<nel;e++){
++				IssmDouble alpha;
++				IssmDouble delPhi,delLambda;
++				/*recovers info for this element and vertex:*/
++				IssmDouble late= asin(zze[e]/sqrt( pow(xxe[e],2.0)+ pow(yye[e],2.0)+ pow(zze[e],2.0)));
++				IssmDouble longe= atan2(yye[e],xxe[e]);
+ 
+-			lati=latitude[i];
+-			longi=longitude[i];
++				lati=latitude[i];
++				longi=longitude[i];
+ 
+-			/*Computes alpha angle between centroid and current vertex, and indexes alpha in precomputed tables: */
+-			delPhi=fabs(lati-late); delLambda=fabs(longi-longe); if (delLambda>M_PI)delLambda=2*M_PI-delLambda;
+-			alpha=2.*asin(sqrt(pow(sin(delPhi/2),2)+cos(lati)*cos(late)*pow(sin(delLambda/2),2)));
+-			doubleindex=alpha/M_PI*reCast<IssmDouble,int>(M-1); //maps 0<alpha<PI on [0:M-1]
+-			index=reCast<int,IssmDouble>(doubleindex); //truncates doubleindex to integer part
+-			_assert_(index>=0 && index<M);
++				/*Computes alpha angle between centroid and current vertex, and indexes alpha in precomputed tables: */
++				delPhi=fabs(lati-late); delLambda=fabs(longi-longe); if (delLambda>M_PI)delLambda=2*M_PI-delLambda;
++				alpha=2.*asin(sqrt(pow(sin(delPhi/2),2)+cos(lati)*cos(late)*pow(sin(delLambda/2),2)));
++				doubleindex=alpha/M_PI*reCast<IssmDouble,int>(M-1); //maps 0<alpha<PI on [0:M-1]
++				index=reCast<int,IssmDouble>(doubleindex); //truncates doubleindex to integer part
++				if ((doubleindex-index)>=0.5) index+=1; //nearest neighbour
++				_assert_(index>=0 && index<M);
+ 
+-			lincoef=doubleindex-index; //where between index and index+1 is alpha
+-			if (index==M-1){ //avoids out of bound case
+-				index-=1;
+-				lincoef=1;
+-			}
+-
+-			if(horiz){
+-				/*Compute azimuths, both north and east components: */
+-				x = xyz_list[i][0]; y = xyz_list[i][1]; z = xyz_list[i][2];
+-				if(lati==M_PI/2){
+-					x=1e-12; y=1e-12;
++				if(horiz){
++					/*Compute azimuths*/
++					dx=cos(lati)*sin(late)-sin(lati)*cos(late)*cos(longe-longi);
++					dy=sin(longe-longi)*cos(late);
++					//angle between horiz motion and North, remapped from a double on [0,2*pi] to a int [0,intmax]
++					AzimuthIndex[i*nel+e]=reCast<int,IssmDouble>(intmax*(atan2(dy,dx)/2/M_PI));
+ 				}
+-				if(lati==-M_PI/2){
+-					x=1e-12; y=1e-12;
+-				}
+-				dx = xxe[e]-x; dy = yye[e]-y; dz = zze[e]-z;
+-				N_azim = (-z*x*dx-z*y*dy+(pow(x,2)+pow(y,2))*dz) /pow((pow(x,2)+pow(y,2))*(pow(x,2)+pow(y,2)+pow(z,2))*(pow(dx,2)+pow(dy,2)+pow(dz,2)),0.5);
+-				E_azim = (-y*dx+x*dy) /pow((pow(x,2)+pow(y,2))*(pow(dx,2)+pow(dy,2)+pow(dz,2)),0.5);
+-			}
+-
+-			for(int t=0;t<nt;t++){
+-				int timeindex=i*nel*nt+e*nt+t; 
+-
+-				/*Rigid earth gravitational perturbation: */
+-				G[timeindex]+=G_gravi_precomputed[index+0]*(1.-lincoef) 
+-					     +G_gravi_precomputed[index+1]*lincoef; //linear interpolation
+-
+-				/*Find a way to interpolate precomputed Gkernels to our solution time stepping:*/
+-				if(computeelastic){
+-					G[timeindex]+=G_viscoelastic_precomputed[(index+0)*nt+t]*(1.-lincoef)
+-						     +G_viscoelastic_precomputed[(index+1)*nt+t]*lincoef; //linear interpolation
+-				}
+-				G[timeindex]=G[timeindex]*ratioe;
+-
+-				/*Elastic components:*/
+-				if(computeelastic){
+-					GU[timeindex] =  ratioe *(U_viscoelastic_precomputed[(index+0)*nt+t]*(1.-lincoef)
+-								 +U_viscoelastic_precomputed[(index+1)*nt+t]*lincoef);
+-					if(horiz){
+-						GN[timeindex] = N_azim*ratioe *(H_viscoelastic_precomputed[(index+0)*nt+t]*(1.-lincoef)
+-								 	       +H_viscoelastic_precomputed[(index+1)*nt+t]*lincoef);
+-						GE[timeindex] = E_azim*ratioe *(H_viscoelastic_precomputed[(index+0)*nt+t]*(1.-lincoef)
+-								 	       +H_viscoelastic_precomputed[(index+1)*nt+t]*lincoef);
+-					}
+-				}
+-			} //for(int t=0;t<nt;t++)
++				AlphaIndex[i*nel+e]=index;
++			}			
+ 		} //for (int i=0;i<3;i++)
+ 	} //for(int e=0;e<nel;e++)
+ 
+ 	/*Add in inputs:*/
+-	this->inputs->SetArrayInput(SealevelchangeGEnum,this->lid,G,nel*3*nt);
+-	if(computeelastic){
+-		this->inputs->SetArrayInput(SealevelchangeGUEnum,this->lid,GU,nel*3*nt);
+-		if(horiz){
+-			this->inputs->SetArrayInput(SealevelchangeGNEnum,this->lid,GN,nel*3*nt);
+-			this->inputs->SetArrayInput(SealevelchangeGEEnum,this->lid,GE,nel*3*nt);
+-		}
+-	}
++	this->inputs->SetIntArrayInput(SealevelchangeAlphaIndexEnum,this->lid,AlphaIndex,nel*3);
++	if(horiz) this->inputs->SetIntArrayInput(SealevelchangeAzimuthIndexEnum,this->lid,AzimuthIndex,nel*3);
++
+ 	/*}}}*/
+ 	/*Compute rotation kernel:{{{*/
+ 	if(computerotation){
+@@ -6659,41 +6593,186 @@
+ 
+ 	/*Free allocations:{{{*/
+ 	#ifdef _HAVE_RESTRICT_
+-	delete G;
+-	if(computeelastic){
+-		delete GU;
+-		if(horiz){
+-			delete GN;
+-			delete GE;
++	delete AlphaIndex;
++	if(horiz) AzimuthIndex;
++
++	if(computerotation){
++		delete Grot;
++		delete GUrot;
++		if (horiz){
++			delete GNrot;
++			delete GErot;
+ 		}
+-		if(computerotation){
+-			delete Grot;
+-			delete GUrot;
+-			if (horiz){
+-				delete GNrot;
+-				delete GErot;
+-			}
++	}
++
++	#else
++	xDelete<int>(AlphaIndex);
++	if(horiz){
++		xDelete<int>(AzimuthIndex);
++	}
++	if(computerotation){
++		xDelete<IssmDouble>(Grot);
++		xDelete<IssmDouble>(GUrot);
++		if (horiz){
++			xDelete<IssmDouble>(GNrot);
++			xDelete<IssmDouble>(GErot);
+ 		}
+ 	}
++	#endif
++	/*}}}*/
++	return;
++
++}
++/*}}}*/
++
++void       Tria::SealevelchangeGeometrySubElementKernel(SealevelGeometry* slgeom){ /*{{{*/
++
++	/*Declarations:{{{*/
++	int nel;
++	IssmDouble planetarea,planetradius;
++	IssmDouble constant,ratioe;
++	IssmDouble rho_earth;
++	IssmDouble lati,longi;
++	IssmDouble latitude[NUMVERTICES];
++	IssmDouble longitude[NUMVERTICES];
++	IssmDouble x,y,z,dx,dy,dz,N_azim,E_azim;
++	IssmDouble xyz_list[NUMVERTICES][3];
++
++	#ifdef _HAVE_RESTRICT_
++	int** __restrict__ AlphaIndex=NULL;
++	int** __restrict__ AzimIndex=NULL;
++
+ 	#else
+-	xDelete(G);
+-	if(computeelastic){
+-		xDelete(GU);
+-		if(horiz){
+-			xDelete(GN);
+-			xDelete(GE);
+-		}
+-		if(computerotation){
+-			xDelete(Grot);
+-			xDelete(GUrot);
+-			if (horiz){
+-				xDelete(GNrot);
+-				xDelete(GErot);
++	int** AlphaIndex=NULL;
++	int** AzimIndex=NULL;
++	#endif
++
++	/*viscoelastic green function:*/
++	int index;
++	int M;
++	IssmDouble doubleindex,lincoef, degacc;
++
++	/*Computational flags:*/
++	bool computeselfattraction = false;
++	bool computeelastic = false;
++	bool computeviscous = false;
++	int  horiz;
++	int grd, grdmodel;
++
++	bool istime=true;
++	IssmDouble timeacc=0;
++	IssmDouble start_time,final_time;
++	int  nt,precomputednt;
++	int intmax=pow(2,16)-1;
++
++	/*}}}*/
++	/*Recover parameters:{{{ */
++	rho_earth=FindParam(MaterialsEarthDensityEnum);
++	this->parameters->FindParam(&computeselfattraction,SolidearthSettingsSelfAttractionEnum);
++	this->parameters->FindParam(&computeelastic,SolidearthSettingsElasticEnum);
++	this->parameters->FindParam(&computeviscous,SolidearthSettingsViscousEnum);
++	this->parameters->FindParam(&nel,MeshNumberofelementsEnum);
++	this->parameters->FindParam(&planetarea,SolidearthPlanetAreaEnum);
++	this->parameters->FindParam(&planetradius,SolidearthPlanetRadiusEnum);
++	this->parameters->FindParam(&horiz,SolidearthSettingsHorizEnum);
++	this->parameters->FindParam(&grd,SolidearthSettingsGRDEnum); 
++	this->parameters->FindParam(&grdmodel,GrdModelEnum);
++	/*}}}*/
++
++	/*early return:*/
++	if (!grd || grdmodel!=ElasticEnum) return; //Love numbers won't be found in this case, return before loading them
++	if(!computeselfattraction)return;
++
++	/*Recover precomputed green function kernels:{{{*/
++	parameters->FindParam(&degacc,SolidearthSettingsDegreeAccuracyEnum);
++	M=reCast<int,IssmDouble>(180.0/degacc+1.);
++
++	/*}}}*/
++	/*Compute lat long of all vertices in the element:{{{*/
++	::GetVerticesCoordinates(&xyz_list[0][0],vertices,NUMVERTICES);
++	for(int i=0;i<NUMVERTICES;i++){
++		latitude[i]= asin(xyz_list[i][2]/planetradius);
++		longitude[i]= atan2(xyz_list[i][1],xyz_list[i][0]);
++	}
++	/*}}}*/
++	/*Compute green functions:{{{ */
++
++	if(computeviscous){
++		this->parameters->FindParam(&istime,LoveIsTimeEnum);
++		if(!istime)_error_("Frequency love numbers not supported yet!");
++		this->parameters->FindParam(&timeacc,SolidearthSettingsTimeAccEnum);
++		this->parameters->FindParam(&start_time,TimesteppingStartTimeEnum);
++		this->parameters->FindParam(&final_time,TimesteppingFinalTimeEnum);
++		nt=reCast<int,IssmDouble>((final_time-start_time)/timeacc)+1;
++	}
++	else{
++		nt=1; //in elastic, or if we run only selfattraction, we need only one step
++	}
++	AlphaIndex=xNew<int*>(SLGEOM_NUMLOADS);
++	if(horiz) AzimIndex=xNew<int*>(SLGEOM_NUMLOADS);
++
++
++	//Allocate: 
++	for(int l=0;l<SLGEOM_NUMLOADS;l++){
++		int nbar=slgeom->nbar[l];
++		AlphaIndex[l]=xNewZeroInit<int>(3*nbar);
++		if(horiz) AzimIndex[l]=xNewZeroInit<int>(3*nbar);
++
++
++		for (int i=0;i<3;i++){
++			if(slgeom->lids[this->vertices[i]->lid]==this->lid){
++				for(int e=0;e<nbar;e++){
++					IssmDouble alpha;
++					IssmDouble delPhi,delLambda;
++					/*recover info for this element and vertex:*/
++					IssmDouble late= slgeom->latbarycentre[l][e]; 
++					IssmDouble longe= slgeom->longbarycentre[l][e]; 
++					late=late/180*M_PI;
++					longe=longe/180*M_PI;
++
++					lati=latitude[i];
++					longi=longitude[i];
++
++					if(horiz){
++						/*Compute azimuths*/
++						dx=cos(lati)*sin(late)-sin(lati)*cos(late)*cos(longe-longi);
++						dy=sin(longe-longi)*cos(late);
++						//angle between horiz motion and North, remapped from a double on [0,2*pi] to a int [0,intmax]
++						AzimIndex[l][i*nbar+e]=reCast<int,IssmDouble>(intmax*(atan2(dy,dx)/2/M_PI));
++					}
++
++					/*Compute alpha angle between centroid and current vertex and index into precomputed tables: */
++					delPhi=fabs(lati-late); delLambda=fabs(longi-longe); if (delLambda>M_PI)delLambda=2*M_PI-delLambda;
++					alpha=2.*asin(sqrt(pow(sin(delPhi/2.0),2.0)+cos(lati)*cos(late)*pow(sin(delLambda/2.0),2.0)));
++					doubleindex=alpha/M_PI*reCast<IssmDouble,int>(M-1); //maps 0<alpha<PI on [0:M-1]
++					index=reCast<int,IssmDouble>(doubleindex); //truncates doubleindex to integer part
++
++					if ((doubleindex-index)>=0.5) index+=1; //nearest neighbour
++					if (index==M-1){ //avoids out of bound case
++						index-=1;
++						lincoef=1;
++					}
++					AlphaIndex[l][i*nbar+e]=index;
++				}
+ 			}
+ 		}
+ 	}
+-	#endif
++
++	/*Save all these arrayins for each element:*/
++	for (int l=0;l<SLGEOM_NUMLOADS;l++){
++		this->inputs->SetIntArrayInput(slgeom->AlphaIndexEnum(l),this->lid,AlphaIndex[l],slgeom->nbar[l]*3);
++		if(horiz) this->inputs->SetIntArrayInput(slgeom->AzimuthIndexEnum(l),this->lid,AzimIndex[l],slgeom->nbar[l]*3);
++	}
+ 	/*}}}*/
++	/*Free memory:{{{*/
++	for (int l=0;l<SLGEOM_NUMLOADS;l++){
++		xDelete<int>(AlphaIndex[l]);
++		if(horiz) xDelete<int>(AzimIndex[l]);
++	}
++	xDelete<int*>(AlphaIndex);
++	if(horiz) xDelete<int*>(AzimIndex); 
++	
++	/*}}}*/
+ 	return;
+ 
+ }
+@@ -6905,6 +6984,91 @@
+ 
+ }
+ /*}}}*/
++void       Tria::SealevelchangeBarystaticLoads(GrdLoads* loads,  BarystaticContributions* barycontrib, SealevelGeometry* slgeom){ /*{{{*/
++
++	int nel;
++
++	/*Inputs:*/
++	IssmDouble I[NUMVERTICES]; 
++	IssmDouble W[NUMVERTICES];
++	IssmDouble BP[NUMVERTICES];
++	IssmDouble* areae=NULL;
++
++	/*output: */
++	IssmDouble bslcice=0;
++	IssmDouble bslchydro=0;
++	IssmDouble bslcbp=0;
++	IssmDouble BPavg=0;
++	IssmDouble Iavg=0;
++	IssmDouble Wavg=0;
++
++	/*ice properties: */
++	IssmDouble rho_ice,rho_water,rho_freshwater;
++
++	/*recover some parameters:*/
++	this->parameters->FindParam(&rho_ice,MaterialsRhoIceEnum);
++	this->parameters->FindParam(&rho_water,MaterialsRhoSeawaterEnum);
++	this->parameters->FindParam(&rho_freshwater,MaterialsRhoFreshwaterEnum);
++	this->parameters->FindParam(&areae,&nel,AreaeEnum);
++
++	/*Retrieve inputs:*/
++	Element::GetInputListOnVertices(&I[0],DeltaIceThicknessEnum);
++	Element::GetInputListOnVertices(&W[0],DeltaTwsEnum);
++	Element::GetInputListOnVertices(&BP[0],DeltaBottomPressureEnum);
++
++	for(int i=0;i<NUMVERTICES;i++){
++		Iavg+=I[i]*slgeom->LoadWeigths[SLGEOM_ICE][i][this->lid]*slgeom->LoadArea[SLGEOM_ICE][this->lid];
++		Wavg+=W[i]*slgeom->LoadWeigths[SLGEOM_WATER][i][this->lid]*slgeom->LoadArea[SLGEOM_WATER][this->lid];
++		BPavg+=BP[i]*slgeom->LoadWeigths[SLGEOM_OCEAN][i][this->lid]*slgeom->LoadArea[SLGEOM_OCEAN][this->lid];
++	}
++
++	/*convert from m^3 to kg:*/
++	Iavg*=rho_ice;
++	Wavg*=rho_freshwater;
++	BPavg*=rho_water;
++
++	#ifdef _ISSM_DEBUG_ 
++	this->AddInput(SealevelBarystaticIceLoadEnum,&Iavg,P0Enum);
++	this->AddInput(SealevelBarystaticHydroLoadEnum,&Wavg,P0Enum);
++	this->AddInput(SealevelBarystaticBpLoadEnum,&BPavg,P0Enum);
++	#endif
++
++	/*Compute barystatic component in kg:*/
++	// Note: Iavg, etc, already include partial area factor phi for subelement loading
++	bslcice =   -Iavg;
++	bslchydro = -Wavg;
++	bslcbp =    -BPavg;
++
++	_assert_(!xIsNan<IssmDouble>(bslcice));
++	_assert_(!xIsNan<IssmDouble>(bslchydro));
++	_assert_(!xIsNan<IssmDouble>(bslcbp));
++
++	/*Plug values into subelement load vector:*/
++	if(slgeom->issubelement[SLGEOM_ICE][this->lid]){
++		int intj=slgeom->subelementmapping[SLGEOM_ICE][this->lid];
++		loads->vsubloads[SLGEOM_ICE]->SetValue(intj,Iavg,INS_VAL);
++		Iavg=0; //avoid double counting centroid loads and subelement loads!
++	}
++	if(slgeom->issubelement[SLGEOM_WATER][this->lid]){
++		int intj=slgeom->subelementmapping[SLGEOM_WATER][this->lid];
++		loads->vsubloads[SLGEOM_WATER]->SetValue(intj,Wavg,INS_VAL);
++		Wavg=0;
++	}
++	if(slgeom->issubelement[SLGEOM_OCEAN][this->lid]){
++		int intj=slgeom->subelementmapping[SLGEOM_OCEAN][this->lid];
++		loads->vsubloads[SLGEOM_OCEAN]->SetValue(intj,BPavg,INS_VAL); 
++		BPavg=0;
++	}
++	/*Plug remaining values into centroid load vector:*/
++	loads->vloads->SetValue(this->sid,Iavg+Wavg+BPavg,INS_VAL);
++
++	/*Keep track of barystatic contributions:*/
++	barycontrib->Set(this->Sid(),bslcice,bslchydro,bslcbp);
++
++	/*Free ressources*/
++	xDelete<IssmDouble>(areae);
++
++}/*}}}*/
+ void       Tria::SealevelchangeGeometrySubElementLoads(SealevelGeometry* slgeom, IssmDouble* areae){ /*{{{*/
+ 
+ 	/* Classic buildup of load weights, centroids and areas *for elements which are fully inside a mask. 
+@@ -7005,244 +7169,6 @@
+ 
+ }
+ /*}}}*/
+-void       Tria::SealevelchangeGeometrySubElementKernel(SealevelGeometry* slgeom){ /*{{{*/
+-
+-	/*Declarations:{{{*/
+-	int nel;
+-	IssmDouble planetarea,planetradius;
+-	IssmDouble constant,ratioe;
+-	IssmDouble rho_earth;
+-	IssmDouble lati,longi;
+-	IssmDouble latitude[NUMVERTICES];
+-	IssmDouble longitude[NUMVERTICES];
+-	IssmDouble x,y,z,dx,dy,dz,N_azim,E_azim;
+-	IssmDouble xyz_list[NUMVERTICES][3];
+-
+-	#ifdef _HAVE_RESTRICT_
+-	IssmDouble* __restrict__ G_viscoelastic_precomputed=NULL;
+-	IssmDouble* __restrict__ G_gravi_precomputed=NULL;
+-	IssmDouble* __restrict__ U_viscoelastic_precomputed=NULL;
+-	IssmDouble* __restrict__ H_viscoelastic_precomputed=NULL;
+-	IssmDouble** __restrict__ Gsubel=NULL;
+-	IssmDouble** __restrict__ GUsubel=NULL;
+-	IssmDouble** __restrict__ GNsubel=NULL;
+-	IssmDouble** __restrict__ GEsubel=NULL;
+-
+-	#else
+-	IssmDouble* G_viscoelastic_precomputed=NULL;
+-	IssmDouble* G_gravi_precomputed=NULL;
+-	IssmDouble* U_viscoelastic_precomputed=NULL;
+-	IssmDouble* H_viscoelastic_precomputed=NULL;
+-	IssmDouble** Gsubel=NULL;
+-	IssmDouble** GUsubel=NULL;
+-	IssmDouble** GNsubel=NULL;
+-	IssmDouble** GEsubel=NULL;
+-	#endif
+-
+-	/*viscoelastic green function:*/
+-	int index;
+-	int M;
+-	IssmDouble doubleindex,lincoef;
+-
+-	/*Computational flags:*/
+-	bool computeselfattraction = false;
+-	bool computeelastic = false;
+-	bool computeviscous = false;
+-	int  horiz;
+-	int grd, grdmodel;
+-
+-	bool istime=true;
+-	IssmDouble timeacc=0;
+-	IssmDouble start_time,final_time;
+-	int  nt,precomputednt;
+-
+-	/*}}}*/
+-	/*Recover parameters:{{{ */
+-	rho_earth=FindParam(MaterialsEarthDensityEnum);
+-	this->parameters->FindParam(&computeselfattraction,SolidearthSettingsSelfAttractionEnum);
+-	this->parameters->FindParam(&computeelastic,SolidearthSettingsElasticEnum);
+-	this->parameters->FindParam(&computeviscous,SolidearthSettingsViscousEnum);
+-	this->parameters->FindParam(&nel,MeshNumberofelementsEnum);
+-	this->parameters->FindParam(&planetarea,SolidearthPlanetAreaEnum);
+-	this->parameters->FindParam(&planetradius,SolidearthPlanetRadiusEnum);
+-	this->parameters->FindParam(&horiz,SolidearthSettingsHorizEnum);
+-	this->parameters->FindParam(&grd,SolidearthSettingsGRDEnum); 
+-	this->parameters->FindParam(&grdmodel,GrdModelEnum);
+-	/*}}}*/
+-
+-	/*early return:*/
+-	if (!grd || grdmodel!=ElasticEnum) return; //Love numbers won't be found in this case, return before loading them
+-	if(!computeselfattraction)return;
+-
+-	/*Recover precomputed green function kernels:{{{*/
+-	DoubleVecParam* parameter = static_cast<DoubleVecParam*>(this->parameters->FindParamObject(SealevelchangeGSelfAttractionEnum)); _assert_(parameter);
+-	parameter->GetParameterValueByPointer((IssmDouble**)&G_gravi_precomputed,&M);
+-
+-	if(computeelastic){
+-		parameter = static_cast<DoubleVecParam*>(this->parameters->FindParamObject(SealevelchangeGViscoElasticEnum)); _assert_(parameter);
+-		parameter->GetParameterValueByPointer((IssmDouble**)&G_viscoelastic_precomputed,NULL);
+-
+-		parameter = static_cast<DoubleVecParam*>(this->parameters->FindParamObject(SealevelchangeUViscoElasticEnum)); _assert_(parameter);
+-		parameter->GetParameterValueByPointer((IssmDouble**)&U_viscoelastic_precomputed,NULL);
+-
+-		if(horiz){
+-			parameter = static_cast<DoubleVecParam*>(this->parameters->FindParamObject(SealevelchangeHViscoElasticEnum)); _assert_(parameter);
+-			parameter->GetParameterValueByPointer((IssmDouble**)&H_viscoelastic_precomputed,NULL);
+-
+-		}
+-	}
+-	/*}}}*/
+-	/*Compute lat long of all vertices in the element:{{{*/
+-	::GetVerticesCoordinates(&xyz_list[0][0],vertices,NUMVERTICES);
+-	for(int i=0;i<NUMVERTICES;i++){
+-		latitude[i]= asin(xyz_list[i][2]/planetradius);
+-		longitude[i]= atan2(xyz_list[i][1],xyz_list[i][0]);
+-	}
+-	/*}}}*/
+-	/*Compute green functions:{{{ */
+-	constant=3/rho_earth/planetarea;
+-
+-	if(computeviscous){
+-		this->parameters->FindParam(&istime,LoveIsTimeEnum);
+-		if(!istime)_error_("Frequency love numbers not supported yet!");
+-		this->parameters->FindParam(&timeacc,SolidearthSettingsTimeAccEnum);
+-		this->parameters->FindParam(&start_time,TimesteppingStartTimeEnum);
+-		this->parameters->FindParam(&final_time,TimesteppingFinalTimeEnum);
+-		nt=reCast<int,IssmDouble>((final_time-start_time)/timeacc)+1;
+-	}
+-	else{
+-		nt=1; //in elastic, or if we run only selfattraction, we need only one step
+-	}
+-	Gsubel=xNew<IssmDouble*>(SLGEOM_NUMLOADS);
+-	if(computeelastic){
+-		GUsubel=xNew<IssmDouble*>(SLGEOM_NUMLOADS);
+-		if(horiz){
+-			GNsubel=xNew<IssmDouble*>(SLGEOM_NUMLOADS);
+-			GEsubel=xNew<IssmDouble*>(SLGEOM_NUMLOADS);
+-		}
+-	}
+-
+-	//Allocate: 
+-	for(int l=0;l<SLGEOM_NUMLOADS;l++){
+-		int nbar=slgeom->nbar[l];
+-		Gsubel[l]=xNewZeroInit<IssmDouble>(3*nbar*nt);
+-		if(computeelastic){
+-			GUsubel[l]=xNewZeroInit<IssmDouble>(3*nbar*nt);
+-			if(horiz){
+-				GNsubel[l]=xNewZeroInit<IssmDouble>(3*nbar*nt);
+-				GEsubel[l]=xNewZeroInit<IssmDouble>(3*nbar*nt);
+-			}
+-		}
+-
+-		for(int e=0;e<nbar;e++){
+-			ratioe=constant*slgeom->area_subel[l][e];
+-			for (int i=0;i<3;i++){
+-				IssmDouble alpha;
+-				IssmDouble delPhi,delLambda;
+-				/*recover info for this element and vertex:*/
+-				IssmDouble late= slgeom->latbarycentre[l][e]; 
+-				IssmDouble longe= slgeom->longbarycentre[l][e]; 
+-				late=late/180*M_PI;
+-				longe=longe/180*M_PI;
+-
+-				lati=latitude[i];
+-				longi=longitude[i];
+-
+-				if(horiz){
+-					/*Compute azimuths, both north and east components: */
+-					x = xyz_list[i][0]; y = xyz_list[i][1]; z = xyz_list[i][2];
+-					if(lati==90){
+-						x=1e-12; y=1e-12;
+-					}
+-					if(lati==-90){
+-						x=1e-12; y=1e-12;
+-					}
+-					IssmDouble xbar=planetradius*cos(late)*cos(longe);
+-					IssmDouble ybar=planetradius*cos(late)*sin(longe);
+-					IssmDouble zbar=planetradius*sin(late);
+-
+-					dx = xbar-x; dy = ybar-y; dz = zbar-z;
+-					N_azim = (-z*x*dx-z*y*dy+(pow(x,2)+pow(y,2))*dz) /pow((pow(x,2)+pow(y,2))*(pow(x,2)+pow(y,2)+pow(z,2))*(pow(dx,2)+pow(dy,2)+pow(dz,2)),0.5);
+-					E_azim = (-y*dx+x*dy) /pow((pow(x,2)+pow(y,2))*(pow(dx,2)+pow(dy,2)+pow(dz,2)),0.5);
+-				}
+-
+-				/*Compute alpha angle between centroid and current vertex and index into precomputed tables: */
+-				delPhi=fabs(lati-late); delLambda=fabs(longi-longe); if (delLambda>M_PI)delLambda=2*M_PI-delLambda;
+-				alpha=2.*asin(sqrt(pow(sin(delPhi/2.0),2.0)+cos(lati)*cos(late)*pow(sin(delLambda/2.0),2.0)));
+-				doubleindex=alpha/M_PI*reCast<IssmDouble,int>(M-1); //maps 0<alpha<PI on [0:M-1]
+-				index=reCast<int,IssmDouble>(doubleindex); //truncates doubleindex to integer part
+-
+-				lincoef=doubleindex-index; //where between index and index+1 is alpha
+-				if (index==M-1){ //avoids out of bound case
+-					index-=1;
+-					lincoef=1;
+-				}
+-
+-				for(int t=0;t<nt;t++){
+-					int timeindex=i*nbar*nt+e*nt+t; 
+-
+-					/*Rigid earth gravitational perturbation: */
+-					Gsubel[l][timeindex]+=G_gravi_precomputed[index+0]*(1.-lincoef) 
+-					    		     +G_gravi_precomputed[index+1]*lincoef; //linear interpolation
+-
+-					if(computeelastic){
+-						Gsubel[l][timeindex]+=G_viscoelastic_precomputed[(index+0)*nt+t]*(1.-lincoef)
+-								     +G_viscoelastic_precomputed[(index+1)*nt+t]*lincoef; //linear interpolation
+-					}
+-					Gsubel[l][timeindex]*=ratioe;
+-
+-					/*Elastic components:*/
+-					if(computeelastic){
+-						GUsubel[l][timeindex] =  ratioe *(U_viscoelastic_precomputed[(index+0)*nt+t]*(1.-lincoef)
+-										 +U_viscoelastic_precomputed[(index+1)*nt+t]*lincoef);
+-						if(horiz){
+-							GNsubel[l][timeindex] = N_azim*ratioe *(H_viscoelastic_precomputed[(index+0)*nt+t]*(1.-lincoef)
+-								 			      +H_viscoelastic_precomputed[(index+1)*nt+t]*lincoef);
+-							GEsubel[l][timeindex] = E_azim*ratioe *(H_viscoelastic_precomputed[(index+0)*nt+t]*(1.-lincoef)
+-								 			      +H_viscoelastic_precomputed[(index+1)*nt+t]*lincoef);
+-						}
+-					}
+-				}
+-			}
+-		}
+-	}
+-
+-	/*Save all these arrayins for each element:*/
+-	for (int l=0;l<SLGEOM_NUMLOADS;l++){
+-		this->inputs->SetArrayInput(slgeom->GEnum(l),this->lid,Gsubel[l],slgeom->nbar[l]*3*nt);
+-		if(computeelastic){
+-			this->inputs->SetArrayInput(slgeom->GUEnum(l),this->lid,GUsubel[l],slgeom->nbar[l]*3*nt);
+-			if(horiz){
+-				this->inputs->SetArrayInput(slgeom->GNEnum(l),this->lid,GNsubel[l],slgeom->nbar[l]*3*nt);
+-				this->inputs->SetArrayInput(slgeom->GEEnum(l),this->lid,GEsubel[l],slgeom->nbar[l]*3*nt);
+-			}
+-		}
+-	}
+-	/*}}}*/
+-	/*Free memory:{{{*/
+-	for (int l=0;l<SLGEOM_NUMLOADS;l++){
+-		xDelete<IssmDouble>(Gsubel[l]);
+-		if(computeelastic){
+-			xDelete<IssmDouble>(GUsubel[l]);
+-			if(horiz){
+-				xDelete<IssmDouble>(GNsubel[l]);
+-				xDelete<IssmDouble>(GEsubel[l]);
+-			}
+-		}
+-	}
+-	xDelete<IssmDouble*>(Gsubel);
+-	if(computeelastic){
+-		xDelete<IssmDouble*>(GUsubel);
+-		if(horiz){
+-			xDelete<IssmDouble*>(GNsubel); 
+-			xDelete<IssmDouble*>(GEsubel);
+-		}
+-	}
+-	/*}}}*/
+-	return;
+-
+-}
+-/*}}}*/
+ void       Tria::SealevelchangeUpdateViscousFields(IssmDouble lincoeff, int newindex, int offset){ /*{{{*/
+ 
+ 	/*Inputs:*/
+@@ -7251,7 +7177,7 @@
+ 	IssmDouble* viscousN=NULL;
+ 	IssmDouble* viscousE=NULL;
+ 	int         viscousnumsteps;
+-	int         dummy;
++	int         size;
+ 	bool        viscous=false;
+ 	int	    horiz=0;
+ 
+@@ -7261,11 +7187,11 @@
+ 		this->parameters->FindParam(&horiz,SolidearthSettingsHorizEnum);
+ 		this->parameters->FindParam(&viscousnumsteps,SealevelchangeViscousNumStepsEnum);
+ 
+-		this->inputs->GetArrayPtr(SealevelchangeViscousRSLEnum,this->lid,&viscousRSL,&dummy);
+-		this->inputs->GetArrayPtr(SealevelchangeViscousUEnum,this->lid,&viscousU,&dummy);
++		this->inputs->GetArrayPtr(SealevelchangeViscousRSLEnum,this->lid,&viscousRSL,&size);
++		this->inputs->GetArrayPtr(SealevelchangeViscousUEnum,this->lid,&viscousU,&size);
+ 		if(horiz){
+-			this->inputs->GetArrayPtr(SealevelchangeViscousNEnum,this->lid,&viscousN,&dummy);
+-			this->inputs->GetArrayPtr(SealevelchangeViscousEEnum,this->lid,&viscousE,&dummy);
++			this->inputs->GetArrayPtr(SealevelchangeViscousNEnum,this->lid,&viscousN,&size);
++			this->inputs->GetArrayPtr(SealevelchangeViscousEEnum,this->lid,&viscousE,&size);
+ 		}
+ 
+ 		for(int i=0;i<NUMVERTICES;i++){
+@@ -7276,104 +7202,54 @@
+ 				viscousE[i*viscousnumsteps+newindex+offset]=(1-lincoeff)*viscousE[i*viscousnumsteps+newindex]+lincoeff*viscousE[i*viscousnumsteps+newindex+1];
+ 			}
+ 		}
+-
+ 	}
+-
+ }
+ /*}}}*/
+-void       Tria::SealevelchangeBarystaticLoads(GrdLoads* loads,  BarystaticContributions* barycontrib, SealevelGeometry* slgeom){ /*{{{*/
++void       Tria::SealevelchangeOceanAverage(GrdLoads* loads, Vector<IssmDouble>* oceanareas, Vector<IssmDouble>* subelementoceanareas, IssmDouble* sealevelpercpu, SealevelGeometry* slgeom){ /*{{{*/
+ 
+-	int nel;
++	IssmDouble oceanaverage=0;
++	IssmDouble oceanarea=0;
++	IssmDouble rho_water;
+ 
+-	/*Inputs:*/
+-	IssmDouble I[NUMVERTICES]; 
+-	IssmDouble W[NUMVERTICES];
+-	IssmDouble BP[NUMVERTICES];
+-	IssmDouble* areae=NULL;
+-
+-	/*output: */
+-	IssmDouble bslcice=0;
+-	IssmDouble bslchydro=0;
+-	IssmDouble bslcbp=0;
+-	IssmDouble BPavg=0;
+-	IssmDouble Iavg=0;
+-	IssmDouble Wavg=0;
+-
+-	/*ice properties: */
+-	IssmDouble rho_ice,rho_water,rho_freshwater;
+-
+-	/*recover some parameters:*/
+-	this->parameters->FindParam(&rho_ice,MaterialsRhoIceEnum);
+ 	this->parameters->FindParam(&rho_water,MaterialsRhoSeawaterEnum);
+-	this->parameters->FindParam(&rho_freshwater,MaterialsRhoFreshwaterEnum);
+-	this->parameters->FindParam(&areae,&nel,AreaeEnum);
+ 
+-	/*Retrieve inputs:*/
+-	Element::GetInputListOnVertices(&I[0],DeltaIceThicknessEnum);
+-	Element::GetInputListOnVertices(&W[0],DeltaTwsEnum);
+-	Element::GetInputListOnVertices(&BP[0],DeltaBottomPressureEnum);
+-
++	/*retrieve ocean average and area:*/
+ 	for(int i=0;i<NUMVERTICES;i++){
+-		Iavg+=I[i]*slgeom->LoadWeigths[SLGEOM_ICE][i][this->lid];
+-		Wavg+=W[i]*slgeom->LoadWeigths[SLGEOM_WATER][i][this->lid];
+-		BPavg+=BP[i]*slgeom->LoadWeigths[SLGEOM_OCEAN][i][this->lid];
++		oceanaverage+=sealevelpercpu[this->vertices[i]->lid]*slgeom->LoadWeigths[SLGEOM_OCEAN][i][this->lid];
+ 	}
+-
+-	/*convert from m to kg/m^2:*/
+-	Iavg*=rho_ice;
+-	Wavg*=rho_freshwater;
+-	BPavg*=rho_water;
+-
+ 	#ifdef _ISSM_DEBUG_ 
+-	this->AddInput(SealevelBarystaticIceLoadEnum,&Iavg,P0Enum);
+-	this->AddInput(SealevelBarystaticHydroLoadEnum,&Wavg,P0Enum);
+-	this->AddInput(SealevelBarystaticBpLoadEnum,&BPavg,P0Enum);
++	this->AddInput(SealevelBarystaticOceanLoadEnum,&oceanaverage,P0Enum);
+ 	#endif
++	oceanarea=slgeom->LoadArea[SLGEOM_OCEAN][this->lid];
+ 
+-	/*Compute barystatic component in kg:*/
+-	// Note: Iavg, etc, already include partial area factor phi for subelement loading
+-	bslcice =   -slgeom->LoadArea[SLGEOM_ICE][this->lid]*Iavg;
+-	bslchydro = -slgeom->LoadArea[SLGEOM_WATER][this->lid]*Wavg;
+-	bslcbp =    -slgeom->LoadArea[SLGEOM_OCEAN][this->lid]*BPavg;
+-
+-	_assert_(!xIsNan<IssmDouble>(bslcice));
+-	_assert_(!xIsNan<IssmDouble>(bslchydro));
+-	_assert_(!xIsNan<IssmDouble>(bslcbp));
+-
+-	/*Plug values into subelement load vector:*/
+-	if(slgeom->issubelement[SLGEOM_ICE][this->lid]){
+-		int intj=slgeom->subelementmapping[SLGEOM_ICE][this->lid];
+-		loads->vsubloads[SLGEOM_ICE]->SetValue(intj,Iavg,INS_VAL);
+-		Iavg=0; //avoid double counting centroid loads and subelement loads!
+-	}
+-	if(slgeom->issubelement[SLGEOM_WATER][this->lid]){
+-		int intj=slgeom->subelementmapping[SLGEOM_WATER][this->lid];
+-		loads->vsubloads[SLGEOM_WATER]->SetValue(intj,Wavg,INS_VAL);
+-		Wavg=0;
+-	}
++	/*add ocean average in the global sealevelloads vector:*/
+ 	if(slgeom->issubelement[SLGEOM_OCEAN][this->lid]){
+ 		int intj=slgeom->subelementmapping[SLGEOM_OCEAN][this->lid];
+-		loads->vsubloads[SLGEOM_OCEAN]->SetValue(intj,BPavg,INS_VAL); 
+-		BPavg=0;
++		loads->vsubsealevelloads->SetValue(intj,oceanaverage*rho_water*oceanarea,INS_VAL);
++		loads->vsealevelloads->SetValue(this->sid,0.,INS_VAL);
+ 	}
+-	/*Plug remaining values into centroid load vector:*/
+-	loads->vloads->SetValue(this->sid,Iavg+Wavg+BPavg,INS_VAL);
++	else loads->vsealevelloads->SetValue(this->sid,oceanaverage*rho_water*oceanarea,INS_VAL);
+ 
+-	/*Keep track of barystatic contributions:*/
+-	barycontrib->Set(this->Sid(),bslcice,bslchydro,bslcbp);
+-
+-	/*Free resources:*/
+-	xDelete<IssmDouble>(areae);
+-
++	/*add ocean area into a global oceanareas vector:*/
++	if(!loads->sealevelloads){
++		oceanareas->SetValue(this->sid,oceanarea,INS_VAL);
++		if(slgeom->issubelement[SLGEOM_OCEAN][this->lid]){
++			int intj=slgeom->subelementmapping[SLGEOM_OCEAN][this->lid];
++			subelementoceanareas->SetValue(intj,oceanarea,INS_VAL);
++		}
++	}
+ }
+ /*}}}*/
+ void       Tria::SealevelchangeConvolution(IssmDouble* sealevelpercpu, GrdLoads* loads, IssmDouble* polarmotionvector,SealevelGeometry* slgeom){ /*{{{*/
+ 
+ 	/*sal green function:*/
++	int* AlphaIndex=NULL;
++	int* AlphaIndexsub[SLGEOM_NUMLOADS];
+ 	IssmDouble* G=NULL;
+ 	IssmDouble* Grot=NULL;
+-	IssmDouble* Gsub[SLGEOM_NUMLOADS];
++	DoubleVecParam* parameter;
+ 	bool computefuture=false;
++	int spatial_component=0;
+ 
+ 	bool sal = false;
+ 	bool viscous = false;
+@@ -7389,53 +7265,18 @@
+ 	this->parameters->FindParam(&nel,MeshNumberofelementsEnum);
+ 
+ 	if(sal){
+-		this->inputs->GetArrayPtr(SealevelchangeGEnum,this->lid,&G,&size);
+-		this->inputs->GetArrayPtr(SealevelchangeGsubelIceEnum,this->lid,&Gsub[SLGEOM_ICE],&size);
+-		this->inputs->GetArrayPtr(SealevelchangeGsubelHydroEnum,this->lid,&Gsub[SLGEOM_WATER],&size);
+-		this->inputs->GetArrayPtr(SealevelchangeGsubelOceanEnum,this->lid,&Gsub[SLGEOM_OCEAN],&size);
++		parameter = static_cast<DoubleVecParam*>(this->parameters->FindParamObject(SealevelchangeGViscoElasticEnum)); _assert_(parameter);
++		parameter->GetParameterValueByPointer((IssmDouble**)&G,NULL);
++
++		this->inputs->GetIntArrayPtr(SealevelchangeAlphaIndexEnum,this->lid,&AlphaIndex,&size);
++		for (int l=0;l<SLGEOM_NUMLOADS;l++) this->inputs->GetIntArrayPtr(slgeom->AlphaIndexEnum(l),this->lid,&AlphaIndexsub[l],&size);
+ 		if (rotation)	this->inputs->GetArrayPtr(SealevelchangeGrotEnum,this->lid,&Grot,&size);
+ 
+-		this->SealevelchangeGxL(sealevelpercpu, G, Gsub, Grot, loads, polarmotionvector, slgeom, nel,percpu=true,SealevelchangeViscousRSLEnum,computefuture=false);
++		this->SealevelchangeGxL(sealevelpercpu, spatial_component=0,AlphaIndex, AlphaIndexsub, NULL, NULL, G, Grot, loads, polarmotionvector, slgeom, nel,percpu=true,SealevelchangeViscousRSLEnum,computefuture=false);
+ 	}
+ 
+ 	return;
+ } /*}}}*/
+-void       Tria::SealevelchangeOceanAverage(GrdLoads* loads, Vector<IssmDouble>* oceanareas, Vector<IssmDouble>* subelementoceanareas, IssmDouble* sealevelpercpu, SealevelGeometry* slgeom){ /*{{{*/
+-
+-	IssmDouble oceanaverage=0;
+-	IssmDouble oceanarea=0;
+-	IssmDouble rho_water;
+-
+-	this->parameters->FindParam(&rho_water,MaterialsRhoSeawaterEnum);
+-
+-	/*retrieve ocean average and area:*/
+-	for(int i=0;i<NUMVERTICES;i++){
+-		oceanaverage+=sealevelpercpu[this->vertices[i]->lid]*slgeom->LoadWeigths[SLGEOM_OCEAN][i][this->lid];
+-	}
+-	#ifdef _ISSM_DEBUG_ 
+-	this->AddInput(SealevelBarystaticOceanLoadEnum,&oceanaverage,P0Enum);
+-	#endif
+-	oceanarea=slgeom->LoadArea[SLGEOM_OCEAN][this->lid];
+-
+-	/*add ocean average in the global sealevelloads vector:*/
+-	if(slgeom->issubelement[SLGEOM_OCEAN][this->lid]){
+-		int intj=slgeom->subelementmapping[SLGEOM_OCEAN][this->lid];
+-		loads->vsubsealevelloads->SetValue(intj,oceanaverage*rho_water,INS_VAL);
+-		loads->vsealevelloads->SetValue(this->sid,0.,INS_VAL);
+-	}
+-	else loads->vsealevelloads->SetValue(this->sid,oceanaverage*rho_water,INS_VAL);
+-
+-	/*add ocean area into a global oceanareas vector:*/
+-	if(!loads->sealevelloads){
+-		oceanareas->SetValue(this->sid,oceanarea,INS_VAL);
+-		if(slgeom->issubelement[SLGEOM_OCEAN][this->lid]){
+-			int intj=slgeom->subelementmapping[SLGEOM_OCEAN][this->lid];
+-			subelementoceanareas->SetValue(intj,oceanarea,INS_VAL);
+-		}
+-	}
+-
+-	return;
+-} /*}}}*/
+ void       Tria::SealevelchangeDeformationConvolution(IssmDouble* sealevelpercpu, GrdLoads* loads, IssmDouble* polarmotionvector,SealevelGeometry* slgeom){ /*{{{*/
+ 
+ 	IssmDouble SealevelGrd[3]={0,0,0};
+@@ -7445,18 +7286,20 @@
+ 	IssmDouble EGrd[3]={0,0,0};
+ 	int nel,nbar;
+ 	bool sal = false;
++	int* AlphaIndex=NULL;
++	int* AzimIndex=NULL;
++	int* AlphaIndexsub[SLGEOM_NUMLOADS];
++	int* AzimIndexsub[SLGEOM_NUMLOADS];
++	int spatial_component=0;
+ 	IssmDouble* G=NULL;
+ 	IssmDouble* GU=NULL;
+-	IssmDouble* GE=NULL;
+-	IssmDouble* GN=NULL;
++	IssmDouble* GH=NULL;
+ 	IssmDouble* Grot=NULL;
+ 	IssmDouble* GUrot=NULL;
+ 	IssmDouble* GNrot=NULL;
+ 	IssmDouble* GErot=NULL;
+-	IssmDouble* Gsub[SLGEOM_NUMLOADS];
+-	IssmDouble* GUsub[SLGEOM_NUMLOADS];
+-	IssmDouble* GNsub[SLGEOM_NUMLOADS];
+-	IssmDouble* GEsub[SLGEOM_NUMLOADS];
++
++	DoubleVecParam* parameter;
+ 	bool computefuture=false;
+ 
+ 	int horiz;
+@@ -7475,27 +7318,22 @@
+ 	this->parameters->FindParam(&planethasocean,SolidearthSettingsGrdOceanEnum);
+ 
+ 	if(sal){
++		this->inputs->GetIntArrayPtr(SealevelchangeAlphaIndexEnum,this->lid,&AlphaIndex,&size);
++		for (int l=0;l<SLGEOM_NUMLOADS;l++) this->inputs->GetIntArrayPtr(slgeom->AlphaIndexEnum(l),this->lid,&AlphaIndexsub[l],&size);
+ 
+-		this->inputs->GetArrayPtr(SealevelchangeGEnum,this->lid,&G,&size);
+-		this->inputs->GetArrayPtr(SealevelchangeGsubelIceEnum,this->lid,&Gsub[SLGEOM_ICE],&size);
+-		this->inputs->GetArrayPtr(SealevelchangeGsubelHydroEnum,this->lid,&Gsub[SLGEOM_WATER],&size);
+-		this->inputs->GetArrayPtr(SealevelchangeGsubelOceanEnum,this->lid,&Gsub[SLGEOM_OCEAN],&size);
++		parameter = static_cast<DoubleVecParam*>(this->parameters->FindParamObject(SealevelchangeGViscoElasticEnum)); _assert_(parameter);
++		parameter->GetParameterValueByPointer((IssmDouble**)&G,NULL);
+ 
+ 		if(elastic){
+-			this->inputs->GetArrayPtr(SealevelchangeGUEnum,this->lid,&GU,&size);
+-			this->inputs->GetArrayPtr(SealevelchangeGUsubelIceEnum,this->lid,&GUsub[SLGEOM_ICE],&size);
+-			this->inputs->GetArrayPtr(SealevelchangeGUsubelHydroEnum,this->lid,&GUsub[SLGEOM_WATER],&size);
+-			this->inputs->GetArrayPtr(SealevelchangeGUsubelOceanEnum,this->lid,&GUsub[SLGEOM_OCEAN],&size);
++			parameter = static_cast<DoubleVecParam*>(this->parameters->FindParamObject(SealevelchangeUViscoElasticEnum)); _assert_(parameter);
++			parameter->GetParameterValueByPointer((IssmDouble**)&GU,NULL);
++
+ 			if(horiz){
+-				this->inputs->GetArrayPtr(SealevelchangeGNEnum,this->lid,&GN,&size);
+-				this->inputs->GetArrayPtr(SealevelchangeGNsubelIceEnum,this->lid,&GNsub[SLGEOM_ICE],&size);
+-				this->inputs->GetArrayPtr(SealevelchangeGNsubelHydroEnum,this->lid,&GNsub[SLGEOM_WATER],&size);
+-				this->inputs->GetArrayPtr(SealevelchangeGNsubelOceanEnum,this->lid,&GNsub[SLGEOM_OCEAN],&size);
++				this->inputs->GetIntArrayPtr(SealevelchangeAzimuthIndexEnum,this->lid,&AzimIndex,&size);
++				for (int l=0;l<SLGEOM_NUMLOADS;l++) this->inputs->GetIntArrayPtr(slgeom->AzimuthIndexEnum(l),this->lid,&AzimIndexsub[l],&size);
+ 
+-				this->inputs->GetArrayPtr(SealevelchangeGEEnum,this->lid,&GE,&size);
+-				this->inputs->GetArrayPtr(SealevelchangeGEsubelIceEnum,this->lid,&GEsub[SLGEOM_ICE],&size);
+-				this->inputs->GetArrayPtr(SealevelchangeGEsubelHydroEnum,this->lid,&GEsub[SLGEOM_WATER],&size);
+-				this->inputs->GetArrayPtr(SealevelchangeGEsubelOceanEnum,this->lid,&GEsub[SLGEOM_OCEAN],&size);
++				parameter = static_cast<DoubleVecParam*>(this->parameters->FindParamObject(SealevelchangeHViscoElasticEnum)); _assert_(parameter);
++				parameter->GetParameterValueByPointer((IssmDouble**)&GH,NULL);
+ 			}
+ 			if (rotation) {
+ 				this->inputs->GetArrayPtr(SealevelchangeGrotEnum,this->lid,&Grot,&size);
+@@ -7506,13 +7344,14 @@
+ 				}
+ 			}
+ 		}
+-		this->SealevelchangeGxL(&RSLGrd[0],G, Gsub, Grot, loads, polarmotionvector, slgeom, nel,percpu=false,SealevelchangeViscousRSLEnum,computefuture=true);
+ 
++		this->SealevelchangeGxL(&RSLGrd[0],spatial_component=0, AlphaIndex, AlphaIndexsub,NULL, NULL,G, Grot, loads, polarmotionvector, slgeom, nel,percpu=false,SealevelchangeViscousRSLEnum,computefuture=true);
++
+ 		if(elastic){
+-			this->SealevelchangeGxL(&UGrd[0],GU, GUsub, GUrot, loads, polarmotionvector, slgeom, nel,percpu=false,SealevelchangeViscousUEnum,computefuture=true);
++			this->SealevelchangeGxL(&UGrd[0],spatial_component=0, AlphaIndex, AlphaIndexsub,NULL, NULL, GU, GUrot, loads, polarmotionvector, slgeom, nel,percpu=false,SealevelchangeViscousUEnum,computefuture=true);
+ 			if(horiz){
+-				this->SealevelchangeGxL(&NGrd[0],GN, GNsub, GNrot, loads, polarmotionvector, slgeom, nel,percpu=false,SealevelchangeViscousNEnum,computefuture=true);
+-				this->SealevelchangeGxL(&EGrd[0],GE, GEsub, GErot, loads, polarmotionvector, slgeom, nel,percpu=false,SealevelchangeViscousEEnum,computefuture=true);
++				this->SealevelchangeGxL(&NGrd[0],spatial_component=1,AlphaIndex, AlphaIndexsub,AzimIndex,AzimIndexsub,GH, GNrot, loads, polarmotionvector, slgeom, nel,percpu=false,SealevelchangeViscousNEnum,computefuture=true);
++				this->SealevelchangeGxL(&EGrd[0],spatial_component=2,AlphaIndex, AlphaIndexsub,AzimIndex,AzimIndexsub,GH, GErot, loads, polarmotionvector, slgeom, nel,percpu=false,SealevelchangeViscousEEnum,computefuture=true);
+ 			}
+ 		}
+ 	}
+@@ -7537,18 +7376,31 @@
+ 	}
+ 
+ } /*}}}*/
+-void       Tria::SealevelchangeGxL(IssmDouble* grdfieldout, IssmDouble* G, IssmDouble** Gsub, IssmDouble* Grot, GrdLoads* loads, IssmDouble* polarmotionvector, SealevelGeometry* slgeom, int nel, bool percpu, int viscousenum, bool computefuture) { /*{{{*/
++void       Tria::SealevelchangeGxL(IssmDouble* grdfieldout, int spatial_component, int* AlphaIndex, int** AlphaIndexsub, int* AzimIndex, int**AzimIndexsub, IssmDouble* G, IssmDouble* Grot, GrdLoads* loads, IssmDouble* polarmotionvector, SealevelGeometry* slgeom, int nel, bool percpu, int viscousenum, bool computefuture) { /*{{{*/
+ 
+ 	//This function performs the actual convolution between Green functions and surface Loads for a particular grd field
+ 
+ 	IssmDouble* grdfield=NULL;
+-	int i,e,l,t,nbar;
+-	bool computeviscous=false;
++	int i,e,l,t,a, index, nbar;
+ 	bool rotation=false;
+-	IssmDouble* viscousfield=NULL;
++	IssmDouble* Centroid_loads=NULL;
++	IssmDouble* Centroid_loads_copy=NULL;
++	IssmDouble* Subelement_loads[SLGEOM_NUMLOADS];
++	IssmDouble* Subelement_loads_copy[SLGEOM_NUMLOADS];
++	IssmDouble* horiz_projection=NULL;
++	IssmDouble* horiz_projectionsub[SLGEOM_NUMLOADS];
+ 	int nt=1; //important, ensures there is a defined value if computeviscous is false
++
++	//viscous
++	bool computeviscous=false;
+ 	int viscousindex=0; //important
+ 	int viscousnumsteps=1; //important
++	IssmDouble* viscousfield=NULL;
++	IssmDouble* grdfieldinterp=NULL;
++	IssmDouble* viscoustimes=NULL;
++	IssmDouble  final_time;
++	IssmDouble  lincoeff;
++	IssmDouble  timeacc;
+ 
+ 	this->parameters->FindParam(&computeviscous,SolidearthSettingsViscousEnum);
+ 	this->parameters->FindParam(&rotation,SolidearthSettingsRotationEnum);
+@@ -7555,9 +7407,14 @@
+ 	if(computeviscous){
+ 		this->parameters->FindParam(&viscousnumsteps,SealevelchangeViscousNumStepsEnum);
+ 		this->parameters->FindParam(&viscousindex,SealevelchangeViscousIndexEnum);
++		this->parameters->FindParam(&viscoustimes,NULL,SealevelchangeViscousTimesEnum);
++		this->parameters->FindParam(&final_time,TimesteppingFinalTimeEnum);
++		this->parameters->FindParam(&timeacc,SolidearthSettingsTimeAccEnum);
++		this->inputs->GetArrayPtr(viscousenum,this->lid,&viscousfield,NULL);
+ 		if(computefuture) {
+ 			nt=viscousnumsteps-viscousindex+2; //number of time steps remaining to reach final_time, +1 is sufficient with no adaptative time stepping, +2 necessary otherwise; we assume the safe choice here for the sake of simplicity
+ 			if (nt>viscousnumsteps) nt=viscousnumsteps;
++			grdfieldinterp=xNewZeroInit<IssmDouble>(3*viscousnumsteps); 
+ 		}
+ 		else nt=1;
+ 	}
+@@ -7577,56 +7434,104 @@
+ 		}
+ 	}
+ 
++	//Determine loads /*{{{*/
++	Centroid_loads=xNewZeroInit<IssmDouble>(nel);
++	for (e=0;e<nel;e++){
++		Centroid_loads[e]=loads->loads[e];
++	}
++	for(l=0;l<SLGEOM_NUMLOADS;l++){
++		nbar=slgeom->nbar[l];
++		Subelement_loads[l]=xNewZeroInit<IssmDouble>(nbar);
++		for (e=0;e<nbar;e++){
++			Subelement_loads[l][e]=(loads->subloads[l][e]);
++		}
++	}
++	if(loads->sealevelloads){
++		for (e=0;e<nel;e++){
++			Centroid_loads[e]+=(loads->sealevelloads[e]);
++		}
++		nbar=slgeom->nbar[SLGEOM_OCEAN];
++		for (e=0;e<nbar;e++){
++			Subelement_loads[SLGEOM_OCEAN][e]+=(loads->subsealevelloads[e]);
++		}
++	}
+ 
+-	if(loads->sealevelloads){ // general case: loads + sealevel loads
+-		for(i=0;i<NUMVERTICES;i++) {
+-			if(slgeom->lids[this->vertices[i]->lid]!=this->lid)continue;
+-			for (e=0;e<nel;e++){
+-				for(t=0;t<nt;t++){
+-					int index=i*nel*viscousnumsteps+e*viscousnumsteps+t;
+-					grdfield[i*nt+t]+=G[index]*(loads->sealevelloads[e]+loads->loads[e]);
+-				}
++	//Copy loads if dealing with a horizontal component: the result will need to be projected against the North or East axis for each vertex
++	if (spatial_component!=0){
++		horiz_projection=xNewZeroInit<IssmDouble>(3*nel);
++		Centroid_loads_copy=xNewZeroInit<IssmDouble>(nel);
++		for (e=0;e<nel;e++){
++			Centroid_loads_copy[e]=Centroid_loads[e];
++		}
++
++		for(l=0;l<SLGEOM_NUMLOADS;l++){
++			nbar=slgeom->nbar[l];
++			Subelement_loads_copy[l]=xNewZeroInit<IssmDouble>(nbar);
++			horiz_projectionsub[l]=xNewZeroInit<IssmDouble>(3*nbar);
++			for (e=0;e<nbar;e++){
++				Subelement_loads_copy[l][e]=Subelement_loads[l][e];
+ 			}
+-			for(l=0;l<SLGEOM_NUMLOADS;l++){
+-				nbar=slgeom->nbar[l];
+-				for (e=0;e<nbar;e++){
+-					for(t=0;t<nt;t++){
+-						int index=i*nbar*viscousnumsteps+e*viscousnumsteps+t;
+-						grdfield[i*nt+t]+=Gsub[l][index]*(loads->subloads[l][e]);
+-					}
++		}
++	}
++	/*}}}*/
++
++	//Convolution
++	for(i=0;i<NUMVERTICES;i++) { /*{{{*/
++		if(slgeom->lids[this->vertices[i]->lid]!=this->lid)continue;
++
++		if (spatial_component!=0){ //horizontals /*{{{*/
++			//GxL needs to be projected on the right axis before summation into the grd field
++			//here we apply the projection scalar to the load prior to the actual convolution loop for more efficiency
++			if (spatial_component==1){ //north
++				for (e=0;e<nel;e++){
++					horiz_projection[i*nel+e]=cos(2.0*M_PI*reCast<IssmDouble,int>(AzimIndex[i*nel+e])/65535.0); // 65535=2^16-1 = max value of 16 bits unsigned int
+ 				}
+-				if(l==SLGEOM_OCEAN){
++				for(l=0;l<SLGEOM_NUMLOADS;l++){
++					nbar=slgeom->nbar[l];
+ 					for (e=0;e<nbar;e++){
+-						for(t=0;t<nt;t++){
+-							int index=i*nbar*viscousnumsteps+e*viscousnumsteps+t;
+-							grdfield[i*nt+t]+=Gsub[l][index]*(loads->subsealevelloads[e]);
+-						}
++						horiz_projectionsub[l][i*nbar+e]=cos(2.0*M_PI*reCast<IssmDouble,int>(AzimIndexsub[l][i*nbar+e])/65535.0);;
+ 					}
+ 				}
+ 			}
+-		}
+-	}
+-	else{  //this is the initial convolution where only loads are provided
+-		for(i=0;i<NUMVERTICES;i++) {
+-			if(slgeom->lids[this->vertices[i]->lid]!=this->lid)continue;
+-			for (e=0;e<nel;e++){
+-				for(t=0;t<nt;t++){
+-					int index=i*nel*viscousnumsteps+e*viscousnumsteps+t;
+-					grdfield[i*nt+t]+=G[index]*(loads->loads[e]);
++			else if (spatial_component==2){ //east
++				for (e=0;e<nel;e++){
++					horiz_projection[i*nel+e]=sin(2.0*M_PI*reCast<IssmDouble,int>(AzimIndex[i*nel+e])/65535.0);
+ 				}
++				for(l=0;l<SLGEOM_NUMLOADS;l++){
++					nbar=slgeom->nbar[l];
++					for (e=0;e<nbar;e++){
++						horiz_projectionsub[l][i*nbar+e]=sin(2.0*M_PI*reCast<IssmDouble,int>(AzimIndexsub[l][i*nbar+e])/65535.0);;
++					}
++				}
+ 			}
++			for (e=0;e<nel;e++) Centroid_loads[e]=Centroid_loads_copy[e]*horiz_projection[i*nel+e];
+ 			for(l=0;l<SLGEOM_NUMLOADS;l++){
+ 				nbar=slgeom->nbar[l];
+ 				for (e=0;e<nbar;e++){
+-					for(t=0;t<nt;t++){
+-						int index=i*nbar*viscousnumsteps+e*viscousnumsteps+t;
+-						grdfield[i*nt+t]+=Gsub[l][index]*(loads->subloads[l][e]);
+-					}
++					Subelement_loads[l][e]=Subelement_loads_copy[l][e]*horiz_projectionsub[l][i*nbar+e];
+ 				}
+ 			}
++		} /*}}}*/
++
++		for (e=0;e<nel;e++){
++			for(t=0;t<nt;t++){
++				a=AlphaIndex[i*nel+e];
++				grdfield[i*nt+t]+=G[a*viscousnumsteps+t]*Centroid_loads[e];
++			}
+ 		}
+-	}
++		for(l=0;l<SLGEOM_NUMLOADS;l++){
++			nbar=slgeom->nbar[l];
++			for (e=0;e<nbar;e++){
++				for(t=0;t<nt;t++){
++					a=AlphaIndexsub[l][i*nbar+e];
++					grdfield[i*nt+t]+=G[a*viscousnumsteps+t]*Subelement_loads[l][e];
++				}
++			}
++		}
++	} /*}}}*/
+ 
++
++
+ 	if(computeviscous){ /*{{{*/
+ 		// we need to do up to 3 things (* = only if computefuture)
+ 		// 1*: add new grdfield contribution to the viscous stack for future time steps
+@@ -7633,19 +7538,8 @@
+ 		// 2: collect viscous grdfield from past loads due at present-day and add it to grdfield[current_time]
+ 		// 3*: subtract from viscous stack the grdfield that has already been accounted for so we don't add it again at the next time step
+ 
+-		IssmDouble* grdfieldinterp=NULL;
+-		IssmDouble* viscoustimes=NULL;
+-		IssmDouble  final_time;
+-		IssmDouble  lincoeff;
+-		IssmDouble  timeacc;
+-
+-		this->parameters->FindParam(&viscoustimes,NULL,SealevelchangeViscousTimesEnum);
+-		this->parameters->FindParam(&final_time,TimesteppingFinalTimeEnum);
+-		this->parameters->FindParam(&timeacc,SolidearthSettingsTimeAccEnum);
+-		this->inputs->GetArrayPtr(viscousenum,this->lid,&viscousfield,NULL);
+ 		/* Map new grdfield generated by present-day loads onto viscous time vector*/
+ 		if(computefuture){
+-			grdfieldinterp=xNewZeroInit<IssmDouble>(3*viscousnumsteps); 
+ 			//viscousindex time and first time step of grdfield coincide, so just copy that value
+ 			for(int i=0;i<NUMVERTICES;i++){
+ 				if(slgeom->lids[this->vertices[i]->lid]!=this->lid)continue;
+@@ -7657,7 +7551,8 @@
+ 				for(int t=viscousindex+1;t<viscousnumsteps;t++){
+ 					for(int i=0;i<NUMVERTICES;i++){
+ 						if(slgeom->lids[this->vertices[i]->lid]!=this->lid)continue;
+-						grdfieldinterp[i*viscousnumsteps+t]=  (1-lincoeff)*grdfield[i*nt+(t-viscousindex-1)]+lincoeff*grdfield[i*nt+(t-viscousindex)];
++						grdfieldinterp[i*viscousnumsteps+t] = (1-lincoeff)*grdfield[i*nt+(t-viscousindex-1)]
++											 +lincoeff*grdfield[i*nt+(t-viscousindex)];
+ 					}
+ 				}
+ 			}
+@@ -7671,11 +7566,13 @@
+ 
+ 		/*update viscous stack with future deformation from present load: */
+ 		if(computefuture){
+-			for(int t=viscousnumsteps-1;t>=viscousindex;t--){
++			for(int t=viscousnumsteps-1;t>=viscousindex;t--){ //we need to go backwards so as not to zero out viscousfield[i*viscousnumsteps+viscousindex] until the end
+ 				for(int i=0;i<NUMVERTICES;i++){
+ 					if(slgeom->lids[this->vertices[i]->lid]!=this->lid)continue;
+ 					//offset viscousfield to remove all deformation that has already been added
+-					viscousfield[i*viscousnumsteps+t]+=grdfieldinterp[i*viscousnumsteps+t]-grdfieldinterp[i*viscousnumsteps+viscousindex]-viscousfield[i*viscousnumsteps+viscousindex];
++					viscousfield[i*viscousnumsteps+t]+=grdfieldinterp[i*viscousnumsteps+t]
++									  -grdfieldinterp[i*viscousnumsteps+viscousindex]
++									  -viscousfield[i*viscousnumsteps+viscousindex];
+ 				}
+ 			}
+ 			/*Save viscous stack now that we updated the values:*/
+@@ -7684,9 +7581,6 @@
+ 			/*Free resources:*/
+ 			xDelete<IssmDouble>(grdfieldinterp);
+ 		}
+-
+-		/*Free allocatoins:*/
+-		xDelete<IssmDouble>(viscoustimes);
+ 	} 
+ 	/*}}}*/
+ 
+@@ -7701,13 +7595,30 @@
+ 	else{
+ 		for(i=0;i<NUMVERTICES;i++) grdfieldout[i]=grdfield[i*nt+0];
+ 	}
+-	/*Free resources:*/
++	//free resources
+ 	xDelete<IssmDouble>(grdfield);
++	xDelete<IssmDouble>(Centroid_loads);
++	for(l=0;l<SLGEOM_NUMLOADS;l++) xDelete<IssmDouble>(Subelement_loads[l]);
++	if (spatial_component!=0){
++		xDelete<IssmDouble>(horiz_projection);
++		xDelete<IssmDouble>(Centroid_loads_copy);
++		for(l=0;l<SLGEOM_NUMLOADS;l++) {
++			xDelete<IssmDouble>(Subelement_loads_copy[l]);
++			xDelete<IssmDouble>(horiz_projectionsub[l]);
++		}
++	}
++	if (computeviscous){
++		xDelete<IssmDouble>(viscoustimes);
++		if (computefuture){
++			xDelete<IssmDouble>(grdfieldinterp);
++		}
++	}
+ 
+ } /*}}}*/
+ 
+ void       Tria::SealevelchangeShift(GrdLoads* loads,  IssmDouble offset, SealevelGeometry* slgeom){ /*{{{*/
+ 
++	offset*=slgeom->LoadArea[SLGEOM_OCEAN][this->lid]; //kg.m^-2 to kg 
+ 	if(slgeom->isoceanin[this->lid]){
+ 		if(slgeom->issubelement[SLGEOM_OCEAN][this->lid]){
+ 			int intj=slgeom->subelementmapping[SLGEOM_OCEAN][this->lid];
+Index: ../trunk-jpl/src/c/classes/Elements/Tria.h
+===================================================================
+--- ../trunk-jpl/src/c/classes/Elements/Tria.h	(revision 27130)
++++ ../trunk-jpl/src/c/classes/Elements/Tria.h	(revision 27131)
+@@ -170,7 +170,7 @@
+ 		#endif
+ 		#ifdef _HAVE_SEALEVELCHANGE_
+ 		void       GiaDeflection(Vector<IssmDouble>* wg,Vector<IssmDouble>* dwgdt,Matlitho* litho, IssmDouble* x,IssmDouble* y);
+-		void       SealevelchangeGeometryInitial(IssmDouble* xxe, IssmDouble* yye, IssmDouble* zze, IssmDouble* areae);
++		void       SealevelchangeGeometryInitial(IssmDouble* xxe, IssmDouble* yye, IssmDouble* zze, IssmDouble* areae, int* lids);
+ 		void       SealevelchangeGeometrySubElementKernel(SealevelGeometry* slgeom);
+ 		void       SealevelchangeGeometrySubElementLoads(SealevelGeometry* slgeom, IssmDouble* areae);
+ 		void       SealevelchangeGeometryCentroidLoads(SealevelGeometry* slgeom, IssmDouble* xxe, IssmDouble* yye, IssmDouble* zze, IssmDouble* areae);
+@@ -243,7 +243,7 @@
+ 		void           StabilizationParameterAnisotropic(IssmDouble* tau_parameter_ansiotropic, IssmDouble u, IssmDouble v, IssmDouble w, IssmDouble hx, IssmDouble hy, IssmDouble hz, IssmDouble kappa){_error_("not implemented yet");};
+ 		void           UpdateConstraintsExtrudeFromBase(void);
+ 		void           UpdateConstraintsExtrudeFromTop(void);
+-		void           SealevelchangeGxL(IssmDouble* sealevel, IssmDouble* G, IssmDouble** Gsub, IssmDouble* Grot, GrdLoads* loads, IssmDouble* polarmotionvector,SealevelGeometry* slgeom, int nel, bool percpu,int stackenum,bool computefuture);
++		void           SealevelchangeGxL(IssmDouble* grdfieldout, int spatial_component, int* AlphaIndex, int** AlphaIndexsub, int* AzimIndex, int**AzimIndexsub, IssmDouble* G, IssmDouble* Grot, GrdLoads* loads, IssmDouble* polarmotionvector, SealevelGeometry* slgeom, int nel, bool percpu, int viscousenum, bool computefuture);
+ 		/*}}}*/
+ 
+ };
+Index: ../trunk-jpl/src/c/classes/GrdLoads.cpp
+===================================================================
+--- ../trunk-jpl/src/c/classes/GrdLoads.cpp	(revision 27130)
++++ ../trunk-jpl/src/c/classes/GrdLoads.cpp	(revision 27131)
+@@ -89,9 +89,10 @@
+ } /*}}}*/
+ void GrdLoads::SHDegree2Coefficients(IssmDouble* deg2coeff, FemModel* femmodel, SealevelGeometry* slgeom){ /*{{{*/
+ 
+-	IssmDouble area,re, S;
++	IssmDouble re, S;
+ 	int ylmindex, intj;
+ 	IssmDouble deg2coeff_local[5];
++	//IssmDouble area;
+ 
+ 	femmodel->parameters->FindParam(&re,SolidearthPlanetRadiusEnum);
+ 
+@@ -105,11 +106,10 @@
+ 
+ 		if(sealevelloads) S+=sealevelloads[element->Sid()];
+ 		if(S!=0){
+-			element->Element::GetInputValue(&area,AreaEnum);
+ 
+ 			for (int c=0;c<5;c++){ //degree l=2 has 2*l+1=5 coefficients: 2,0; 2,1cos; 2,1sin; 2,2cos; 2,2sin
+ 				ylmindex=(4+c)*slgeom->localnel+element->lid; // starting at index=l^2
+-				deg2coeff_local[c] += S*area/re/re*slgeom->Ylm[ylmindex];
++				deg2coeff_local[c] += S/re/re*slgeom->Ylm[ylmindex];
+ 			}
+ 		}
+ 		//add loads on subelement barycenters
+@@ -120,10 +120,10 @@
+ 				S+=subloads[i][intj];
+ 				if(i==SLGEOM_OCEAN && sealevelloads) S+=subsealevelloads[intj];
+ 				if(S!=0){
+-					area=slgeom->area_subel[i][intj];
++					//area=slgeom->area_subel[i][intj];
+ 					for (int c=0;c<5;c++){ //degree l=2 has 2*l+1=5 coefficients
+ 						ylmindex=(4+c)*slgeom->localnel+element->lid; // starting at index=l^2
+-						deg2coeff_local[c] += S*area/re/re*slgeom->Ylm_subel[i][ylmindex];
++						deg2coeff_local[c] += S/re/re*slgeom->Ylm_subel[i][ylmindex];
+ 					}
+ 				}
+ 			}
+Index: ../trunk-jpl/src/c/classes/SealevelGeometry.cpp
+===================================================================
+--- ../trunk-jpl/src/c/classes/SealevelGeometry.cpp	(revision 27130)
++++ ../trunk-jpl/src/c/classes/SealevelGeometry.cpp	(revision 27131)
+@@ -114,54 +114,30 @@
+ 	/*Also, we'll need the barycentre associated areas:*/
+ 
+ } /*}}}*/
+-int SealevelGeometry::GEnum(int l){ /*{{{*/
++int SealevelGeometry::AlphaIndexEnum(int l){ /*{{{*/
+ 
+ 	int output = -1;
+ 	switch(l){
+-		case SLGEOM_OCEAN: output=SealevelchangeGsubelOceanEnum; break;
+-		case SLGEOM_ICE:   output=SealevelchangeGsubelIceEnum;   break;
+-		case SLGEOM_WATER: output=SealevelchangeGsubelHydroEnum; break;
++		case SLGEOM_OCEAN: output=SealevelchangeAlphaIndexOceanEnum; break;
++		case SLGEOM_ICE:   output=SealevelchangeAlphaIndexIceEnum;   break;
++		case SLGEOM_WATER: output=SealevelchangeAlphaIndexHydroEnum; break;
+ 		default: _error_("not supported");
+ 	}
+ 	return output;
+ 
+ } /*}}}*/
+-int SealevelGeometry::GUEnum(int l){ /*{{{*/
++int SealevelGeometry::AzimuthIndexEnum(int l){ /*{{{*/
+ 
+ 	int output = -1;
+ 	switch(l){
+-		case SLGEOM_OCEAN: output=SealevelchangeGUsubelOceanEnum; break;
+-		case SLGEOM_ICE:   output=SealevelchangeGUsubelIceEnum;   break;
+-		case SLGEOM_WATER: output=SealevelchangeGUsubelHydroEnum; break;
++		case SLGEOM_OCEAN: output=SealevelchangeAzimuthIndexOceanEnum; break;
++		case SLGEOM_ICE:   output=SealevelchangeAzimuthIndexIceEnum;   break;
++		case SLGEOM_WATER: output=SealevelchangeAzimuthIndexHydroEnum; break;
+ 		default: _error_("not supported");
+ 	}
+ 	return output;
+ 
+ } /*}}}*/
+-int SealevelGeometry::GNEnum(int l){ /*{{{*/
+-
+-	int output = -1;
+-	switch(l){
+-		case SLGEOM_OCEAN: output=SealevelchangeGNsubelOceanEnum; break;
+-		case SLGEOM_ICE:   output=SealevelchangeGNsubelIceEnum;   break;
+-		case SLGEOM_WATER: output=SealevelchangeGNsubelHydroEnum; break;
+-		default: _error_("not supported");
+-	}
+-
+-	return output;
+-} /*}}}*/
+-int SealevelGeometry::GEEnum(int l){ /*{{{*/
+-
+-	int output = -1;
+-	switch(l){
+-		case SLGEOM_OCEAN: output=SealevelchangeGEsubelOceanEnum; break;
+-		case SLGEOM_ICE:   output=SealevelchangeGEsubelIceEnum;   break;
+-		case SLGEOM_WATER: output=SealevelchangeGEsubelHydroEnum; break;
+-		default: _error_("not supported");
+-	}
+-	return output;
+-
+-} /*}}}*/
+ void SealevelGeometry::BuildSphericalHarmonics(){ /*{{{*/
+ 	//builds spherical harmonics functions for degrees 0, 1, 2 on centroids/barycenters
+ 	//0: used for global average
+Index: ../trunk-jpl/src/c/classes/SealevelGeometry.h
+===================================================================
+--- ../trunk-jpl/src/c/classes/SealevelGeometry.h	(revision 27130)
++++ ../trunk-jpl/src/c/classes/SealevelGeometry.h	(revision 27131)
+@@ -44,10 +44,8 @@
+ 		~SealevelGeometry();
+ 		void InitializeMappingsAndBarycentres(void);
+ 		void Assemble(void);
+-		int GEnum(int l);
+-		int GUEnum(int l);
+-		int GNEnum(int l);
+-		int GEEnum(int l);
++		int AlphaIndexEnum(int l);
++		int AzimuthIndexEnum(int l);
+ 		void BuildSphericalHarmonics(void);
+ };
+ #endif  /* _SEALEVELGEOMETRY_H_ */
+Index: ../trunk-jpl/src/c/cores/sealevelchange_core.cpp
+===================================================================
+--- ../trunk-jpl/src/c/cores/sealevelchange_core.cpp	(revision 27130)
++++ ../trunk-jpl/src/c/cores/sealevelchange_core.cpp	(revision 27131)
+@@ -28,6 +28,7 @@
+ void ConserveOceanMass(FemModel* femmodel,GrdLoads* loads, IssmDouble offset, SealevelGeometry* slgeom);
+ void ivins_deformation_core(FemModel* femmodel);
+ IssmDouble* CombineLoads(IssmDouble* load,IssmDouble* subload,FemModel* femmodel, SealevelGeometry* slgeom,int loadtype,int nel);
++void slc_geometry_cleanup(SealevelGeometry* slgeom, FemModel* femmodel);
+ /*}}}*/
+ 
+ /*main cores:*/
+@@ -82,7 +83,7 @@
+ 	femmodel->profiler->Stop(SLRCORE);
+ 
+ 	/*Free resources:*/
+-	delete slgeom;
++	slc_geometry_cleanup(slgeom, femmodel);
+ }
+ /*}}}*/
+ void              solidearthexternal_core(FemModel* femmodel){ /*{{{*/
+@@ -360,7 +361,7 @@
+ 
+ 		//Conserve ocean mass: 
+ 		oceanaverage=SealevelloadsOceanAverage(loads, oceanareas,subelementoceanareas, totaloceanarea);
+-		ConserveOceanMass(femmodel,loads,barycontrib->Total()/totaloceanarea - oceanaverage,slgeom);
++		ConserveOceanMass(femmodel,loads,barycontrib->Total()/totaloceanarea -oceanaverage,slgeom);
+ 
+ 		//broadcast sea level loads 
+ 		loads->BroadcastSealevelLoads();
+@@ -442,7 +443,6 @@
+ 	delete subelementoceanareas;
+ 	delete oceanareas;
+ 	xDelete<IssmDouble>(sealevelpercpu); 
+-
+ }
+ /*}}}*/
+ void              dynstr_core(FemModel* femmodel){ /*{{{*/
+@@ -587,6 +587,7 @@
+ 	IssmDouble *zze    = NULL;
+ 	IssmDouble* areae  = NULL;
+ 	int  nel;
++	int* lids;
+ 	int  grdmodel=0;
+ 
+ 	/*retrieve parameters:*/
+@@ -602,10 +603,23 @@
+ 	/*recover x,y,z and areas from elements: */
+ 	ElementCoordinatesx(&xxe,&yye,&zze,&areae,femmodel->elements);
+ 
++
++	/*Compute element ids, used to speed up computations in convolution phase:{{{*/
++	lids=xNew<int>(femmodel->vertices->Size());
++
++	for(Object* & object : femmodel->elements->objects){
++		Element*   element=xDynamicCast<Element*>(object);
++		for(int i=0;i<3;i++){
++			lids[element->vertices[i]->lid]=element->lid;
++		}
++	}
++
++	/*}}}*/
++
+ 	/*Run sealevel geometry routine in elements:*/
+ 	for(Object* & object : femmodel->elements->objects){
+ 		Element*   element=xDynamicCast<Element*>(object);
+-		element->SealevelchangeGeometryInitial(xxe,yye,zze,areae);
++		element->SealevelchangeGeometryInitial(xxe,yye,zze,areae,lids);
+ 	}
+ 
+ 	femmodel->parameters->AddObject(new DoubleVecParam(XxeEnum,xxe,nel));
+@@ -624,6 +638,7 @@
+ 	xDelete<IssmDouble>(yye);
+ 	xDelete<IssmDouble>(zze);
+ 	xDelete<IssmDouble>(areae);
++	xDelete(lids);
+ 
+ 	return;
+ 
+@@ -641,11 +656,13 @@
+ 
+ 	int nel;
+ 	int  grdmodel=0;
++	int isgrd=0;
+ 	SealevelGeometry* slgeom=NULL;
+ 
+ 	/*early return?:*/
+ 	femmodel->parameters->FindParam(&grdmodel,GrdModelEnum);
+-	if(grdmodel==IvinsEnum) return NULL;
++	femmodel->parameters->FindParam(&isgrd,SolidearthSettingsGRDEnum);
++	if(grdmodel!=ElasticEnum || !isgrd) return NULL;
+ 
+ 	/*retrieve parameters:*/
+ 	femmodel->parameters->FindParam(&xxe,&nel,XxeEnum);
+@@ -700,7 +717,25 @@
+ 	return slgeom;
+ 
+ }/*}}}*/
++void slc_geometry_cleanup(SealevelGeometry* slgeom, FemModel* femmodel){  /*{{{*/
++	int  grdmodel=0;
++	int isgrd=0;
++	int horiz=0;
+ 
++	/*early return?:*/
++	femmodel->parameters->FindParam(&grdmodel,GrdModelEnum);
++	femmodel->parameters->FindParam(&isgrd,SolidearthSettingsGRDEnum);
++	femmodel->parameters->FindParam(&horiz,SolidearthSettingsHorizEnum);
++	if(grdmodel!=ElasticEnum || !isgrd) return;
++
++	for (int l=0;l<SLGEOM_NUMLOADS;l++){
++		femmodel->inputs->DeleteInput(slgeom->AlphaIndexEnum(l));
++		if (horiz) femmodel->inputs->DeleteInput(slgeom->AzimuthIndexEnum(l));
++	}
++
++	delete slgeom;
++} /*}}}*/
++
+ /*subroutines:*/
+ bool slcconvergence(Vector<IssmDouble>* RSLg,Vector<IssmDouble>* RSLg_old,IssmDouble eps_rel,IssmDouble eps_abs){ /*{{{*/
+ 
+@@ -756,9 +791,6 @@
+ 	Vector<IssmDouble>* vsealevelloadsvolume=loads->vsealevelloads->Duplicate();
+ 	Vector<IssmDouble>* vsubsealevelloadsvolume=loads->vsubsealevelloads->Duplicate();
+ 
+-	vsealevelloadsvolume->PointwiseMult(loads->vsealevelloads,oceanareas);
+-	vsubsealevelloadsvolume->PointwiseMult(loads->vsubsealevelloads,suboceanareas); 
+-
+ 	vsealevelloadsvolume->Sum(&sealevelloadsaverage);
+ 	vsubsealevelloadsvolume->Sum(&subsealevelloadsaverage);
+ 	delete vsealevelloadsvolume; 
+@@ -964,6 +996,7 @@
+ 
+ 		/*free allocations:*/
+ 		xDelete<IssmDouble>(viscoustimes);
++		if (rotation) 	xDelete<IssmDouble>(viscouspolarmotion);
+ 	}
+ 
+ 
+Index: ../trunk-jpl/src/c/shared/Enum/Enum.vim
+===================================================================
+--- ../trunk-jpl/src/c/shared/Enum/Enum.vim	(revision 27130)
++++ ../trunk-jpl/src/c/shared/Enum/Enum.vim	(revision 27131)
+@@ -288,7 +288,9 @@
+ syn keyword cConstant LoveGravitationalConstantEnum
+ syn keyword cConstant LoveInnerCoreBoundaryEnum
+ syn keyword cConstant LoveComplexComputationEnum
+-syn keyword cConstant LoveIntStepsPerLayerEnum
++syn keyword cConstant LoveQuadPrecisionEnum
++syn keyword cConstant LoveMinIntegrationStepsEnum
++syn keyword cConstant LoveMaxIntegrationdrEnum
+ syn keyword cConstant LoveKernelsEnum
+ syn keyword cConstant LoveMu0Enum
+ syn keyword cConstant LoveNfreqEnum
+@@ -300,6 +302,9 @@
+ syn keyword cConstant LoveStartingLayerEnum
+ syn keyword cConstant LoveUnderflowTolEnum
+ syn keyword cConstant LovePostWidderThresholdEnum
++syn keyword cConstant LoveDebugEnum
++syn keyword cConstant LoveHypergeomNZEnum
++syn keyword cConstant LoveHypergeomNAlphaEnum
+ syn keyword cConstant MassFluxSegmentsEnum
+ syn keyword cConstant MassFluxSegmentsPresentEnum
+ syn keyword cConstant MasstransportHydrostaticAdjustmentEnum
+@@ -386,6 +391,8 @@
+ syn keyword cConstant SolidearthSettingsCrossSectionShapeEnum
+ syn keyword cConstant SolidearthSettingsElasticEnum
+ syn keyword cConstant SolidearthSettingsViscousEnum
++syn keyword cConstant SolidearthSettingsSatelliteGraviEnum
++syn keyword cConstant SolidearthSettingsDegreeAccuracyEnum
+ syn keyword cConstant SealevelchangeGeometryDoneEnum
+ syn keyword cConstant SealevelchangeViscousNumStepsEnum
+ syn keyword cConstant SealevelchangeViscousTimesEnum
+@@ -408,6 +415,9 @@
+ syn keyword cConstant LoadLoveLEnum
+ syn keyword cConstant LoveTimeFreqEnum
+ syn keyword cConstant LoveIsTimeEnum
++syn keyword cConstant LoveHypergeomZEnum
++syn keyword cConstant LoveHypergeomTable1Enum
++syn keyword cConstant LoveHypergeomTable2Enum
+ syn keyword cConstant SealevelchangeGSelfAttractionEnum
+ syn keyword cConstant SealevelchangeGViscoElasticEnum
+ syn keyword cConstant SealevelchangeUViscoElasticEnum
+@@ -850,6 +860,7 @@
+ syn keyword cConstant SamplingTauEnum
+ syn keyword cConstant SealevelEnum
+ syn keyword cConstant SealevelGRDEnum
++syn keyword cConstant SatGraviGRDEnum
+ syn keyword cConstant SealevelBarystaticMaskEnum
+ syn keyword cConstant SealevelBarystaticIceMaskEnum
+ syn keyword cConstant SealevelBarystaticIceWeightsEnum
+@@ -889,27 +900,21 @@
+ syn keyword cConstant SealevelUEastEsaEnum
+ syn keyword cConstant SealevelUNorthEsaEnum
+ syn keyword cConstant SealevelchangeIndicesEnum
+-syn keyword cConstant SealevelchangeGEnum
+-syn keyword cConstant SealevelchangeGUEnum
+-syn keyword cConstant SealevelchangeGEEnum
+-syn keyword cConstant SealevelchangeGNEnum
++syn keyword cConstant SealevelchangeAlphaIndexEnum
++syn keyword cConstant SealevelchangeAzimuthIndexEnum
+ syn keyword cConstant SealevelchangeGrotEnum
++syn keyword cConstant SealevelchangeGSatGravirotEnum
+ syn keyword cConstant SealevelchangeGUrotEnum
+ syn keyword cConstant SealevelchangeGNrotEnum
+ syn keyword cConstant SealevelchangeGErotEnum
+-syn keyword cConstant SealevelchangeGsubelOceanEnum
+-syn keyword cConstant SealevelchangeGUsubelOceanEnum
+-syn keyword cConstant SealevelchangeGEsubelOceanEnum
+-syn keyword cConstant SealevelchangeGNsubelOceanEnum
+-syn keyword cConstant SealevelchangeGsubelIceEnum
+-syn keyword cConstant SealevelchangeGUsubelIceEnum
+-syn keyword cConstant SealevelchangeGEsubelIceEnum
+-syn keyword cConstant SealevelchangeGNsubelIceEnum
+-syn keyword cConstant SealevelchangeGsubelHydroEnum
+-syn keyword cConstant SealevelchangeGUsubelHydroEnum
+-syn keyword cConstant SealevelchangeGEsubelHydroEnum
+-syn keyword cConstant SealevelchangeGNsubelHydroEnum
++syn keyword cConstant SealevelchangeAlphaIndexOceanEnum
++syn keyword cConstant SealevelchangeAlphaIndexIceEnum
++syn keyword cConstant SealevelchangeAlphaIndexHydroEnum
++syn keyword cConstant SealevelchangeAzimuthIndexOceanEnum
++syn keyword cConstant SealevelchangeAzimuthIndexIceEnum
++syn keyword cConstant SealevelchangeAzimuthIndexHydroEnum
+ syn keyword cConstant SealevelchangeViscousRSLEnum
++syn keyword cConstant SealevelchangeViscousSGEnum
+ syn keyword cConstant SealevelchangeViscousUEnum
+ syn keyword cConstant SealevelchangeViscousNEnum
+ syn keyword cConstant SealevelchangeViscousEEnum
+@@ -1294,6 +1299,7 @@
+ syn keyword cConstant Domain3DsurfaceEnum
+ syn keyword cConstant DoubleArrayInputEnum
+ syn keyword cConstant ArrayInputEnum
++syn keyword cConstant IntArrayInputEnum
+ syn keyword cConstant DoubleExternalResultEnum
+ syn keyword cConstant DoubleMatArrayParamEnum
+ syn keyword cConstant DoubleMatExternalResultEnum
+@@ -1409,6 +1415,8 @@
+ syn keyword cConstant LoveTidalLtEnum
+ syn keyword cConstant LovePMTF1tEnum
+ syn keyword cConstant LovePMTF2tEnum
++syn keyword cConstant LoveYiEnum
++syn keyword cConstant LoveRhsEnum
+ syn keyword cConstant LoveSolutionEnum
+ syn keyword cConstant MINIEnum
+ syn keyword cConstant MINIcondensedEnum
+@@ -1623,6 +1631,7 @@
+ syn keyword cType Cfsurfacelogvel
+ syn keyword cType Cfsurfacesquare
+ syn keyword cType Channel
++syn keyword cType classes
+ syn keyword cType Constraint
+ syn keyword cType Constraints
+ syn keyword cType Contour
+@@ -1629,8 +1638,8 @@
+ syn keyword cType Contours
+ syn keyword cType ControlInput
+ syn keyword cType Covertree
++syn keyword cType DatasetInput
+ syn keyword cType DataSetParam
+-syn keyword cType DatasetInput
+ syn keyword cType Definition
+ syn keyword cType DependentObject
+ syn keyword cType DoubleInput
+@@ -1643,8 +1652,8 @@
+ syn keyword cType ElementHook
+ syn keyword cType ElementInput
+ syn keyword cType ElementMatrix
++syn keyword cType Elements
+ syn keyword cType ElementVector
+-syn keyword cType Elements
+ syn keyword cType ExponentialVariogram
+ syn keyword cType ExternalResult
+ syn keyword cType FemModel
+@@ -1651,11 +1660,12 @@
+ syn keyword cType FileParam
+ syn keyword cType Friction
+ syn keyword cType Gauss
++syn keyword cType GaussianVariogram
++syn keyword cType gaussobjects
+ syn keyword cType GaussPenta
+ syn keyword cType GaussSeg
+ syn keyword cType GaussTetra
+ syn keyword cType GaussTria
+-syn keyword cType GaussianVariogram
+ syn keyword cType GenericExternalResult
+ syn keyword cType GenericOption
+ syn keyword cType GenericParam
+@@ -1664,6 +1674,7 @@
+ syn keyword cType Hook
+ syn keyword cType Input
+ syn keyword cType Inputs
++syn keyword cType IntArrayInput
+ syn keyword cType IntInput
+ syn keyword cType IntMatParam
+ syn keyword cType IntParam
+@@ -1671,6 +1682,7 @@
+ syn keyword cType IoModel
+ syn keyword cType IssmDirectApplicInterface
+ syn keyword cType IssmParallelDirectApplicInterface
++syn keyword cType krigingobjects
+ syn keyword cType Load
+ syn keyword cType Loads
+ syn keyword cType Masscon
+@@ -1681,6 +1693,7 @@
+ syn keyword cType Matestar
+ syn keyword cType Matice
+ syn keyword cType Matlitho
++syn keyword cType matrixobjects
+ syn keyword cType MatrixParam
+ syn keyword cType Misfit
+ syn keyword cType Moulin
+@@ -1693,8 +1706,8 @@
+ syn keyword cType Observation
+ syn keyword cType Observations
+ syn keyword cType Option
++syn keyword cType Options
+ syn keyword cType OptionUtilities
+-syn keyword cType Options
+ syn keyword cType Param
+ syn keyword cType Parameters
+ syn keyword cType Pengrid
+@@ -1708,13 +1721,13 @@
+ syn keyword cType Radar
+ syn keyword cType Regionaloutput
+ syn keyword cType Results
++syn keyword cType Riftfront
+ syn keyword cType RiftStruct
+-syn keyword cType Riftfront
+ syn keyword cType SealevelGeometry
+ syn keyword cType Seg
+ syn keyword cType SegInput
++syn keyword cType Segment
+ syn keyword cType SegRef
+-syn keyword cType Segment
+ syn keyword cType SpcDynamic
+ syn keyword cType SpcStatic
+ syn keyword cType SpcTransient
+@@ -1733,10 +1746,6 @@
+ syn keyword cType VectorParam
+ syn keyword cType Vertex
+ syn keyword cType Vertices
+-syn keyword cType classes
+-syn keyword cType gaussobjects
+-syn keyword cType krigingobjects
+-syn keyword cType matrixobjects
+ syn keyword cType AdjointBalancethickness2Analysis
+ syn keyword cType AdjointBalancethicknessAnalysis
+ syn keyword cType AdjointHorizAnalysis
+Index: ../trunk-jpl/src/c/shared/Enum/Enumjl.vim
+===================================================================
+--- ../trunk-jpl/src/c/shared/Enum/Enumjl.vim	(revision 27130)
++++ ../trunk-jpl/src/c/shared/Enum/Enumjl.vim	(revision 27131)
+@@ -281,7 +281,9 @@
+ syn keyword juliaConstC LoveGravitationalConstantEnum
+ syn keyword juliaConstC LoveInnerCoreBoundaryEnum
+ syn keyword juliaConstC LoveComplexComputationEnum
+-syn keyword juliaConstC LoveIntStepsPerLayerEnum
++syn keyword juliaConstC LoveQuadPrecisionEnum
++syn keyword juliaConstC LoveMinIntegrationStepsEnum
++syn keyword juliaConstC LoveMaxIntegrationdrEnum
+ syn keyword juliaConstC LoveKernelsEnum
+ syn keyword juliaConstC LoveMu0Enum
+ syn keyword juliaConstC LoveNfreqEnum
+@@ -293,6 +295,9 @@
+ syn keyword juliaConstC LoveStartingLayerEnum
+ syn keyword juliaConstC LoveUnderflowTolEnum
+ syn keyword juliaConstC LovePostWidderThresholdEnum
++syn keyword juliaConstC LoveDebugEnum
++syn keyword juliaConstC LoveHypergeomNZEnum
++syn keyword juliaConstC LoveHypergeomNAlphaEnum
+ syn keyword juliaConstC MassFluxSegmentsEnum
+ syn keyword juliaConstC MassFluxSegmentsPresentEnum
+ syn keyword juliaConstC MasstransportHydrostaticAdjustmentEnum
+@@ -379,6 +384,8 @@
+ syn keyword juliaConstC SolidearthSettingsCrossSectionShapeEnum
+ syn keyword juliaConstC SolidearthSettingsElasticEnum
+ syn keyword juliaConstC SolidearthSettingsViscousEnum
++syn keyword juliaConstC SolidearthSettingsSatelliteGraviEnum
++syn keyword juliaConstC SolidearthSettingsDegreeAccuracyEnum
+ syn keyword juliaConstC SealevelchangeGeometryDoneEnum
+ syn keyword juliaConstC SealevelchangeViscousNumStepsEnum
+ syn keyword juliaConstC SealevelchangeViscousTimesEnum
+@@ -401,6 +408,9 @@
+ syn keyword juliaConstC LoadLoveLEnum
+ syn keyword juliaConstC LoveTimeFreqEnum
+ syn keyword juliaConstC LoveIsTimeEnum
++syn keyword juliaConstC LoveHypergeomZEnum
++syn keyword juliaConstC LoveHypergeomTable1Enum
++syn keyword juliaConstC LoveHypergeomTable2Enum
+ syn keyword juliaConstC SealevelchangeGSelfAttractionEnum
+ syn keyword juliaConstC SealevelchangeGViscoElasticEnum
+ syn keyword juliaConstC SealevelchangeUViscoElasticEnum
+@@ -843,6 +853,7 @@
+ syn keyword juliaConstC SamplingTauEnum
+ syn keyword juliaConstC SealevelEnum
+ syn keyword juliaConstC SealevelGRDEnum
++syn keyword juliaConstC SatGraviGRDEnum
+ syn keyword juliaConstC SealevelBarystaticMaskEnum
+ syn keyword juliaConstC SealevelBarystaticIceMaskEnum
+ syn keyword juliaConstC SealevelBarystaticIceWeightsEnum
+@@ -882,27 +893,21 @@
+ syn keyword juliaConstC SealevelUEastEsaEnum
+ syn keyword juliaConstC SealevelUNorthEsaEnum
+ syn keyword juliaConstC SealevelchangeIndicesEnum
+-syn keyword juliaConstC SealevelchangeGEnum
+-syn keyword juliaConstC SealevelchangeGUEnum
+-syn keyword juliaConstC SealevelchangeGEEnum
+-syn keyword juliaConstC SealevelchangeGNEnum
++syn keyword juliaConstC SealevelchangeAlphaIndexEnum
++syn keyword juliaConstC SealevelchangeAzimuthIndexEnum
+ syn keyword juliaConstC SealevelchangeGrotEnum
++syn keyword juliaConstC SealevelchangeGSatGravirotEnum
+ syn keyword juliaConstC SealevelchangeGUrotEnum
+ syn keyword juliaConstC SealevelchangeGNrotEnum
+ syn keyword juliaConstC SealevelchangeGErotEnum
+-syn keyword juliaConstC SealevelchangeGsubelOceanEnum
+-syn keyword juliaConstC SealevelchangeGUsubelOceanEnum
+-syn keyword juliaConstC SealevelchangeGEsubelOceanEnum
+-syn keyword juliaConstC SealevelchangeGNsubelOceanEnum
+-syn keyword juliaConstC SealevelchangeGsubelIceEnum
+-syn keyword juliaConstC SealevelchangeGUsubelIceEnum
+-syn keyword juliaConstC SealevelchangeGEsubelIceEnum
+-syn keyword juliaConstC SealevelchangeGNsubelIceEnum
+-syn keyword juliaConstC SealevelchangeGsubelHydroEnum
+-syn keyword juliaConstC SealevelchangeGUsubelHydroEnum
+-syn keyword juliaConstC SealevelchangeGEsubelHydroEnum
+-syn keyword juliaConstC SealevelchangeGNsubelHydroEnum
++syn keyword juliaConstC SealevelchangeAlphaIndexOceanEnum
++syn keyword juliaConstC SealevelchangeAlphaIndexIceEnum
++syn keyword juliaConstC SealevelchangeAlphaIndexHydroEnum
++syn keyword juliaConstC SealevelchangeAzimuthIndexOceanEnum
++syn keyword juliaConstC SealevelchangeAzimuthIndexIceEnum
++syn keyword juliaConstC SealevelchangeAzimuthIndexHydroEnum
+ syn keyword juliaConstC SealevelchangeViscousRSLEnum
++syn keyword juliaConstC SealevelchangeViscousSGEnum
+ syn keyword juliaConstC SealevelchangeViscousUEnum
+ syn keyword juliaConstC SealevelchangeViscousNEnum
+ syn keyword juliaConstC SealevelchangeViscousEEnum
+@@ -1287,6 +1292,7 @@
+ syn keyword juliaConstC Domain3DsurfaceEnum
+ syn keyword juliaConstC DoubleArrayInputEnum
+ syn keyword juliaConstC ArrayInputEnum
++syn keyword juliaConstC IntArrayInputEnum
+ syn keyword juliaConstC DoubleExternalResultEnum
+ syn keyword juliaConstC DoubleMatArrayParamEnum
+ syn keyword juliaConstC DoubleMatExternalResultEnum
+@@ -1402,6 +1408,8 @@
+ syn keyword juliaConstC LoveTidalLtEnum
+ syn keyword juliaConstC LovePMTF1tEnum
+ syn keyword juliaConstC LovePMTF2tEnum
++syn keyword juliaConstC LoveYiEnum
++syn keyword juliaConstC LoveRhsEnum
+ syn keyword juliaConstC LoveSolutionEnum
+ syn keyword juliaConstC MINIEnum
+ syn keyword juliaConstC MINIcondensedEnum
+Index: ../trunk-jpl/src/m/classes/solidearthsettings.m
+===================================================================
+--- ../trunk-jpl/src/m/classes/solidearthsettings.m	(revision 27130)
++++ ../trunk-jpl/src/m/classes/solidearthsettings.m	(revision 27131)
+@@ -19,9 +19,9 @@
+ 		isgrd                  = 0; %will GRD patterns be computed? 
+ 		compute_bp_grd         = 0; %will GRD patterns for bottom pressures be computed? 
+ 		degacc                 = 0; %degree increment for resolution of Green tables.
+-		timeacc                = 0; %time step accuracy required to compute Green tables
++		timeacc                = 1; %time step accuracy required to compute Green tables
+ 		horiz                  = 0; %compute horizontal deformation
+-		grdmodel               = 0; %grd model (0 by default, 1 for (visco-)elastic, 2 for Ivins)
++		grdmodel               = 1; %grd model (0 by default, 1 for (visco-)elastic, 2 for Ivins)
+ 		cross_section_shape    = 0; %cross section only used when grd model is Ivins
+ 	end
+ 	methods (Static)
+@@ -88,29 +88,33 @@
+ 			self.cross_section_shape=1; %square as default (see iedge in GiaDeflectionCorex)
+ 
+ 			%no grd model by default:
+-			self.grdmodel=0;
++			self.grdmodel=1;
+ 
+ 		end % }}}
+ 		function disp(self) % {{{
+ 			disp(sprintf('   solidearth settings:'));
+-
+-			fielddisplay(self,'reltol','sea level change relative convergence criterion (default, NaN: not applied)');
+-			fielddisplay(self,'abstol','sea level change absolute convergence criterion(default, NaN: not applied)');
+-			fielddisplay(self,'maxiter','maximum number of nonlinear iterations');
+-			fielddisplay(self,'grdocean','does this planet have an ocean, if set to 1: global water mass is conserved in GRD module (default: 1)'); 
+-			fielddisplay(self,'ocean_area_scaling','correction for model representation of ocean area (default: No correction)'); 
+-			fielddisplay(self,'sealevelloading','enables surface loading from sea-level change (default: 1)');
++			disp(sprintf('      core:'));
+ 			fielddisplay(self,'isgrd','compute GRD patterns (default: 1)');
+-			fielddisplay(self,'compute_bp_grd','compute GRD patterns for bottom pressure loads (default: 1)');
+-			fielddisplay(self,'runfrequency','how many time steps we skip before we run solidearthsettings solver during transient (default: 1)');
++			fielddisplay(self,'grdmodel','type of deformation model, 0 for no GRD, 1 for spherical GRD model (SESAW model), 2 for half-space planar GRD (visco-elastic model from Ivins)');
++			fielddisplay(self,'runfrequency','How many time steps we let masstransport core accumulate changes before each run of the sealevelchange core (default: 1, i.e run slc every time step)');
++			disp(sprintf('      computational flags:'));
+ 			fielddisplay(self,'selfattraction','enables surface mass load to perturb the gravity field');
+ 			fielddisplay(self,'elastic','enables elastic deformation from surface loading');
+ 			fielddisplay(self,'viscous','enables viscous deformation from surface loading');
+ 			fielddisplay(self,'rotation','enables polar motion to feedback on the GRD fields');
+-			fielddisplay(self,'degacc','accuracy (default: .01 deg) for numerical discretization of the Green''s functions');
++			fielddisplay(self,'compute_bp_grd','compute GRD patterns for bottom pressure loads (default: 1)');
++			fielddisplay(self,'cross_section_shape','1: square-edged (default). 2: elliptical. See iedge in GiaDeflectionCore. Used only for grdmodel=2 only');
++			disp(sprintf('      resolution:'));
++			fielddisplay(self,'degacc','spatial accuracy (default: .01 deg) for numerical discretization of the Green''s functions');
+ 			fielddisplay(self,'timeacc','time accuracy (default: 1 yr) for numerical discretization of the Green''s functions');
+-			fielddisplay(self,'grdmodel','type of deformation model, 0 for no GRD, 1 for spherical GRD model (SESAW model), 2 for half-space planar GRD (visco-elastic model from Ivins)');
+-			fielddisplay(self,'cross_section_shape','1: square-edged (default). 2: elliptical. See iedge in GiaDeflectionCore');
++			disp(sprintf('      sea-level equation:'));
++			fielddisplay(self,'grdocean','does this planet have an ocean, if set to 1: global water mass is conserved in GRD module (default: 1)'); 
++			fielddisplay(self,'sealevelloading','enables surface loading from sea-level change (default: 1)');
++			fielddisplay(self,'maxiter','maximum number of nonlinear iterations');
++			fielddisplay(self,'reltol','sea level change relative convergence criterion (default, NaN: not applied)');
++			fielddisplay(self,'abstol','sea level change absolute convergence criterion(default, NaN: not applied)');
++			fielddisplay(self,'ocean_area_scaling','correction for model representation of ocean area (default: No correction)'); 
++
+ 		end % }}}
+ 		function md = checkconsistency(self,md,solution,analyses) % {{{
+ 
+@@ -133,6 +137,9 @@
+ 			if self.viscous==1 & self.elastic==0,
+ 				error('solidearthsettings checkconsistency error message: need elastic on if viscous flag is set');
+ 			end
++			if self.rotation==1 & self.elastic==0,
++				error('solidearthsettings checkconsistency error message: need elastic on if rotation flag is set');
++			end
+ 
+ 			%a GRD computation has been requested, make some checks on the nature of the meshes provided. 
+ 			if self.isgrd,
+@@ -163,6 +170,7 @@
+ 			WriteData(fid,prefix,'object',self,'fieldname','elastic','name','md.solidearth.settings.elastic','format','Boolean');
+ 			WriteData(fid,prefix,'object',self,'fieldname','viscous','name','md.solidearth.settings.viscous','format','Boolean');
+ 			WriteData(fid,prefix,'object',self,'fieldname','rotation','name','md.solidearth.settings.rotation','format','Boolean');
++			WriteData(fid,prefix,'object',self,'fieldname','rotation','name','md.solidearth.settings.satellitegravity','format','Boolean');
+ 			WriteData(fid,prefix,'object',self,'fieldname','grdocean','name','md.solidearth.settings.grdocean','format','Boolean');
+ 			WriteData(fid,prefix,'object',self,'fieldname','ocean_area_scaling','name','md.solidearth.settings.ocean_area_scaling','format','Boolean');
+ 			WriteData(fid,prefix,'object',self,'fieldname','runfrequency','name','md.solidearth.settings.runfrequency','format','Integer');
+@@ -186,7 +194,7 @@
+ 			writejsdouble(fid,[modelname '.solidearth.settings.elastic'],self.elastic);
+ 			writejsdouble(fid,[modelname '.solidearth.settings.viscous'],self.viscous);
+ 			writejsdouble(fid,[modelname '.solidearth.settings.rotation'],self.rotation);
+-			writejsdouble(fid,[modelname '.solidearth.settings.grdocean'],self.rotation);
++			writejsdouble(fid,[modelname '.solidearth.settings.grdocean'],self.grdocean);
+ 			writejsdouble(fid,[modelname '.solidearth.settings.ocean_area_scaling'],self.ocean_area_scaling);
+ 			writejsdouble(fid,[modelname '.solidearth.settings.run_frequency'],self.run_frequency);
+ 			writejsdouble(fid,[modelname '.solidearth.settings.degacc'],self.degacc);
+Index: ../trunk-jpl/src/c/shared/Enum/EnumDefinitions.h
+===================================================================
+--- ../trunk-jpl/src/c/shared/Enum/EnumDefinitions.h	(revision 27130)
++++ ../trunk-jpl/src/c/shared/Enum/EnumDefinitions.h	(revision 27131)
+@@ -282,7 +282,9 @@
+ 	LoveGravitationalConstantEnum,
+ 	LoveInnerCoreBoundaryEnum,
+ 	LoveComplexComputationEnum,
+-	LoveIntStepsPerLayerEnum,
++	LoveQuadPrecisionEnum,
++	LoveMinIntegrationStepsEnum,
++	LoveMaxIntegrationdrEnum,
+ 	LoveKernelsEnum,
+ 	LoveMu0Enum,
+ 	LoveNfreqEnum,
+@@ -294,6 +296,9 @@
+ 	LoveStartingLayerEnum,
+ 	LoveUnderflowTolEnum,
+ 	LovePostWidderThresholdEnum,
++	LoveDebugEnum,
++	LoveHypergeomNZEnum,
++	LoveHypergeomNAlphaEnum,
+ 	MassFluxSegmentsEnum,
+ 	MassFluxSegmentsPresentEnum,
+ 	MasstransportHydrostaticAdjustmentEnum,
+@@ -380,6 +385,8 @@
+ 	SolidearthSettingsCrossSectionShapeEnum,
+ 	SolidearthSettingsElasticEnum,
+ 	SolidearthSettingsViscousEnum,
++	SolidearthSettingsSatelliteGraviEnum,
++	SolidearthSettingsDegreeAccuracyEnum,
+ 	SealevelchangeGeometryDoneEnum,
+ 	SealevelchangeViscousNumStepsEnum,
+ 	SealevelchangeViscousTimesEnum,
+@@ -402,6 +409,9 @@
+ 	LoadLoveLEnum,
+ 	LoveTimeFreqEnum,
+ 	LoveIsTimeEnum,
++	LoveHypergeomZEnum,
++	LoveHypergeomTable1Enum,
++	LoveHypergeomTable2Enum,
+ 	SealevelchangeGSelfAttractionEnum,
+ 	SealevelchangeGViscoElasticEnum,
+ 	SealevelchangeUViscoElasticEnum,
+@@ -846,6 +856,7 @@
+ 	SamplingTauEnum,
+ 	SealevelEnum,
+ 	SealevelGRDEnum,
++	SatGraviGRDEnum,
+ 	SealevelBarystaticMaskEnum,
+ 	SealevelBarystaticIceMaskEnum,
+ 	SealevelBarystaticIceWeightsEnum,
+@@ -885,27 +896,21 @@
+ 	SealevelUEastEsaEnum,
+ 	SealevelUNorthEsaEnum,
+ 	SealevelchangeIndicesEnum,
+-	SealevelchangeGEnum,
+-	SealevelchangeGUEnum,
+-	SealevelchangeGEEnum,
+-	SealevelchangeGNEnum,
++	SealevelchangeAlphaIndexEnum,
++	SealevelchangeAzimuthIndexEnum,
+ 	SealevelchangeGrotEnum,
++	SealevelchangeGSatGravirotEnum,
+ 	SealevelchangeGUrotEnum,
+ 	SealevelchangeGNrotEnum,
+ 	SealevelchangeGErotEnum,
+-	SealevelchangeGsubelOceanEnum,
+-	SealevelchangeGUsubelOceanEnum,
+-	SealevelchangeGEsubelOceanEnum,
+-	SealevelchangeGNsubelOceanEnum,
+-	SealevelchangeGsubelIceEnum,
+-	SealevelchangeGUsubelIceEnum,
+-	SealevelchangeGEsubelIceEnum,
+-	SealevelchangeGNsubelIceEnum,
+-	SealevelchangeGsubelHydroEnum,
+-	SealevelchangeGUsubelHydroEnum,
+-	SealevelchangeGEsubelHydroEnum,
+-	SealevelchangeGNsubelHydroEnum,
++	SealevelchangeAlphaIndexOceanEnum,
++	SealevelchangeAlphaIndexIceEnum,
++	SealevelchangeAlphaIndexHydroEnum,
++	SealevelchangeAzimuthIndexOceanEnum,
++	SealevelchangeAzimuthIndexIceEnum,
++	SealevelchangeAzimuthIndexHydroEnum,
+ 	SealevelchangeViscousRSLEnum,
++	SealevelchangeViscousSGEnum,
+ 	SealevelchangeViscousUEnum,
+ 	SealevelchangeViscousNEnum,
+ 	SealevelchangeViscousEEnum,
+@@ -1409,6 +1414,8 @@
+ 	LoveTidalLtEnum,
+ 	LovePMTF1tEnum,
+ 	LovePMTF2tEnum,
++	LoveYiEnum,
++	LoveRhsEnum,
+ 	LoveSolutionEnum,
+ 	MINIEnum,
+ 	MINIcondensedEnum,
+Index: ../trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp
+===================================================================
+--- ../trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp	(revision 27130)
++++ ../trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp	(revision 27131)
+@@ -290,7 +290,9 @@
+ 		case LoveGravitationalConstantEnum : return "LoveGravitationalConstant";
+ 		case LoveInnerCoreBoundaryEnum : return "LoveInnerCoreBoundary";
+ 		case LoveComplexComputationEnum : return "LoveComplexComputation";
+-		case LoveIntStepsPerLayerEnum : return "LoveIntStepsPerLayer";
++		case LoveQuadPrecisionEnum : return "LoveQuadPrecision";
++		case LoveMinIntegrationStepsEnum : return "LoveMinIntegrationSteps";
++		case LoveMaxIntegrationdrEnum : return "LoveMaxIntegrationdr";
+ 		case LoveKernelsEnum : return "LoveKernels";
+ 		case LoveMu0Enum : return "LoveMu0";
+ 		case LoveNfreqEnum : return "LoveNfreq";
+@@ -302,6 +304,9 @@
+ 		case LoveStartingLayerEnum : return "LoveStartingLayer";
+ 		case LoveUnderflowTolEnum : return "LoveUnderflowTol";
+ 		case LovePostWidderThresholdEnum : return "LovePostWidderThreshold";
++		case LoveDebugEnum : return "LoveDebug";
++		case LoveHypergeomNZEnum : return "LoveHypergeomNZ";
++		case LoveHypergeomNAlphaEnum : return "LoveHypergeomNAlpha";
+ 		case MassFluxSegmentsEnum : return "MassFluxSegments";
+ 		case MassFluxSegmentsPresentEnum : return "MassFluxSegmentsPresent";
+ 		case MasstransportHydrostaticAdjustmentEnum : return "MasstransportHydrostaticAdjustment";
+@@ -388,6 +393,8 @@
+ 		case SolidearthSettingsCrossSectionShapeEnum : return "SolidearthSettingsCrossSectionShape";
+ 		case SolidearthSettingsElasticEnum : return "SolidearthSettingsElastic";
+ 		case SolidearthSettingsViscousEnum : return "SolidearthSettingsViscous";
++		case SolidearthSettingsSatelliteGraviEnum : return "SolidearthSettingsSatelliteGravi";
++		case SolidearthSettingsDegreeAccuracyEnum : return "SolidearthSettingsDegreeAccuracy";
+ 		case SealevelchangeGeometryDoneEnum : return "SealevelchangeGeometryDone";
+ 		case SealevelchangeViscousNumStepsEnum : return "SealevelchangeViscousNumSteps";
+ 		case SealevelchangeViscousTimesEnum : return "SealevelchangeViscousTimes";
+@@ -410,6 +417,9 @@
+ 		case LoadLoveLEnum : return "LoadLoveL";
+ 		case LoveTimeFreqEnum : return "LoveTimeFreq";
+ 		case LoveIsTimeEnum : return "LoveIsTime";
++		case LoveHypergeomZEnum : return "LoveHypergeomZ";
++		case LoveHypergeomTable1Enum : return "LoveHypergeomTable1";
++		case LoveHypergeomTable2Enum : return "LoveHypergeomTable2";
+ 		case SealevelchangeGSelfAttractionEnum : return "SealevelchangeGSelfAttraction";
+ 		case SealevelchangeGViscoElasticEnum : return "SealevelchangeGViscoElastic";
+ 		case SealevelchangeUViscoElasticEnum : return "SealevelchangeUViscoElastic";
+@@ -852,6 +862,7 @@
+ 		case SamplingTauEnum : return "SamplingTau";
+ 		case SealevelEnum : return "Sealevel";
+ 		case SealevelGRDEnum : return "SealevelGRD";
++		case SatGraviGRDEnum : return "SatGraviGRD";
+ 		case SealevelBarystaticMaskEnum : return "SealevelBarystaticMask";
+ 		case SealevelBarystaticIceMaskEnum : return "SealevelBarystaticIceMask";
+ 		case SealevelBarystaticIceWeightsEnum : return "SealevelBarystaticIceWeights";
+@@ -891,27 +902,21 @@
+ 		case SealevelUEastEsaEnum : return "SealevelUEastEsa";
+ 		case SealevelUNorthEsaEnum : return "SealevelUNorthEsa";
+ 		case SealevelchangeIndicesEnum : return "SealevelchangeIndices";
+-		case SealevelchangeGEnum : return "SealevelchangeG";
+-		case SealevelchangeGUEnum : return "SealevelchangeGU";
+-		case SealevelchangeGEEnum : return "SealevelchangeGE";
+-		case SealevelchangeGNEnum : return "SealevelchangeGN";
++		case SealevelchangeAlphaIndexEnum : return "SealevelchangeAlphaIndex";
++		case SealevelchangeAzimuthIndexEnum : return "SealevelchangeAzimuthIndex";
+ 		case SealevelchangeGrotEnum : return "SealevelchangeGrot";
++		case SealevelchangeGSatGravirotEnum : return "SealevelchangeGSatGravirot";
+ 		case SealevelchangeGUrotEnum : return "SealevelchangeGUrot";
+ 		case SealevelchangeGNrotEnum : return "SealevelchangeGNrot";
+ 		case SealevelchangeGErotEnum : return "SealevelchangeGErot";
+-		case SealevelchangeGsubelOceanEnum : return "SealevelchangeGsubelOcean";
+-		case SealevelchangeGUsubelOceanEnum : return "SealevelchangeGUsubelOcean";
+-		case SealevelchangeGEsubelOceanEnum : return "SealevelchangeGEsubelOcean";
+-		case SealevelchangeGNsubelOceanEnum : return "SealevelchangeGNsubelOcean";
+-		case SealevelchangeGsubelIceEnum : return "SealevelchangeGsubelIce";
+-		case SealevelchangeGUsubelIceEnum : return "SealevelchangeGUsubelIce";
+-		case SealevelchangeGEsubelIceEnum : return "SealevelchangeGEsubelIce";
+-		case SealevelchangeGNsubelIceEnum : return "SealevelchangeGNsubelIce";
+-		case SealevelchangeGsubelHydroEnum : return "SealevelchangeGsubelHydro";
+-		case SealevelchangeGUsubelHydroEnum : return "SealevelchangeGUsubelHydro";
+-		case SealevelchangeGEsubelHydroEnum : return "SealevelchangeGEsubelHydro";
+-		case SealevelchangeGNsubelHydroEnum : return "SealevelchangeGNsubelHydro";
++		case SealevelchangeAlphaIndexOceanEnum : return "SealevelchangeAlphaIndexOcean";
++		case SealevelchangeAlphaIndexIceEnum : return "SealevelchangeAlphaIndexIce";
++		case SealevelchangeAlphaIndexHydroEnum : return "SealevelchangeAlphaIndexHydro";
++		case SealevelchangeAzimuthIndexOceanEnum : return "SealevelchangeAzimuthIndexOcean";
++		case SealevelchangeAzimuthIndexIceEnum : return "SealevelchangeAzimuthIndexIce";
++		case SealevelchangeAzimuthIndexHydroEnum : return "SealevelchangeAzimuthIndexHydro";
+ 		case SealevelchangeViscousRSLEnum : return "SealevelchangeViscousRSL";
++		case SealevelchangeViscousSGEnum : return "SealevelchangeViscousSG";
+ 		case SealevelchangeViscousUEnum : return "SealevelchangeViscousU";
+ 		case SealevelchangeViscousNEnum : return "SealevelchangeViscousN";
+ 		case SealevelchangeViscousEEnum : return "SealevelchangeViscousE";
+@@ -1412,6 +1417,8 @@
+ 		case LoveTidalLtEnum : return "LoveTidalLt";
+ 		case LovePMTF1tEnum : return "LovePMTF1t";
+ 		case LovePMTF2tEnum : return "LovePMTF2t";
++		case LoveYiEnum : return "LoveYi";
++		case LoveRhsEnum : return "LoveRhs";
+ 		case LoveSolutionEnum : return "LoveSolution";
+ 		case MINIEnum : return "MINI";
+ 		case MINIcondensedEnum : return "MINIcondensed";
+Index: ../trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp
+===================================================================
+--- ../trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp	(revision 27130)
++++ ../trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp	(revision 27131)
+@@ -296,7 +296,9 @@
+ 	      else if (strcmp(name,"LoveGravitationalConstant")==0) return LoveGravitationalConstantEnum;
+ 	      else if (strcmp(name,"LoveInnerCoreBoundary")==0) return LoveInnerCoreBoundaryEnum;
+ 	      else if (strcmp(name,"LoveComplexComputation")==0) return LoveComplexComputationEnum;
+-	      else if (strcmp(name,"LoveIntStepsPerLayer")==0) return LoveIntStepsPerLayerEnum;
++	      else if (strcmp(name,"LoveQuadPrecision")==0) return LoveQuadPrecisionEnum;
++	      else if (strcmp(name,"LoveMinIntegrationSteps")==0) return LoveMinIntegrationStepsEnum;
++	      else if (strcmp(name,"LoveMaxIntegrationdr")==0) return LoveMaxIntegrationdrEnum;
+ 	      else if (strcmp(name,"LoveKernels")==0) return LoveKernelsEnum;
+ 	      else if (strcmp(name,"LoveMu0")==0) return LoveMu0Enum;
+ 	      else if (strcmp(name,"LoveNfreq")==0) return LoveNfreqEnum;
+@@ -308,6 +310,9 @@
+ 	      else if (strcmp(name,"LoveStartingLayer")==0) return LoveStartingLayerEnum;
+ 	      else if (strcmp(name,"LoveUnderflowTol")==0) return LoveUnderflowTolEnum;
+ 	      else if (strcmp(name,"LovePostWidderThreshold")==0) return LovePostWidderThresholdEnum;
++	      else if (strcmp(name,"LoveDebug")==0) return LoveDebugEnum;
++	      else if (strcmp(name,"LoveHypergeomNZ")==0) return LoveHypergeomNZEnum;
++	      else if (strcmp(name,"LoveHypergeomNAlpha")==0) return LoveHypergeomNAlphaEnum;
+ 	      else if (strcmp(name,"MassFluxSegments")==0) return MassFluxSegmentsEnum;
+ 	      else if (strcmp(name,"MassFluxSegmentsPresent")==0) return MassFluxSegmentsPresentEnum;
+ 	      else if (strcmp(name,"MasstransportHydrostaticAdjustment")==0) return MasstransportHydrostaticAdjustmentEnum;
+@@ -377,15 +382,15 @@
+ 	      else if (strcmp(name,"RootPath")==0) return RootPathEnum;
+ 	      else if (strcmp(name,"Modelname")==0) return ModelnameEnum;
+ 	      else if (strcmp(name,"SamplingAlpha")==0) return SamplingAlphaEnum;
+-	      else if (strcmp(name,"SamplingNumRequestedOutputs")==0) return SamplingNumRequestedOutputsEnum;
++         else stage=4;
++   }
++   if(stage==4){
++	      if (strcmp(name,"SamplingNumRequestedOutputs")==0) return SamplingNumRequestedOutputsEnum;
+ 	      else if (strcmp(name,"SamplingRequestedOutputs")==0) return SamplingRequestedOutputsEnum;
+ 	      else if (strcmp(name,"SamplingRobin")==0) return SamplingRobinEnum;
+ 	      else if (strcmp(name,"SamplingSeed")==0) return SamplingSeedEnum;
+ 	      else if (strcmp(name,"SaveResults")==0) return SaveResultsEnum;
+-         else stage=4;
+-   }
+-   if(stage==4){
+-	      if (strcmp(name,"SolidearthPartitionIce")==0) return SolidearthPartitionIceEnum;
++	      else if (strcmp(name,"SolidearthPartitionIce")==0) return SolidearthPartitionIceEnum;
+ 	      else if (strcmp(name,"SolidearthPartitionHydro")==0) return SolidearthPartitionHydroEnum;
+ 	      else if (strcmp(name,"SolidearthPartitionOcean")==0) return SolidearthPartitionOceanEnum;
+ 	      else if (strcmp(name,"SolidearthNpartIce")==0) return SolidearthNpartIceEnum;
+@@ -397,6 +402,8 @@
+ 	      else if (strcmp(name,"SolidearthSettingsCrossSectionShape")==0) return SolidearthSettingsCrossSectionShapeEnum;
+ 	      else if (strcmp(name,"SolidearthSettingsElastic")==0) return SolidearthSettingsElasticEnum;
+ 	      else if (strcmp(name,"SolidearthSettingsViscous")==0) return SolidearthSettingsViscousEnum;
++	      else if (strcmp(name,"SolidearthSettingsSatelliteGravi")==0) return SolidearthSettingsSatelliteGraviEnum;
++	      else if (strcmp(name,"SolidearthSettingsDegreeAccuracy")==0) return SolidearthSettingsDegreeAccuracyEnum;
+ 	      else if (strcmp(name,"SealevelchangeGeometryDone")==0) return SealevelchangeGeometryDoneEnum;
+ 	      else if (strcmp(name,"SealevelchangeViscousNumSteps")==0) return SealevelchangeViscousNumStepsEnum;
+ 	      else if (strcmp(name,"SealevelchangeViscousTimes")==0) return SealevelchangeViscousTimesEnum;
+@@ -419,6 +426,9 @@
+ 	      else if (strcmp(name,"LoadLoveL")==0) return LoadLoveLEnum;
+ 	      else if (strcmp(name,"LoveTimeFreq")==0) return LoveTimeFreqEnum;
+ 	      else if (strcmp(name,"LoveIsTime")==0) return LoveIsTimeEnum;
++	      else if (strcmp(name,"LoveHypergeomZ")==0) return LoveHypergeomZEnum;
++	      else if (strcmp(name,"LoveHypergeomTable1")==0) return LoveHypergeomTable1Enum;
++	      else if (strcmp(name,"LoveHypergeomTable2")==0) return LoveHypergeomTable2Enum;
+ 	      else if (strcmp(name,"SealevelchangeGSelfAttraction")==0) return SealevelchangeGSelfAttractionEnum;
+ 	      else if (strcmp(name,"SealevelchangeGViscoElastic")==0) return SealevelchangeGViscoElasticEnum;
+ 	      else if (strcmp(name,"SealevelchangeUViscoElastic")==0) return SealevelchangeUViscoElasticEnum;
+@@ -495,7 +505,10 @@
+ 	      else if (strcmp(name,"SmbIsdeltaLWup")==0) return SmbIsdeltaLWupEnum;
+ 	      else if (strcmp(name,"SmbIsfirnwarming")==0) return SmbIsfirnwarmingEnum;
+ 	      else if (strcmp(name,"SmbIsgraingrowth")==0) return SmbIsgraingrowthEnum;
+-	      else if (strcmp(name,"SmbIsmelt")==0) return SmbIsmeltEnum;
++         else stage=5;
++   }
++   if(stage==5){
++	      if (strcmp(name,"SmbIsmelt")==0) return SmbIsmeltEnum;
+ 	      else if (strcmp(name,"SmbIsmungsm")==0) return SmbIsmungsmEnum;
+ 	      else if (strcmp(name,"SmbIsprecipscaled")==0) return SmbIsprecipscaledEnum;
+ 	      else if (strcmp(name,"SmbIssetpddfac")==0) return SmbIssetpddfacEnum;
+@@ -505,10 +518,7 @@
+ 	      else if (strcmp(name,"SmbIsturbulentflux")==0) return SmbIsturbulentfluxEnum;
+ 	      else if (strcmp(name,"SmbK")==0) return SmbKEnum;
+ 	      else if (strcmp(name,"SmbLapseRates")==0) return SmbLapseRatesEnum;
+-         else stage=5;
+-   }
+-   if(stage==5){
+-	      if (strcmp(name,"SmbNumBasins")==0) return SmbNumBasinsEnum;
++	      else if (strcmp(name,"SmbNumBasins")==0) return SmbNumBasinsEnum;
+ 	      else if (strcmp(name,"SmbNumElevationBins")==0) return SmbNumElevationBinsEnum;
+ 	      else if (strcmp(name,"SmbNumRequestedOutputs")==0) return SmbNumRequestedOutputsEnum;
+ 	      else if (strcmp(name,"SmbPfac")==0) return SmbPfacEnum;
+@@ -618,7 +628,10 @@
+ 	      else if (strcmp(name,"Air")==0) return AirEnum;
+ 	      else if (strcmp(name,"Approximation")==0) return ApproximationEnum;
+ 	      else if (strcmp(name,"BalancethicknessMisfit")==0) return BalancethicknessMisfitEnum;
+-	      else if (strcmp(name,"BalancethicknessOmega0")==0) return BalancethicknessOmega0Enum;
++         else stage=6;
++   }
++   if(stage==6){
++	      if (strcmp(name,"BalancethicknessOmega0")==0) return BalancethicknessOmega0Enum;
+ 	      else if (strcmp(name,"BalancethicknessOmega")==0) return BalancethicknessOmegaEnum;
+ 	      else if (strcmp(name,"BalancethicknessSpcthickness")==0) return BalancethicknessSpcthicknessEnum;
+ 	      else if (strcmp(name,"BalancethicknessThickeningRate")==0) return BalancethicknessThickeningRateEnum;
+@@ -628,10 +641,7 @@
+ 	      else if (strcmp(name,"BasalforcingsDeepwaterMeltingRateValuesAutoregression")==0) return BasalforcingsDeepwaterMeltingRateValuesAutoregressionEnum;
+ 	      else if (strcmp(name,"BasalforcingsFloatingiceMeltingRate")==0) return BasalforcingsFloatingiceMeltingRateEnum;
+ 	      else if (strcmp(name,"BasalforcingsGeothermalflux")==0) return BasalforcingsGeothermalfluxEnum;
+-         else stage=6;
+-   }
+-   if(stage==6){
+-	      if (strcmp(name,"BasalforcingsGroundediceMeltingRate")==0) return BasalforcingsGroundediceMeltingRateEnum;
++	      else if (strcmp(name,"BasalforcingsGroundediceMeltingRate")==0) return BasalforcingsGroundediceMeltingRateEnum;
+ 	      else if (strcmp(name,"BasalforcingsLinearBasinId")==0) return BasalforcingsLinearBasinIdEnum;
+ 	      else if (strcmp(name,"BasalforcingsPerturbationMeltingRate")==0) return BasalforcingsPerturbationMeltingRateEnum;
+ 	      else if (strcmp(name,"BasalforcingsSpatialDeepwaterElevation")==0) return BasalforcingsSpatialDeepwaterElevationEnum;
+@@ -741,7 +751,10 @@
+ 	      else if (strcmp(name,"EsaXmotion")==0) return EsaXmotionEnum;
+ 	      else if (strcmp(name,"EsaYmotion")==0) return EsaYmotionEnum;
+ 	      else if (strcmp(name,"EtaDiff")==0) return EtaDiffEnum;
+-	      else if (strcmp(name,"FlowequationBorderFS")==0) return FlowequationBorderFSEnum;
++         else stage=7;
++   }
++   if(stage==7){
++	      if (strcmp(name,"FlowequationBorderFS")==0) return FlowequationBorderFSEnum;
+ 	      else if (strcmp(name,"FrictionAs")==0) return FrictionAsEnum;
+ 	      else if (strcmp(name,"FrictionC")==0) return FrictionCEnum;
+ 	      else if (strcmp(name,"FrictionCmax")==0) return FrictionCmaxEnum;
+@@ -751,10 +764,7 @@
+ 	      else if (strcmp(name,"FrictionM")==0) return FrictionMEnum;
+ 	      else if (strcmp(name,"FrictionP")==0) return FrictionPEnum;
+ 	      else if (strcmp(name,"FrictionPressureAdjustedTemperature")==0) return FrictionPressureAdjustedTemperatureEnum;
+-         else stage=7;
+-   }
+-   if(stage==7){
+-	      if (strcmp(name,"FrictionQ")==0) return FrictionQEnum;
++	      else if (strcmp(name,"FrictionQ")==0) return FrictionQEnum;
+ 	      else if (strcmp(name,"FrictionSedimentCompressibilityCoefficient")==0) return FrictionSedimentCompressibilityCoefficientEnum;
+ 	      else if (strcmp(name,"FrictionTillFrictionAngle")==0) return FrictionTillFrictionAngleEnum;
+ 	      else if (strcmp(name,"FrictionWaterLayer")==0) return FrictionWaterLayerEnum;
+@@ -864,20 +874,21 @@
+ 	      else if (strcmp(name,"Sample")==0) return SampleEnum;
+ 	      else if (strcmp(name,"SampleOld")==0) return SampleOldEnum;
+ 	      else if (strcmp(name,"SampleNoise")==0) return SampleNoiseEnum;
+-	      else if (strcmp(name,"SamplingBeta")==0) return SamplingBetaEnum;
++         else stage=8;
++   }
++   if(stage==8){
++	      if (strcmp(name,"SamplingBeta")==0) return SamplingBetaEnum;
+ 	      else if (strcmp(name,"SamplingKappa")==0) return SamplingKappaEnum;
+ 	      else if (strcmp(name,"SamplingPhi")==0) return SamplingPhiEnum;
+ 	      else if (strcmp(name,"SamplingTau")==0) return SamplingTauEnum;
+ 	      else if (strcmp(name,"Sealevel")==0) return SealevelEnum;
+ 	      else if (strcmp(name,"SealevelGRD")==0) return SealevelGRDEnum;
++	      else if (strcmp(name,"SatGraviGRD")==0) return SatGraviGRDEnum;
+ 	      else if (strcmp(name,"SealevelBarystaticMask")==0) return SealevelBarystaticMaskEnum;
+ 	      else if (strcmp(name,"SealevelBarystaticIceMask")==0) return SealevelBarystaticIceMaskEnum;
+ 	      else if (strcmp(name,"SealevelBarystaticIceWeights")==0) return SealevelBarystaticIceWeightsEnum;
+ 	      else if (strcmp(name,"SealevelBarystaticIceArea")==0) return SealevelBarystaticIceAreaEnum;
+-         else stage=8;
+-   }
+-   if(stage==8){
+-	      if (strcmp(name,"SealevelBarystaticIceLatbar")==0) return SealevelBarystaticIceLatbarEnum;
++	      else if (strcmp(name,"SealevelBarystaticIceLatbar")==0) return SealevelBarystaticIceLatbarEnum;
+ 	      else if (strcmp(name,"SealevelBarystaticIceLongbar")==0) return SealevelBarystaticIceLongbarEnum;
+ 	      else if (strcmp(name,"SealevelBarystaticIceLoad")==0) return SealevelBarystaticIceLoadEnum;
+ 	      else if (strcmp(name,"SealevelBarystaticHydroMask")==0) return SealevelBarystaticHydroMaskEnum;
+@@ -912,27 +923,21 @@
+ 	      else if (strcmp(name,"SealevelUEastEsa")==0) return SealevelUEastEsaEnum;
+ 	      else if (strcmp(name,"SealevelUNorthEsa")==0) return SealevelUNorthEsaEnum;
+ 	      else if (strcmp(name,"SealevelchangeIndices")==0) return SealevelchangeIndicesEnum;
+-	      else if (strcmp(name,"SealevelchangeG")==0) return SealevelchangeGEnum;
+-	      else if (strcmp(name,"SealevelchangeGU")==0) return SealevelchangeGUEnum;
+-	      else if (strcmp(name,"SealevelchangeGE")==0) return SealevelchangeGEEnum;
+-	      else if (strcmp(name,"SealevelchangeGN")==0) return SealevelchangeGNEnum;
++	      else if (strcmp(name,"SealevelchangeAlphaIndex")==0) return SealevelchangeAlphaIndexEnum;
++	      else if (strcmp(name,"SealevelchangeAzimuthIndex")==0) return SealevelchangeAzimuthIndexEnum;
+ 	      else if (strcmp(name,"SealevelchangeGrot")==0) return SealevelchangeGrotEnum;
++	      else if (strcmp(name,"SealevelchangeGSatGravirot")==0) return SealevelchangeGSatGravirotEnum;
+ 	      else if (strcmp(name,"SealevelchangeGUrot")==0) return SealevelchangeGUrotEnum;
+ 	      else if (strcmp(name,"SealevelchangeGNrot")==0) return SealevelchangeGNrotEnum;
+ 	      else if (strcmp(name,"SealevelchangeGErot")==0) return SealevelchangeGErotEnum;
+-	      else if (strcmp(name,"SealevelchangeGsubelOcean")==0) return SealevelchangeGsubelOceanEnum;
+-	      else if (strcmp(name,"SealevelchangeGUsubelOcean")==0) return SealevelchangeGUsubelOceanEnum;
+-	      else if (strcmp(name,"SealevelchangeGEsubelOcean")==0) return SealevelchangeGEsubelOceanEnum;
+-	      else if (strcmp(name,"SealevelchangeGNsubelOcean")==0) return SealevelchangeGNsubelOceanEnum;
+-	      else if (strcmp(name,"SealevelchangeGsubelIce")==0) return SealevelchangeGsubelIceEnum;
+-	      else if (strcmp(name,"SealevelchangeGUsubelIce")==0) return SealevelchangeGUsubelIceEnum;
+-	      else if (strcmp(name,"SealevelchangeGEsubelIce")==0) return SealevelchangeGEsubelIceEnum;
+-	      else if (strcmp(name,"SealevelchangeGNsubelIce")==0) return SealevelchangeGNsubelIceEnum;
+-	      else if (strcmp(name,"SealevelchangeGsubelHydro")==0) return SealevelchangeGsubelHydroEnum;
+-	      else if (strcmp(name,"SealevelchangeGUsubelHydro")==0) return SealevelchangeGUsubelHydroEnum;
+-	      else if (strcmp(name,"SealevelchangeGEsubelHydro")==0) return SealevelchangeGEsubelHydroEnum;
+-	      else if (strcmp(name,"SealevelchangeGNsubelHydro")==0) return SealevelchangeGNsubelHydroEnum;
++	      else if (strcmp(name,"SealevelchangeAlphaIndexOcean")==0) return SealevelchangeAlphaIndexOceanEnum;
++	      else if (strcmp(name,"SealevelchangeAlphaIndexIce")==0) return SealevelchangeAlphaIndexIceEnum;
++	      else if (strcmp(name,"SealevelchangeAlphaIndexHydro")==0) return SealevelchangeAlphaIndexHydroEnum;
++	      else if (strcmp(name,"SealevelchangeAzimuthIndexOcean")==0) return SealevelchangeAzimuthIndexOceanEnum;
++	      else if (strcmp(name,"SealevelchangeAzimuthIndexIce")==0) return SealevelchangeAzimuthIndexIceEnum;
++	      else if (strcmp(name,"SealevelchangeAzimuthIndexHydro")==0) return SealevelchangeAzimuthIndexHydroEnum;
+ 	      else if (strcmp(name,"SealevelchangeViscousRSL")==0) return SealevelchangeViscousRSLEnum;
++	      else if (strcmp(name,"SealevelchangeViscousSG")==0) return SealevelchangeViscousSGEnum;
+ 	      else if (strcmp(name,"SealevelchangeViscousU")==0) return SealevelchangeViscousUEnum;
+ 	      else if (strcmp(name,"SealevelchangeViscousN")==0) return SealevelchangeViscousNEnum;
+ 	      else if (strcmp(name,"SealevelchangeViscousE")==0) return SealevelchangeViscousEEnum;
+@@ -992,15 +997,15 @@
+ 	      else if (strcmp(name,"SmbECDt")==0) return SmbECDtEnum;
+ 	      else if (strcmp(name,"SmbECini")==0) return SmbECiniEnum;
+ 	      else if (strcmp(name,"SmbEla")==0) return SmbElaEnum;
+-	      else if (strcmp(name,"SmbEvaporation")==0) return SmbEvaporationEnum;
++         else stage=9;
++   }
++   if(stage==9){
++	      if (strcmp(name,"SmbEvaporation")==0) return SmbEvaporationEnum;
+ 	      else if (strcmp(name,"SmbFAC")==0) return SmbFACEnum;
+ 	      else if (strcmp(name,"SmbGdn")==0) return SmbGdnEnum;
+ 	      else if (strcmp(name,"SmbGdnini")==0) return SmbGdniniEnum;
+ 	      else if (strcmp(name,"SmbGsp")==0) return SmbGspEnum;
+-         else stage=9;
+-   }
+-   if(stage==9){
+-	      if (strcmp(name,"SmbGspini")==0) return SmbGspiniEnum;
++	      else if (strcmp(name,"SmbGspini")==0) return SmbGspiniEnum;
+ 	      else if (strcmp(name,"SmbHref")==0) return SmbHrefEnum;
+ 	      else if (strcmp(name,"SmbIsInitialized")==0) return SmbIsInitializedEnum;
+ 	      else if (strcmp(name,"SmbMAdd")==0) return SmbMAddEnum;
+@@ -1115,15 +1120,15 @@
+ 	      else if (strcmp(name,"VxAverage")==0) return VxAverageEnum;
+ 	      else if (strcmp(name,"VxBase")==0) return VxBaseEnum;
+ 	      else if (strcmp(name,"Vx")==0) return VxEnum;
+-	      else if (strcmp(name,"VxMesh")==0) return VxMeshEnum;
++         else stage=10;
++   }
++   if(stage==10){
++	      if (strcmp(name,"VxMesh")==0) return VxMeshEnum;
+ 	      else if (strcmp(name,"VxObs")==0) return VxObsEnum;
+ 	      else if (strcmp(name,"VxShear")==0) return VxShearEnum;
+ 	      else if (strcmp(name,"VxSurface")==0) return VxSurfaceEnum;
+ 	      else if (strcmp(name,"VyAverage")==0) return VyAverageEnum;
+-         else stage=10;
+-   }
+-   if(stage==10){
+-	      if (strcmp(name,"VyBase")==0) return VyBaseEnum;
++	      else if (strcmp(name,"VyBase")==0) return VyBaseEnum;
+ 	      else if (strcmp(name,"Vy")==0) return VyEnum;
+ 	      else if (strcmp(name,"VyMesh")==0) return VyMeshEnum;
+ 	      else if (strcmp(name,"VyObs")==0) return VyObsEnum;
+@@ -1238,15 +1243,15 @@
+ 	      else if (strcmp(name,"Outputdefinition90")==0) return Outputdefinition90Enum;
+ 	      else if (strcmp(name,"Outputdefinition91")==0) return Outputdefinition91Enum;
+ 	      else if (strcmp(name,"Outputdefinition92")==0) return Outputdefinition92Enum;
+-	      else if (strcmp(name,"Outputdefinition93")==0) return Outputdefinition93Enum;
++         else stage=11;
++   }
++   if(stage==11){
++	      if (strcmp(name,"Outputdefinition93")==0) return Outputdefinition93Enum;
+ 	      else if (strcmp(name,"Outputdefinition94")==0) return Outputdefinition94Enum;
+ 	      else if (strcmp(name,"Outputdefinition95")==0) return Outputdefinition95Enum;
+ 	      else if (strcmp(name,"Outputdefinition96")==0) return Outputdefinition96Enum;
+ 	      else if (strcmp(name,"Outputdefinition97")==0) return Outputdefinition97Enum;
+-         else stage=11;
+-   }
+-   if(stage==11){
+-	      if (strcmp(name,"Outputdefinition98")==0) return Outputdefinition98Enum;
++	      else if (strcmp(name,"Outputdefinition98")==0) return Outputdefinition98Enum;
+ 	      else if (strcmp(name,"Outputdefinition99")==0) return Outputdefinition99Enum;
+ 	      else if (strcmp(name,"Outputdefinition9")==0) return Outputdefinition9Enum;
+ 	      else if (strcmp(name,"Outputdefinition100")==0) return Outputdefinition100Enum;
+@@ -1361,15 +1366,15 @@
+ 	      else if (strcmp(name,"FrontalForcingsRignot")==0) return FrontalForcingsRignotEnum;
+ 	      else if (strcmp(name,"FrontalForcingsRignotAutoregression")==0) return FrontalForcingsRignotAutoregressionEnum;
+ 	      else if (strcmp(name,"Fset")==0) return FsetEnum;
+-	      else if (strcmp(name,"FullMeltOnPartiallyFloating")==0) return FullMeltOnPartiallyFloatingEnum;
++         else stage=12;
++   }
++   if(stage==12){
++	      if (strcmp(name,"FullMeltOnPartiallyFloating")==0) return FullMeltOnPartiallyFloatingEnum;
+ 	      else if (strcmp(name,"GLheightadvectionAnalysis")==0) return GLheightadvectionAnalysisEnum;
+ 	      else if (strcmp(name,"GaussPenta")==0) return GaussPentaEnum;
+ 	      else if (strcmp(name,"GaussSeg")==0) return GaussSegEnum;
+ 	      else if (strcmp(name,"GaussTetra")==0) return GaussTetraEnum;
+-         else stage=12;
+-   }
+-   if(stage==12){
+-	      if (strcmp(name,"GaussTria")==0) return GaussTriaEnum;
++	      else if (strcmp(name,"GaussTria")==0) return GaussTriaEnum;
+ 	      else if (strcmp(name,"GenericOption")==0) return GenericOptionEnum;
+ 	      else if (strcmp(name,"GenericParam")==0) return GenericParamEnum;
+ 	      else if (strcmp(name,"GenericExternalResult")==0) return GenericExternalResultEnum;
+@@ -1445,6 +1450,8 @@
+ 	      else if (strcmp(name,"LoveTidalLt")==0) return LoveTidalLtEnum;
+ 	      else if (strcmp(name,"LovePMTF1t")==0) return LovePMTF1tEnum;
+ 	      else if (strcmp(name,"LovePMTF2t")==0) return LovePMTF2tEnum;
++	      else if (strcmp(name,"LoveYi")==0) return LoveYiEnum;
++	      else if (strcmp(name,"LoveRhs")==0) return LoveRhsEnum;
+ 	      else if (strcmp(name,"LoveSolution")==0) return LoveSolutionEnum;
+ 	      else if (strcmp(name,"MINI")==0) return MINIEnum;
+ 	      else if (strcmp(name,"MINIcondensed")==0) return MINIcondensedEnum;
+@@ -1482,7 +1489,10 @@
+ 	      else if (strcmp(name,"MinVz")==0) return MinVzEnum;
+ 	      else if (strcmp(name,"MismipFloatingMeltRate")==0) return MismipFloatingMeltRateEnum;
+ 	      else if (strcmp(name,"Moulin")==0) return MoulinEnum;
+-	      else if (strcmp(name,"MpiDense")==0) return MpiDenseEnum;
++         else stage=13;
++   }
++   if(stage==13){
++	      if (strcmp(name,"MpiDense")==0) return MpiDenseEnum;
+ 	      else if (strcmp(name,"Mpi")==0) return MpiEnum;
+ 	      else if (strcmp(name,"MpiSparse")==0) return MpiSparseEnum;
+ 	      else if (strcmp(name,"Mumps")==0) return MumpsEnum;
+@@ -1489,10 +1499,7 @@
+ 	      else if (strcmp(name,"NoFrictionOnPartiallyFloating")==0) return NoFrictionOnPartiallyFloatingEnum;
+ 	      else if (strcmp(name,"NoMeltOnPartiallyFloating")==0) return NoMeltOnPartiallyFloatingEnum;
+ 	      else if (strcmp(name,"Nodal")==0) return NodalEnum;
+-         else stage=13;
+-   }
+-   if(stage==13){
+-	      if (strcmp(name,"Nodalvalue")==0) return NodalvalueEnum;
++	      else if (strcmp(name,"Nodalvalue")==0) return NodalvalueEnum;
+ 	      else if (strcmp(name,"NodeSId")==0) return NodeSIdEnum;
+ 	      else if (strcmp(name,"NoneApproximation")==0) return NoneApproximationEnum;
+ 	      else if (strcmp(name,"None")==0) return NoneEnum;
+@@ -1605,7 +1612,10 @@
+ 	      else if (strcmp(name,"ThermalSolution")==0) return ThermalSolutionEnum;
+ 	      else if (strcmp(name,"ThicknessErrorEstimator")==0) return ThicknessErrorEstimatorEnum;
+ 	      else if (strcmp(name,"TotalCalvingFluxLevelset")==0) return TotalCalvingFluxLevelsetEnum;
+-	      else if (strcmp(name,"TotalCalvingMeltingFluxLevelset")==0) return TotalCalvingMeltingFluxLevelsetEnum;
++         else stage=14;
++   }
++   if(stage==14){
++	      if (strcmp(name,"TotalCalvingMeltingFluxLevelset")==0) return TotalCalvingMeltingFluxLevelsetEnum;
+ 	      else if (strcmp(name,"TotalFloatingBmb")==0) return TotalFloatingBmbEnum;
+ 	      else if (strcmp(name,"TotalFloatingBmbScaled")==0) return TotalFloatingBmbScaledEnum;
+ 	      else if (strcmp(name,"TotalGroundedBmb")==0) return TotalGroundedBmbEnum;
+@@ -1612,10 +1622,7 @@
+ 	      else if (strcmp(name,"TotalGroundedBmbScaled")==0) return TotalGroundedBmbScaledEnum;
+ 	      else if (strcmp(name,"TotalSmb")==0) return TotalSmbEnum;
+ 	      else if (strcmp(name,"TotalSmbScaled")==0) return TotalSmbScaledEnum;
+-         else stage=14;
+-   }
+-   if(stage==14){
+-	      if (strcmp(name,"TransientArrayParam")==0) return TransientArrayParamEnum;
++	      else if (strcmp(name,"TransientArrayParam")==0) return TransientArrayParamEnum;
+ 	      else if (strcmp(name,"TransientInput")==0) return TransientInputEnum;
+ 	      else if (strcmp(name,"TransientParam")==0) return TransientParamEnum;
+ 	      else if (strcmp(name,"TransientSolution")==0) return TransientSolutionEnum;
Index: /issm/oecreview/Archive/27032-27229/ISSM-27131-27132.diff
===================================================================
--- /issm/oecreview/Archive/27032-27229/ISSM-27131-27132.diff	(revision 27230)
+++ /issm/oecreview/Archive/27032-27229/ISSM-27131-27132.diff	(revision 27230)
@@ -0,0 +1,190 @@
+Index: ../trunk-jpl/src/c/shared/Enum/EnumDefinitions.h
+===================================================================
+--- ../trunk-jpl/src/c/shared/Enum/EnumDefinitions.h	(revision 27131)
++++ ../trunk-jpl/src/c/shared/Enum/EnumDefinitions.h	(revision 27132)
+@@ -283,6 +283,7 @@
+ 	LoveInnerCoreBoundaryEnum,
+ 	LoveComplexComputationEnum,
+ 	LoveQuadPrecisionEnum,
++	LoveIntStepsPerLayerEnum,
+ 	LoveMinIntegrationStepsEnum,
+ 	LoveMaxIntegrationdrEnum,
+ 	LoveKernelsEnum,
+Index: ../trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp
+===================================================================
+--- ../trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp	(revision 27131)
++++ ../trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp	(revision 27132)
+@@ -291,6 +291,7 @@
+ 		case LoveInnerCoreBoundaryEnum : return "LoveInnerCoreBoundary";
+ 		case LoveComplexComputationEnum : return "LoveComplexComputation";
+ 		case LoveQuadPrecisionEnum : return "LoveQuadPrecision";
++		case LoveIntStepsPerLayerEnum : return "LoveIntStepsPerLayer";
+ 		case LoveMinIntegrationStepsEnum : return "LoveMinIntegrationSteps";
+ 		case LoveMaxIntegrationdrEnum : return "LoveMaxIntegrationdr";
+ 		case LoveKernelsEnum : return "LoveKernels";
+Index: ../trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp
+===================================================================
+--- ../trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp	(revision 27131)
++++ ../trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp	(revision 27132)
+@@ -297,6 +297,7 @@
+ 	      else if (strcmp(name,"LoveInnerCoreBoundary")==0) return LoveInnerCoreBoundaryEnum;
+ 	      else if (strcmp(name,"LoveComplexComputation")==0) return LoveComplexComputationEnum;
+ 	      else if (strcmp(name,"LoveQuadPrecision")==0) return LoveQuadPrecisionEnum;
++	      else if (strcmp(name,"LoveIntStepsPerLayer")==0) return LoveIntStepsPerLayerEnum;
+ 	      else if (strcmp(name,"LoveMinIntegrationSteps")==0) return LoveMinIntegrationStepsEnum;
+ 	      else if (strcmp(name,"LoveMaxIntegrationdr")==0) return LoveMaxIntegrationdrEnum;
+ 	      else if (strcmp(name,"LoveKernels")==0) return LoveKernelsEnum;
+@@ -381,11 +382,11 @@
+ 	      else if (strcmp(name,"Results")==0) return ResultsEnum;
+ 	      else if (strcmp(name,"RootPath")==0) return RootPathEnum;
+ 	      else if (strcmp(name,"Modelname")==0) return ModelnameEnum;
+-	      else if (strcmp(name,"SamplingAlpha")==0) return SamplingAlphaEnum;
+          else stage=4;
+    }
+    if(stage==4){
+-	      if (strcmp(name,"SamplingNumRequestedOutputs")==0) return SamplingNumRequestedOutputsEnum;
++	      if (strcmp(name,"SamplingAlpha")==0) return SamplingAlphaEnum;
++	      else if (strcmp(name,"SamplingNumRequestedOutputs")==0) return SamplingNumRequestedOutputsEnum;
+ 	      else if (strcmp(name,"SamplingRequestedOutputs")==0) return SamplingRequestedOutputsEnum;
+ 	      else if (strcmp(name,"SamplingRobin")==0) return SamplingRobinEnum;
+ 	      else if (strcmp(name,"SamplingSeed")==0) return SamplingSeedEnum;
+@@ -504,11 +505,11 @@
+ 	      else if (strcmp(name,"SmbIsdensification")==0) return SmbIsdensificationEnum;
+ 	      else if (strcmp(name,"SmbIsdeltaLWup")==0) return SmbIsdeltaLWupEnum;
+ 	      else if (strcmp(name,"SmbIsfirnwarming")==0) return SmbIsfirnwarmingEnum;
+-	      else if (strcmp(name,"SmbIsgraingrowth")==0) return SmbIsgraingrowthEnum;
+          else stage=5;
+    }
+    if(stage==5){
+-	      if (strcmp(name,"SmbIsmelt")==0) return SmbIsmeltEnum;
++	      if (strcmp(name,"SmbIsgraingrowth")==0) return SmbIsgraingrowthEnum;
++	      else if (strcmp(name,"SmbIsmelt")==0) return SmbIsmeltEnum;
+ 	      else if (strcmp(name,"SmbIsmungsm")==0) return SmbIsmungsmEnum;
+ 	      else if (strcmp(name,"SmbIsprecipscaled")==0) return SmbIsprecipscaledEnum;
+ 	      else if (strcmp(name,"SmbIssetpddfac")==0) return SmbIssetpddfacEnum;
+@@ -627,11 +628,11 @@
+ 	      else if (strcmp(name,"Adjointz")==0) return AdjointzEnum;
+ 	      else if (strcmp(name,"Air")==0) return AirEnum;
+ 	      else if (strcmp(name,"Approximation")==0) return ApproximationEnum;
+-	      else if (strcmp(name,"BalancethicknessMisfit")==0) return BalancethicknessMisfitEnum;
+          else stage=6;
+    }
+    if(stage==6){
+-	      if (strcmp(name,"BalancethicknessOmega0")==0) return BalancethicknessOmega0Enum;
++	      if (strcmp(name,"BalancethicknessMisfit")==0) return BalancethicknessMisfitEnum;
++	      else if (strcmp(name,"BalancethicknessOmega0")==0) return BalancethicknessOmega0Enum;
+ 	      else if (strcmp(name,"BalancethicknessOmega")==0) return BalancethicknessOmegaEnum;
+ 	      else if (strcmp(name,"BalancethicknessSpcthickness")==0) return BalancethicknessSpcthicknessEnum;
+ 	      else if (strcmp(name,"BalancethicknessThickeningRate")==0) return BalancethicknessThickeningRateEnum;
+@@ -750,11 +751,11 @@
+ 	      else if (strcmp(name,"EsaUmotion")==0) return EsaUmotionEnum;
+ 	      else if (strcmp(name,"EsaXmotion")==0) return EsaXmotionEnum;
+ 	      else if (strcmp(name,"EsaYmotion")==0) return EsaYmotionEnum;
+-	      else if (strcmp(name,"EtaDiff")==0) return EtaDiffEnum;
+          else stage=7;
+    }
+    if(stage==7){
+-	      if (strcmp(name,"FlowequationBorderFS")==0) return FlowequationBorderFSEnum;
++	      if (strcmp(name,"EtaDiff")==0) return EtaDiffEnum;
++	      else if (strcmp(name,"FlowequationBorderFS")==0) return FlowequationBorderFSEnum;
+ 	      else if (strcmp(name,"FrictionAs")==0) return FrictionAsEnum;
+ 	      else if (strcmp(name,"FrictionC")==0) return FrictionCEnum;
+ 	      else if (strcmp(name,"FrictionCmax")==0) return FrictionCmaxEnum;
+@@ -873,11 +874,11 @@
+ 	      else if (strcmp(name,"RheologyBbarAbsGradient")==0) return RheologyBbarAbsGradientEnum;
+ 	      else if (strcmp(name,"Sample")==0) return SampleEnum;
+ 	      else if (strcmp(name,"SampleOld")==0) return SampleOldEnum;
+-	      else if (strcmp(name,"SampleNoise")==0) return SampleNoiseEnum;
+          else stage=8;
+    }
+    if(stage==8){
+-	      if (strcmp(name,"SamplingBeta")==0) return SamplingBetaEnum;
++	      if (strcmp(name,"SampleNoise")==0) return SampleNoiseEnum;
++	      else if (strcmp(name,"SamplingBeta")==0) return SamplingBetaEnum;
+ 	      else if (strcmp(name,"SamplingKappa")==0) return SamplingKappaEnum;
+ 	      else if (strcmp(name,"SamplingPhi")==0) return SamplingPhiEnum;
+ 	      else if (strcmp(name,"SamplingTau")==0) return SamplingTauEnum;
+@@ -996,11 +997,11 @@
+ 	      else if (strcmp(name,"SmbEC")==0) return SmbECEnum;
+ 	      else if (strcmp(name,"SmbECDt")==0) return SmbECDtEnum;
+ 	      else if (strcmp(name,"SmbECini")==0) return SmbECiniEnum;
+-	      else if (strcmp(name,"SmbEla")==0) return SmbElaEnum;
+          else stage=9;
+    }
+    if(stage==9){
+-	      if (strcmp(name,"SmbEvaporation")==0) return SmbEvaporationEnum;
++	      if (strcmp(name,"SmbEla")==0) return SmbElaEnum;
++	      else if (strcmp(name,"SmbEvaporation")==0) return SmbEvaporationEnum;
+ 	      else if (strcmp(name,"SmbFAC")==0) return SmbFACEnum;
+ 	      else if (strcmp(name,"SmbGdn")==0) return SmbGdnEnum;
+ 	      else if (strcmp(name,"SmbGdnini")==0) return SmbGdniniEnum;
+@@ -1119,11 +1120,11 @@
+ 	      else if (strcmp(name,"Vel")==0) return VelEnum;
+ 	      else if (strcmp(name,"VxAverage")==0) return VxAverageEnum;
+ 	      else if (strcmp(name,"VxBase")==0) return VxBaseEnum;
+-	      else if (strcmp(name,"Vx")==0) return VxEnum;
+          else stage=10;
+    }
+    if(stage==10){
+-	      if (strcmp(name,"VxMesh")==0) return VxMeshEnum;
++	      if (strcmp(name,"Vx")==0) return VxEnum;
++	      else if (strcmp(name,"VxMesh")==0) return VxMeshEnum;
+ 	      else if (strcmp(name,"VxObs")==0) return VxObsEnum;
+ 	      else if (strcmp(name,"VxShear")==0) return VxShearEnum;
+ 	      else if (strcmp(name,"VxSurface")==0) return VxSurfaceEnum;
+@@ -1242,11 +1243,11 @@
+ 	      else if (strcmp(name,"Outputdefinition8")==0) return Outputdefinition8Enum;
+ 	      else if (strcmp(name,"Outputdefinition90")==0) return Outputdefinition90Enum;
+ 	      else if (strcmp(name,"Outputdefinition91")==0) return Outputdefinition91Enum;
+-	      else if (strcmp(name,"Outputdefinition92")==0) return Outputdefinition92Enum;
+          else stage=11;
+    }
+    if(stage==11){
+-	      if (strcmp(name,"Outputdefinition93")==0) return Outputdefinition93Enum;
++	      if (strcmp(name,"Outputdefinition92")==0) return Outputdefinition92Enum;
++	      else if (strcmp(name,"Outputdefinition93")==0) return Outputdefinition93Enum;
+ 	      else if (strcmp(name,"Outputdefinition94")==0) return Outputdefinition94Enum;
+ 	      else if (strcmp(name,"Outputdefinition95")==0) return Outputdefinition95Enum;
+ 	      else if (strcmp(name,"Outputdefinition96")==0) return Outputdefinition96Enum;
+@@ -1365,11 +1366,11 @@
+ 	      else if (strcmp(name,"FrontalForcingsDefault")==0) return FrontalForcingsDefaultEnum;
+ 	      else if (strcmp(name,"FrontalForcingsRignot")==0) return FrontalForcingsRignotEnum;
+ 	      else if (strcmp(name,"FrontalForcingsRignotAutoregression")==0) return FrontalForcingsRignotAutoregressionEnum;
+-	      else if (strcmp(name,"Fset")==0) return FsetEnum;
+          else stage=12;
+    }
+    if(stage==12){
+-	      if (strcmp(name,"FullMeltOnPartiallyFloating")==0) return FullMeltOnPartiallyFloatingEnum;
++	      if (strcmp(name,"Fset")==0) return FsetEnum;
++	      else if (strcmp(name,"FullMeltOnPartiallyFloating")==0) return FullMeltOnPartiallyFloatingEnum;
+ 	      else if (strcmp(name,"GLheightadvectionAnalysis")==0) return GLheightadvectionAnalysisEnum;
+ 	      else if (strcmp(name,"GaussPenta")==0) return GaussPentaEnum;
+ 	      else if (strcmp(name,"GaussSeg")==0) return GaussSegEnum;
+@@ -1488,11 +1489,11 @@
+ 	      else if (strcmp(name,"MinVy")==0) return MinVyEnum;
+ 	      else if (strcmp(name,"MinVz")==0) return MinVzEnum;
+ 	      else if (strcmp(name,"MismipFloatingMeltRate")==0) return MismipFloatingMeltRateEnum;
+-	      else if (strcmp(name,"Moulin")==0) return MoulinEnum;
+          else stage=13;
+    }
+    if(stage==13){
+-	      if (strcmp(name,"MpiDense")==0) return MpiDenseEnum;
++	      if (strcmp(name,"Moulin")==0) return MoulinEnum;
++	      else if (strcmp(name,"MpiDense")==0) return MpiDenseEnum;
+ 	      else if (strcmp(name,"Mpi")==0) return MpiEnum;
+ 	      else if (strcmp(name,"MpiSparse")==0) return MpiSparseEnum;
+ 	      else if (strcmp(name,"Mumps")==0) return MumpsEnum;
+@@ -1611,11 +1612,11 @@
+ 	      else if (strcmp(name,"ThermalAnalysis")==0) return ThermalAnalysisEnum;
+ 	      else if (strcmp(name,"ThermalSolution")==0) return ThermalSolutionEnum;
+ 	      else if (strcmp(name,"ThicknessErrorEstimator")==0) return ThicknessErrorEstimatorEnum;
+-	      else if (strcmp(name,"TotalCalvingFluxLevelset")==0) return TotalCalvingFluxLevelsetEnum;
+          else stage=14;
+    }
+    if(stage==14){
+-	      if (strcmp(name,"TotalCalvingMeltingFluxLevelset")==0) return TotalCalvingMeltingFluxLevelsetEnum;
++	      if (strcmp(name,"TotalCalvingFluxLevelset")==0) return TotalCalvingFluxLevelsetEnum;
++	      else if (strcmp(name,"TotalCalvingMeltingFluxLevelset")==0) return TotalCalvingMeltingFluxLevelsetEnum;
+ 	      else if (strcmp(name,"TotalFloatingBmb")==0) return TotalFloatingBmbEnum;
+ 	      else if (strcmp(name,"TotalFloatingBmbScaled")==0) return TotalFloatingBmbScaledEnum;
+ 	      else if (strcmp(name,"TotalGroundedBmb")==0) return TotalGroundedBmbEnum;
Index: /issm/oecreview/Archive/27032-27229/ISSM-27132-27133.diff
===================================================================
--- /issm/oecreview/Archive/27032-27229/ISSM-27132-27133.diff	(revision 27230)
+++ /issm/oecreview/Archive/27032-27229/ISSM-27132-27133.diff	(revision 27230)
@@ -0,0 +1,29 @@
+Index: ../trunk-jpl/test/NightlyRun/test2010.m
+===================================================================
+--- ../trunk-jpl/test/NightlyRun/test2010.m	(revision 27132)
++++ ../trunk-jpl/test/NightlyRun/test2010.m	(revision 27133)
+@@ -109,9 +109,9 @@
+ 
+ lat=md.results.TransientSolution.SealevelBarystaticIceLatbar*pi/180;
+ lon=md.results.TransientSolution.SealevelBarystaticIceLongbar*pi/180;
+-moi_xz = sum(-loadice.*areaice.*rad_e^2.*sin(lat).*cos(lat).*cos(lon));
+-moi_yz = sum(-loadice.*areaice.*rad_e^2.*sin(lat).*cos(lat).*sin(lon));
+-moi_zz = sum(-loadice.*areaice.*rad_e^2.*(-1.0/3.0+sin(lat).^2));
++moi_xz = sum(-loadice.*rad_e^2.*sin(lat).*cos(lat).*cos(lon));
++moi_yz = sum(-loadice.*rad_e^2.*sin(lat).*cos(lat).*sin(lon));
++moi_zz = sum(-loadice.*rad_e^2.*(-1.0/3.0+sin(lat).^2));
+ theoretical_value_check=[moixz/moi_xz moiyz/moi_yz moizz/moi_zz]; % should yield [1.0 1.0 1.0]
+ % }}}
+ 
+Index: ../trunk-jpl/test/NightlyRun/test2013.m
+===================================================================
+--- ../trunk-jpl/test/NightlyRun/test2013.m	(revision 27132)
++++ ../trunk-jpl/test/NightlyRun/test2013.m	(revision 27133)
+@@ -98,6 +98,7 @@
+ longbar=md.results.TransientSolution.SealevelBarystaticIceLongbar;
+ latbar=md.results.TransientSolution.SealevelBarystaticIceLatbar;
+ 
++loads=loads./areas;
+ 
+ %Fields and tolerances to track changes
+ field_names     ={'Mask', 'LoadAreas', 'SurfaceLoad', 'LoadWeights','LatitudeLoadBarycenter', 'LongitudeLoadBarycenter'};
Index: /issm/oecreview/Archive/27032-27229/ISSM-27142-27143.diff
===================================================================
--- /issm/oecreview/Archive/27032-27229/ISSM-27142-27143.diff	(revision 27230)
+++ /issm/oecreview/Archive/27032-27229/ISSM-27142-27143.diff	(revision 27230)
@@ -0,0 +1,1337 @@
+Index: ../trunk-jpl/src/m/contrib/defleurian/paraview/exportVTK.py
+===================================================================
+--- ../trunk-jpl/src/m/contrib/defleurian/paraview/exportVTK.py	(revision 27142)
++++ ../trunk-jpl/src/m/contrib/defleurian/paraview/exportVTK.py	(revision 27143)
+@@ -28,10 +28,24 @@
+ 
+     Basile de Fleurian:
+     '''
++    #verbosity of the code, 0 is no messages, 5 is chatty
++    verbose = 0
+ 
++    print("""
++    =========================================
++    #     A                                 #
++    #    / \      exportVTK is now obsolete #
++    #   / | \     You should use export VTU #
++    #  /  |  \    faster, smaller files     #
++    # /   o   \   and more capacities       #
++    # ---------                             #
++    #========================================
++    """)
++
++
+     for key in kwargs.keys():
+         if key not in ['clipping', 'coarsetime', 'singletime']:
+-            raise BadOption('Provided option "{}" is not supported possibilities are : {}'.format(key, ['cliping', 'coarsetime']))
++            raise BadOption('Provided option "{}" is not supported possibilities are : {}'.format(key, ['cliping', 'coarsetime', 'singletime']))
+ 
+     if 'coarsetime' in kwargs.keys() and 'singletime' in kwargs.keys():
+         raise BadOption("You can't specify both 'coarsetime' and 'singletime'")
+@@ -55,7 +69,8 @@
+     # }}}
+ 
+     # this is the result structure {{{
+-    print('Getting accessorie variables')
++    if verbose > 3:
++        print('Getting accessorie variables')
+     res_struct = md.results
+     moving_mesh = False
+     if(type(res_struct) != list):
+@@ -79,11 +94,17 @@
+     # }}}
+ 
+     # get the element related variables {{{
+-    print('Now treating  the mesh')
++    if verbose > 3:
++        print('Now treating  the mesh')
+     #first get the general things
+     dim = int(md.mesh.domaintype()[0])
+     every_nodes = md.mesh.numberofvertices
+     every_cells = md.mesh.numberofelements
++    try:
++        every_edges = md.mesh.numberofedges
++    except AttributeError:
++        #3D meshes do not have edges
++        every_edges = 0
+ 
+     if np.shape(md.mesh.elements)[1] == 3 or enveloppe:
+         point_per_elt = 3
+@@ -102,6 +123,8 @@
+             enveloppe_index = np.where(is_enveloppe)[0]
+             convert_index = np.nan * np.ones(np.shape(md.mesh.x))
+             convert_index = np.asarray([[i, np.where(enveloppe_index == i)[0][0]] for i, val in enumerate(convert_index) if any(enveloppe_index == i)])
++
++            num_of_points = np.size(enveloppe_index)
+             points = np.column_stack((md.mesh.x[enveloppe_index],
+                                       md.mesh.y[enveloppe_index],
+                                       md.mesh.z[enveloppe_index]))
+@@ -113,7 +136,10 @@
+                 connect[elt, 1] = convert_index[np.where(convert_index == connect[elt, 1])[0], 1][0]
+                 connect[elt, 2] = convert_index[np.where(convert_index == connect[elt, 2])[0], 1][0]
+ 
+-            num_of_points = np.size(enveloppe_index)
++            num_of_edges = every_edges  #looks like edges is only defined on the 2d mesh
++            if num_of_edges > 0:
++                edges = md.mesh.edges[:, 0:2].reshape(int(num_of_edges), 2) - 1
++
+         else:
+             raise BadDimension("exportVTK can't get an enveloppe for  dimension {}".format(dim))
+ 
+@@ -121,6 +147,9 @@
+         #we get all the mesh, mainly defining dummies
+         num_of_elt = every_cells
+         connect = md.mesh.elements - 1
++        num_of_edges = every_edges
++        if num_of_edges > 0:
++            edges = md.mesh.edges[:, 0:2].reshape(int(num_of_edges), 2) - 1
+         enveloppe_index = np.arange(0, np.size(md.mesh.x))
+         num_of_points = every_nodes
+         if dim == 2:
+@@ -128,7 +157,8 @@
+                                         1 : md.geometry.surface
+                                         2 : md.geometry.base
+                                         3 : md.geometry.bed
+-                                        4 : 0\n''')
++                                        4 : 0
++                                        5 : Custom\n''')
+             if mesh_alti == '1':
+                 points = np.column_stack((md.mesh.x, md.mesh.y, md.geometry.surface))
+             elif mesh_alti == '2':
+@@ -137,6 +167,13 @@
+                 points = np.column_stack((md.mesh.x, md.mesh.y, md.geometry.bed))
+             elif mesh_alti == '4':
+                 points = np.column_stack((md.mesh.x, md.mesh.y, 0. * md.mesh.x))
++            elif mesh_alti == '5':
++                alti_field = input("Which field should be used as 3rd dimension: ")
++                alti_var = eval(alti_field)
++                if np.shape(np.squeeze(alti_var)) == np.shape(md.mesh.x):
++                    points = np.column_stack((md.mesh.x, md.mesh.y, np.squeeze(alti_var)))
++                else:
++                    raise BadDimension('field given for 3rd dimension should be defined on vertices {} is not.'.format(alti_field))
+             else:
+                 points = np.column_stack((md.mesh.x, md.mesh.y, md.geometry.surface))
+         elif dim == 3:
+@@ -165,21 +202,26 @@
+             Isinside = np.zeros(np.shape(points)[0], dtype=bool)
+             clip_convert_index = np.nan * np.ones(np.shape(points)[0])
+ 
++            #define the vertices that are within clipping window
+             Inclipping = np.intersect1d(InX, InY)
+             Isinside[Inclipping] = True
+             points = points[Inclipping, :]
+             num_of_points = np.shape(points)[0]
+ 
++            #go thorough the elements and keep those for which one node is in the clipped arrea
+             clipconnect = np.asarray([], dtype=int)
+             for elt in connect:
+                 if set(elt).issubset(Inclipping):
+                     clipconnect = np.append(clipconnect, elt, axis=0)
+ 
++            #reshape
+             num_of_elt = int(np.size(clipconnect) / 3)
+             connect = clipconnect.reshape(num_of_elt, 3)
+ 
+             clip_convert_index = np.asarray([[i, np.where(Inclipping == i)[0][0]] for i, val in enumerate(clip_convert_index) if any(Inclipping == i)])
+             enveloppe_index = enveloppe_index[clip_convert_index[:, 0]]
++
++            #convert indexing and exclude elements that are partly outside of the region
+             for elt in range(0, num_of_elt):
+                 try:
+                     connect[elt, 0] = clip_convert_index[np.where(clip_convert_index == connect[elt, 0])[0], 1][0]
+@@ -197,9 +239,32 @@
+             connect = connect[np.where(connect != -1)[0], :]
+             num_of_elt = np.shape(connect)[0]
+ 
++            if num_of_edges > 0:
++                clipedges = np.asarray([], dtype=int)
++                for edge in edges:
++                    if set(edge).issubset(Inclipping):
++                        clipedges = np.append(clipedges, edge, axis=0)
++
++                num_of_edges = int(np.size(clipedges) / 2)
++                edges = clipedges.reshape(num_of_edges, 2)
++
++                for edge in range(0, num_of_edges):
++                    try:
++                        edges[edge, 0] = clip_convert_index[np.where(clip_convert_index == edges[edge, 0])[0], 1][0]
++                    except IndexError:
++                        edges[edge, 0] = -1
++                    try:
++                        edges[edge, 1] = clip_convert_index[np.where(clip_convert_index == edges[edge, 1])[0], 1][0]
++                    except IndexError:
++                        edges[edge, 1] = -1
++                edges = edges[np.where(edges != -1)[0], :]
++                num_of_edges = np.shape(edges)[0]
++
+     # }}}
++
+     # write header and mesh {{{
+-    print('Now starting to write stuff')
++    if verbose > 3:
++        print('Now starting to write stuff')
+ 
+     if 'coarsetime' in kwargs.keys():
+         steplist = range(0, num_of_timesteps, kwargs['coarsetime'])
+@@ -209,216 +274,243 @@
+         steplist = range(0, num_of_timesteps)
+ 
+     for step in steplist:
+-        print('Writing for step {}'.format(step))
++        if verbose > 2:
++            print('Writing for step {}'.format(step))
+         saved_cells = {}
++        saved_edges = {}
+         timestep = step
+-        fid = open((filename + '/Timestep.vtk' + str(timestep) + '.vtk'), 'w+')
+-        fid.write('# vtk DataFile Version 3.0 \n')
+-        fid.write('Data for run {} \n'.format(md.miscellaneous.name))
+-        fid.write('ASCII \n')
+-        fid.write('DATASET UNSTRUCTURED_GRID \n')
+-        fid.write('POINTS {:d} float\n'.format(num_of_points))
+-    #updating z for mesh evolution
+-        if moving_mesh and mesh_alti in ['1', '2']:
+-            base = np.squeeze(res_struct.__dict__['TransientSolution'][step].__dict__['Base'][enveloppe_index])
+-            thick_change_ratio = (np.squeeze(res_struct.__dict__['TransientSolution'][step].__dict__['Thickness'][enveloppe_index]) / md.geometry.thickness[enveloppe_index])
+-            above_bed = points[:, 2] - md.geometry.base[enveloppe_index]
+-            altitude = base + thick_change_ratio * above_bed
+-        else:
+-            altitude = points[:, 2]
+-        for index, point in enumerate(points):
+-            fid.write('{:f} {:f} {:f} \n'.format(point[0], point[1], altitude[index]))
++        with open((filename + '/Timestep.vtk' + str(timestep) + '.vtk'), 'w+') as fid:
++            fid.write('# vtk DataFile Version 3.0 \n')
++            fid.write('Data for run {} \n'.format(md.miscellaneous.name))
++            fid.write('ASCII \n')
++            fid.write('DATASET UNSTRUCTURED_GRID \n')
++            fid.write('POINTS {:d} float\n'.format(num_of_points))
++            #updating z for mesh evolution
++            if moving_mesh and mesh_alti in ['1', '2']:
++                base = np.squeeze(res_struct.__dict__['TransientSolution'][step].__dict__['Base'][enveloppe_index])
++                thick_change_ratio = (np.squeeze(res_struct.__dict__['TransientSolution'][step].__dict__['Thickness'][enveloppe_index]) / md.geometry.thickness[enveloppe_index])
++                above_bed = points[:, 2] - md.geometry.base[enveloppe_index]
++                altitude = base + thick_change_ratio * above_bed
++            else:
++                altitude = points[:, 2]
++            for index, point in enumerate(points):
++                fid.write('{:f} {:f} {:f} \n'.format(point[0], point[1], altitude[index]))
+ 
+-        fid.write('CELLS {:d} {:d}\n'.format(num_of_elt, num_of_elt * (point_per_elt + 1)))
++            fid.write('CELLS {:d} {:d}\n'.format((num_of_elt + num_of_edges), num_of_elt  * (point_per_elt + 1) + num_of_edges * 3))
+ 
+-        for elt in range(0, num_of_elt):
+-            if celltype == 5:
+-                fid.write('3 {:d} {:d} {:d}\n'.format(connect[elt, 0],
+-                                                      connect[elt, 1],
+-                                                      connect[elt, 2]))
+-            elif celltype == 13:
+-                fid.write('6 {:d} {:d} {:d} {:d} {:d} {:d}\n'.format(connect[elt, 0],
+-                                                                     connect[elt, 1],
+-                                                                     connect[elt, 2],
+-                                                                     connect[elt, 3],
+-                                                                     connect[elt, 4],
+-                                                                     connect[elt, 5]))
++            for elt in range(0, num_of_elt):
++                if celltype == 5:
++                    fid.write('3 {:d} {:d} {:d}\n'.format(connect[elt, 0],
++                                                          connect[elt, 1],
++                                                          connect[elt, 2]))
++                elif celltype == 13:
++                    fid.write('6 {:d} {:d} {:d} {:d} {:d} {:d}\n'.format(connect[elt, 0],
++                                                                         connect[elt, 1],
++                                                                         connect[elt, 2],
++                                                                         connect[elt, 3],
++                                                                         connect[elt, 4],
++                                                                         connect[elt, 5]))
++            for edge in range(0, num_of_edges):
++                fid.write('2 {:d} {:d}\n'.format(edges[edge, 0],
++                                                 edges[edge, 1]))
+ 
+-        fid.write('CELL_TYPES {:d}\n'.format(num_of_elt))
+-        for elt in range(0, num_of_elt):
+-            fid.write('{:d}\n'.format(celltype))
++            fid.write('CELL_TYPES {:d}\n'.format(num_of_elt + num_of_edges))
++            for elt in range(0, num_of_elt):
++                fid.write('{:d}\n'.format(celltype))
++                for edge in range(0, num_of_edges):
++                    fid.write('3\n')  #3 is for lines
+ 
+-        fid.write('POINT_DATA {:s} \n'.format(str(num_of_points)))
+-    # }}}
+-    # {{{loop over the different solution structures
+-    # first check if there are solutions to grab
+-        if 'solnames' in locals():
+-            for sol in solnames:
+-                treated_res = []
+-                #dealing with results on different timesteps
+-                try:
+-                    if(len(res_struct.__dict__[sol]) > timestep):
+-                        timestep = step
++            fid.write('POINT_DATA {:s} \n'.format(str(num_of_points)))
++            # }}}
++            # {{{loop over the different solution structures
++            # first check if there are solutions to grab
++            if 'solnames' in locals():
++                for sol in solnames:
++                    treated_res = []
++                    #dealing with results on different timesteps
++                    try:
++                        if(len(res_struct.__dict__[sol]) > timestep):
++                            timestep = step
++                        else:
++                            timestep = np.size(res_struct.__dict__[sol])
++                    except TypeError:
++                        #result as no len() so no timesteps
++                        timestep = 1
++
++                    #getting the  fields in the solution
++                    if(type(res_struct.__dict__[sol]).__name__ == 'solution'):
++                        spe_res_struct = res_struct.__dict__[sol].__getitem__(timestep)
++                        fieldnames = list(dict.keys(spe_res_struct.__dict__))
++                    elif(type(res_struct.__dict__[sol]).__name__ == 'solutionstep'):
++                        spe_res_struct = res_struct.__dict__[sol]
++                        fieldnames = list(dict.keys(spe_res_struct.__dict__))
++                    elif(type(res_struct.__dict__[sol]).__name__ == 'results'):  #this is a result without steps
++                        spe_res_struct = res_struct.__dict__[sol]
++                        fieldnames = list(dict.keys(spe_res_struct.__dict__))
+                     else:
+-                        timestep = np.size(res_struct.__dict__[sol])
+-                except TypeError:
+-                    #result as no len() so no timesteps
+-                    timestep = 1
++                        print("WARNING, solution type '{}' is not recognise, exported results might be wrong".format(type(res_struct.__dict__[sol])))
++                        spe_res_struct = res_struct.__dict__[sol]
++                        fieldnames = list(dict.keys(spe_res_struct.__dict__))
+ 
+-                #getting the  fields in the solution
+-                if(type(res_struct.__dict__[sol]).__name__ == 'solution'):
+-                    spe_res_struct = res_struct.__dict__[sol].__getitem__(timestep)
+-                    fieldnames = dict.keys(spe_res_struct.__dict__)
+-                elif(type(res_struct.__dict__[sol]).__name__ == 'solutionstep'):
+-                    spe_res_struct = res_struct.__dict__[sol]
+-                    fieldnames = dict.keys(spe_res_struct.__dict__)
+-                elif(type(res_struct.__dict__[sol]).__name__ == 'results'):  #this is a result without steps
+-                    spe_res_struct = res_struct.__dict__[sol]
+-                    fieldnames = dict.keys(spe_res_struct.__dict__)
+-                else:
+-                    print("WARNING, solution type '{}' is not recognise, exported results might be wrong".format(type(res_struct.__dict__[sol])))
+-                    spe_res_struct = res_struct.__dict__[sol]
+-                    fieldnames = dict.keys(spe_res_struct.__dict__)
++                    #Sorting scalars, vectors and tensors
++                    tensors = [field for field in fieldnames if field[-2:] in ['xx', 'yy', 'xy', 'zz', 'xz', 'yz']]
++                    non_tensor = [field for field in fieldnames if field not in tensors]
++                    vectors = [field for field in non_tensor if field[-1] in ['x', 'y', 'z'] and field[-4:] not in ['Flux']]
++                    #check which field is a real result and print
++                    for field in fieldnames:
++                        if verbose > 2:
++                            print("Treating {}".format(field))
++                        if field in treated_res:
++                            if verbose > 2:
++                                print("{} is already done".format(field))
++                            continue
++                        elif field in vectors:
++                            if verbose > 2:
++                                print("{} is a vector".format(field))
++                            try:
++                                Vxstruct = np.squeeze(spe_res_struct.__dict__[field[:-1] + 'x'])
++                                Vystruct = np.squeeze(spe_res_struct.__dict__[field[:-1] + 'y'])
++                                treated_res += [field[:-1] + 'x', field[:-1] + 'y']
++                                if dim == 3 and field[:-1] + 'z' in fieldnames:
++                                    #some fields like adjoint or always 2D
++                                    Vzstruct = np.squeeze(spe_res_struct.__dict__[field[:-1] + 'z'])
++                                    treated_res += [field[:-1] + 'z']
+ 
+-                #Sorting scalars, vectors and tensors
+-                tensors = [field for field in fieldnames if field[-2:] in ['xx', 'yy', 'xy', 'zz', 'xz', 'yz']]
+-                non_tensor = [field for field in fieldnames if field not in tensors]
+-                vectors = [field for field in non_tensor if field[-1] in ['x', 'y', 'z'] and field[-4:] not in ['Flux']]
++                            except KeyError:
++                                fieldnames += field
++                                vectors.remove(field)
+ 
+-                #check which field is a real result and print
+-                for field in fieldnames:
+-                    print("Treating {}".format(field))
+-                    if field in treated_res:
+-                        print("{} is already done".format(field))
+-                        continue
+-                    elif field in vectors:
+-                        print("{} is a vector".format(field))
+-                        try:
+-                            Vxstruct = np.squeeze(spe_res_struct.__dict__[field[:-1] + 'x'])
+-                            Vystruct = np.squeeze(spe_res_struct.__dict__[field[:-1] + 'y'])
+-                            treated_res += [field[:-1] + 'x', field[:-1] + 'y']
+-                            if dim == 3:
+-                                Vzstruct = np.squeeze(spe_res_struct.__dict__[field[:-1] + 'z'])
+-                                treated_res += field[:-1] + 'z'
++                            fid.write('VECTORS {} float \n'.format(field[:-1]))
++                            for node in range(0, num_of_points):
++                                Vx = cleanOutliers(Vxstruct[enveloppe_index[node]])
++                                Vy = cleanOutliers(Vystruct[enveloppe_index[node]])
++                                if dim == 3 and field[:-1] + 'z' in fieldnames:
++                                    Vz = cleanOutliers(Vzstruct[enveloppe_index[node]])
++                                    fid.write('{:f} {:f} {:f}\n'.format(Vx, Vy, Vz))
++                                else:
++                                    fid.write('{:f} {:f} {:f}\n'.format(Vx, Vy, 0))
+ 
+-                        except KeyError:
+-                            fieldnames += field
+-                            vectors.remove(field)
++                        elif field in tensors:
++                            if verbose > 2:
++                                print("{} is a tensor".format(field))
++                            try:
++                                Txxstruct = np.squeeze(spe_res_struct.__dict__[field[:-2] + 'xx'])
++                                Txystruct = np.squeeze(spe_res_struct.__dict__[field[:-2] + 'xy'])
++                                Tyystruct = np.squeeze(spe_res_struct.__dict__[field[:-2] + 'yy'])
++                                treated_res += [field[:-2] + 'xx', field[:-2] + 'xy', field[:-2] + 'yy']
++                                if dim == 3:
++                                    Tzzstruct = np.squeeze(spe_res_struct.__dict__[field[:-2] + 'zz'])
++                                    Txzstruct = np.squeeze(spe_res_struct.__dict__[field[:-2] + 'xz'])
++                                    Tyzstruct = np.squeeze(spe_res_struct.__dict__[field[:-2] + 'yz'])
++                                    treated_res += [field[:-2] + 'zz', field[:-2] + 'xz', field[:-2] + 'yz']
+ 
+-                        fid.write('VECTORS {} float \n'.format(field[:-1]))
+-                        for node in range(0, num_of_points):
+-                            Vx = cleanOutliers(Vxstruct[enveloppe_index[node]])
+-                            Vy = cleanOutliers(Vystruct[enveloppe_index[node]])
+-                            if dim == 3:
+-                                Vz = cleanOutliers(Vzstruct[enveloppe_index[node]])
+-                                fid.write('{:f} {:f} {:f}\n'.format(Vx, Vy, Vz))
+-                            elif dim == 2:
+-                                fid.write('{:f} {:f} {:f}\n'.format(Vx, Vy, 0))
++                            except KeyError:
++                                fieldnames += field
++                                tensors.remove(field)
+ 
+-                    elif field in tensors:
+-                        print("{} is a tensor".format(field))
+-                        try:
+-                            Txxstruct = np.squeeze(spe_res_struct.__dict__[field[:-2] + 'xx'])
+-                            Txystruct = np.squeeze(spe_res_struct.__dict__[field[:-2] + 'xy'])
+-                            Tyystruct = np.squeeze(spe_res_struct.__dict__[field[:-2] + 'yy'])
+-                            treated_res += [field[:-2] + 'xx', field[:-2] + 'xy', field[:-2] + 'yy']
+-                            if dim == 3:
+-                                Tzzstruct = np.squeeze(spe_res_struct.__dict__[field[:-2] + 'zz'])
+-                                Txzstruct = np.squeeze(spe_res_struct.__dict__[field[:-2] + 'xz'])
+-                                Tyzstruct = np.squeeze(spe_res_struct.__dict__[field[:-2] + 'yz'])
+-                                treated_res += [field[:-2] + 'zz', field[:-2] + 'xz', field[:-2] + 'yz']
+-
+-                        except KeyError:
+-                            fieldnames += field
+-                            tensors.remove(field)
+-
+-                        fid.write('TENSORS {} float \n'.format(field[:-2]))
++                            fid.write('TENSORS {} float \n'.format(field[:-2]))
++                            for node in range(0, num_of_points):
++                                Txx = cleanOutliers(Txxstruct[enveloppe_index[node]])
++                                Tyy = cleanOutliers(Tyystruct[enveloppe_index[node]])
++                                Txy = cleanOutliers(Txystruct[enveloppe_index[node]])
++                                if dim == 3:
++                                    Tzz = cleanOutliers(Tzzstruct[enveloppe_index[node]])
++                                    Txz = cleanOutliers(Txzstruct[enveloppe_index[node]])
++                                    Tyz = cleanOutliers(Tyzstruct[enveloppe_index[node]])
++                                    fid.write('{:f} {:f} {:f}\n'.format(Txx, Txy, Txz))
++                                    fid.write('{:f} {:f} {:f}\n'.format(Txy, Tyy, Tyz))
++                                    fid.write('{:f} {:f} {:f}\n'.format(Txz, Tyz, Tzz))
++                                elif dim == 2:
++                                    fid.write('{:f} {:f} {:f}\n'.format(Txx, Txy, 0))
++                                    fid.write('{:f} {:f} {:f}\n'.format(Txy, Tyy, 0))
++                                    fid.write('{:f} {:f} {:f}\n'.format(0, 0, 0))
++                        else:
++                            if np.size(spe_res_struct.__dict__[field]) == 1:
++                                if field == 'time':
++                                    current_time = spe_res_struct.__dict__[field]
++                                    #skipping integers
++                                continue
++                            elif np.size(spe_res_struct.__dict__[field]) == every_nodes:
++                                fid.write('SCALARS {} float 1 \n'.format(field))
++                                fid.write('LOOKUP_TABLE default\n')
++                                for node in range(0, num_of_points):
++                                    outval = cleanOutliers(np.squeeze(spe_res_struct.__dict__[field][enveloppe_index[node]]))
++                                    fid.write('{:f}\n'.format(outval))
++                            elif np.shape(spe_res_struct.__dict__[field])[0] == np.size(spe_res_struct.__dict__[field]) == every_cells:
++                                saved_cells[field] = np.squeeze(spe_res_struct.__dict__[field])
++                            elif np.shape(spe_res_struct.__dict__[field])[0] == np.size(spe_res_struct.__dict__[field]) == every_edges:
++                                saved_edges[field] = np.squeeze(spe_res_struct.__dict__[field])
++                            else:
++                                print("format for field {}.{} is not suported, field is skipped".format(sol, field))
++            # }}}
++            # loop on arguments, if something other than result is asked, do it now {{{
++            for other in args:
++                other_struct = md.__dict__[other]
++                othernames = (dict.keys(other_struct.__dict__))
++                for field in othernames:
++                    if np.size(other_struct.__dict__[field]) == 1:
++                        #skipping integers
++                        continue
++                    elif np.size(other_struct.__dict__[field]) == every_nodes:
++                        fid.write('SCALARS {} float 1 \n'.format(field))
++                        fid.write('LOOKUP_TABLE default\n')
+                         for node in range(0, num_of_points):
+-                            Txx = cleanOutliers(Txxstruct[enveloppe_index[node]])
+-                            Tyy = cleanOutliers(Tyystruct[enveloppe_index[node]])
+-                            Txy = cleanOutliers(Txystruct[enveloppe_index[node]])
+-                            if dim == 3:
+-                                Tzz = cleanOutliers(Tzzstruct[enveloppe_index[node]])
+-                                Txz = cleanOutliers(Txzstruct[enveloppe_index[node]])
+-                                Tyz = cleanOutliers(Tyzstruct[enveloppe_index[node]])
+-                                fid.write('{:f} {:f} {:f}\n'.format(Txx, Txy, Txz))
+-                                fid.write('{:f} {:f} {:f}\n'.format(Txy, Tyy, Tyz))
+-                                fid.write('{:f} {:f} {:f}\n'.format(Txz, Tyz, Tzz))
+-                            elif dim == 2:
+-                                fid.write('{:f} {:f} {:f}\n'.format(Txx, Txy, 0))
+-                                fid.write('{:f} {:f} {:f}\n'.format(Txy, Tyy, 0))
+-                                fid.write('{:f} {:f} {:f}\n'.format(0, 0, 0))
++                            outval = cleanOutliers(other_struct.__dict__[field][enveloppe_index[node]])
++                            fid.write('{:f}\n'.format(outval))
++                    elif np.shape(other_struct.__dict__[field])[0] == every_nodes + 1:
++                        #we are dealing with a forcing of some kind.
++                        forcing_time = other_struct.__dict__[field][-1, :]
++                        if any(forcing_time == current_time):
++                            forcing_index = np.where(forcing_time == current_time)
++                            forcing_val = other_struct.__dict__[field][:, forcing_index]
++                        elif forcing_time[0] > current_time:
++                            forcing_val = other_struct.__dict__[field][:, 0]
++                        elif forcing_time[-1] < current_time:
++                            forcing_val = other_struct.__dict__[field][:, -1]
++                        else:
++                            forcing_index = np.where(forcing_time < current_time)[-1][-1]
++                            delta_time = forcing_time[forcing_index + 1] - forcing_time[forcing_index]  #compute forcing Dt
++                            delta_current = current_time - forcing_time[forcing_index]  # time since last forcing
++                            ratio = delta_current / delta_time  #compute weighting factor for preceding forcing vallue
++                            forcing_evol = (other_struct.__dict__[field][:, forcing_index + 1] - other_struct.__dict__[field][:, forcing_index]) * ratio
++                            forcing_val = other_struct.__dict__[field][:, forcing_index] + forcing_evol
++                        # and now write it down
++                        fid.write('SCALARS {}_{} float 1 \n'.format(other, field))
++                        fid.write('LOOKUP_TABLE default\n')
++                        for node in range(0, num_of_points):
++                            outval = cleanOutliers(forcing_val[enveloppe_index[node]])
++                            fid.write('{:f}\n'.format(outval))
++                    elif np.shape(other_struct.__dict__[field])[0] == np.size(other_struct.__dict__[field]) == every_cells:
++                        saved_cells[field] = other_struct.__dict__[field]
++                    elif np.shape(other_struct.__dict__[field])[0] == np.size(other_struct.__dict__[field]) == every_edges:
++                        saved_edges[field] = other_struct.__dict__[field]
+                     else:
+-                        if np.size(spe_res_struct.__dict__[field]) == 1:
+-                            if field == 'time':
+-                                current_time = spe_res_struct.__dict__[field]
+-                            #skipping integers
+-                            continue
+-                        elif np.size(spe_res_struct.__dict__[field]) == every_nodes:
+-                            fid.write('SCALARS {} float 1 \n'.format(field))
+-                            fid.write('LOOKUP_TABLE default\n')
+-                            for node in range(0, num_of_points):
+-                                outval = cleanOutliers(np.squeeze(spe_res_struct.__dict__[field][enveloppe_index[node]]))
+-                                fid.write('{:f}\n'.format(outval))
+-                        elif np.shape(spe_res_struct.__dict__[field])[0] == np.size(spe_res_struct.__dict__[field]) == every_cells:
+-                            saved_cells[field] = np.squeeze(spe_res_struct.__dict__[field])
+-                        else:
+-                            print("format for field {}.{} is not suported, field is skipped".format(sol, field))
+-    # }}}
+-    # loop on arguments, if something other than result is asked, do it now {{{
+-        for other in args:
+-            other_struct = md.__dict__[other]
+-            othernames = (dict.keys(other_struct.__dict__))
+-            for field in othernames:
+-                if np.size(other_struct.__dict__[field]) == 1:
+-                    #skipping integers
+-                    continue
+-                elif np.size(other_struct.__dict__[field]) == every_nodes:
+-                    fid.write('SCALARS {} float 1 \n'.format(field))
++                        print("format for field {}.{} is not suported, field is skipped".format(other, field))
++                        continue
++            # }}}
++            # Now writting cell variables {{{
++            if np.size(list(saved_cells.keys())) > 0:
++                fid.write('CELL_DATA {:d} \n'.format(num_of_elt + num_of_edges))
++                for key in list(saved_cells.keys()):
++                    fid.write('SCALARS {} float 1 \n'.format(key))
+                     fid.write('LOOKUP_TABLE default\n')
+-                    for node in range(0, num_of_points):
+-                        outval = cleanOutliers(other_struct.__dict__[field][enveloppe_index[node]])
++                    for cell in range(0, num_of_elt):
++                        outval = cleanOutliers(saved_cells[key][cell])
+                         fid.write('{:f}\n'.format(outval))
+-                elif np.shape(other_struct.__dict__[field])[0] == every_nodes + 1:
+-                    #we are dealing with a forcing of some kind.
+-                    forcing_time = other_struct.__dict__[field][-1, :]
+-                    if any(forcing_time == current_time):
+-                        forcing_index = np.where(forcing_time == current_time)
+-                        forcing_val = other_struct.__dict__[field][:, forcing_index]
+-                    elif forcing_time[0] > current_time:
+-                        forcing_val = other_struct.__dict__[field][:, 0]
+-                    elif forcing_time[-1] < current_time:
+-                        forcing_val = other_struct.__dict__[field][:, -1]
+-                    else:
+-                        forcing_index = np.where(forcing_time < current_time)[-1][-1]
+-                        delta_time = forcing_time[forcing_index + 1] - forcing_time[forcing_index]  #compute forcing Dt
+-                        delta_current = current_time - forcing_time[forcing_index]  # time since last forcing
+-                        ratio = delta_current / delta_time  #compute weighting factor for preceding forcing vallue
+-                        forcing_evol = (other_struct.__dict__[field][:, forcing_index + 1] - other_struct.__dict__[field][:, forcing_index]) * ratio
+-                        forcing_val = other_struct.__dict__[field][:, forcing_index] + forcing_evol
+-                    # and now write it down
+-                    fid.write('SCALARS {}_{} float 1 \n'.format(other, field))
++                    for edge in range(0, num_of_edges):
++                        fid.write('{:f}\n'.format(-9999.999))
++            # }}}
++            # Now writting edge variables {{{
++            if np.size(list(saved_edges.keys())) > 0:
++                for key in list(saved_edges.keys()):
++                    fid.write('SCALARS {} float 1 \n'.format(key))
+                     fid.write('LOOKUP_TABLE default\n')
+-                    for node in range(0, num_of_points):
+-                        outval = cleanOutliers(forcing_val[enveloppe_index[node]])
++                    for cell in range(0, num_of_elt):
++                        fid.write('{:f}\n'.format(-9999.999))
++                    for edge in range(0, num_of_edges):
++                        outval = cleanOutliers(saved_edges[key][edge])
+                         fid.write('{:f}\n'.format(outval))
+-                elif np.shape(other_struct.__dict__[field])[0] == np.size(other_struct.__dict__[field]) == every_cells:
+-                    saved_cells[field] = other_struct.__dict__[field]
+-                else:
+-                    print("format for field {}.{} is not suported, field is skipped".format(other, field))
+-                    continue
+     # }}}
+-    # Now writting cell variables {{{
+-        if np.size(list(saved_cells.keys())) > 0:
+-            fid.write('CELL_DATA {:d} \n'.format(num_of_elt))
+-            for key in list(saved_cells.keys()):
+-                fid.write('SCALARS {} float 1 \n'.format(key))
+-                fid.write('LOOKUP_TABLE default\n')
+-                for cell in range(0, num_of_elt):
+-                    outval = cleanOutliers(saved_cells[key][cell])
+-                    fid.write('{:f}\n'.format(outval))
+-    # }}}
+-    fid.close()
+ 
+ 
+ def cleanOutliers(Val):
+Index: ../trunk-jpl/src/m/contrib/defleurian/paraview/exportVTU.py
+===================================================================
+--- ../trunk-jpl/src/m/contrib/defleurian/paraview/exportVTU.py	(nonexistent)
++++ ../trunk-jpl/src/m/contrib/defleurian/paraview/exportVTU.py	(revision 27143)
+@@ -0,0 +1,723 @@
++import numpy as np
++from base64 import b64encode
++from os import path, remove, mkdir
++from glob import glob
++
++
++def exportVTU(filename, md, *args, enveloppe=False, fmtout="binary", **kwargs):
++    '''
++    vtu export
++    function exportVTU(filename, md)
++    Exports resluts in XML based vtu format for visualisation in Paraview.
++    Hopefully it is based on the treatment for export VTK and only the output part is modified.
++    (only work for triangle and wedges based on their number of nodes)
++
++    Usage:
++    exportVTU('FileName', md)
++    exportVTU('FileName', md, 'geometry', 'mesh')
++    exportVTU('FileName', md, 'geometry', 'mesh', enveloppe = True)
++
++    DirName is the name of the output directory, each timestep then has it
++    own file ('Timestep.vtkX.vtk') with X the number of the output step
++    enveloppe is an option keeping only the enveloppe of the md (it is False by default)
++
++    Options:
++        - clipping : allows to reduce your domain (cliping=[Xmin, Xmax, Ymin, Ymax])
++        - coarsetime : output one timestep every X (coarsetime=X, with X an integer)
++        - singletime : output only timestep X (singletime=X, with X an integer or -1 for last)
++
++    TODO: - make time easily accessible
++
++    Basile de Fleurian:
++    '''
++    #verbosity of the code, 0 is no messages, 5 is chatty
++    verbose = 0
++
++    #first check if the user asked for some options to be applied
++    for key in kwargs.keys():
++        if key not in ['clipping', 'coarsetime', 'singletime']:
++            raise BadOption('Provided option "{}" is not supported possibilities are : {}'.format(key, ['cliping', 'coarsetime', 'singletime']))
++
++    if 'coarsetime' in kwargs.keys() and 'singletime' in kwargs.keys():
++        raise BadOption("You can't specify both 'coarsetime' and 'singletime'")
++
++    # File checking and creation {{{
++    Dir = path.basename(filename)
++    if path.exists(filename):
++        print(('File {} allready exist'.format(filename)))
++        newname = input('Give a new name or "delete" to replace: ')
++        if newname == 'delete':
++            filelist = glob(filename + '/* ')
++            for oldfile in filelist:
++                remove(oldfile)
++        else:
++            print(('New file name is {}'.format(newname)))
++            filename = newname
++            mkdir(filename)
++    else:
++        mkdir(filename)
++
++    # }}}
++
++    # make an alias for results {{{
++    if verbose > 3:
++        print('Getting accessory variables')
++    res_struct = md.results
++    moving_mesh = False
++    if(type(res_struct) != list):
++        #Getting all the solutions of the md
++        solnames = dict.keys(res_struct.__dict__)
++        num_of_timesteps = 1
++        #%building solutionstructure
++        for solution in solnames:
++            #looking for multiple time steps
++            try:
++                if len(res_struct.__dict__[solution]) > num_of_timesteps:
++                    num_of_timesteps = len(res_struct.__dict__[solution])
++                    num_of_timesteps = int(num_of_timesteps)
++                    #If Suface is in the resluts we considet that we have a moving mesh
++                    if 'Surface' in dict.keys(res_struct.__dict__[solution][0].__dict__):
++                        moving_mesh = True
++            except TypeError:
++                continue
++    else:
++        num_of_timesteps = 1
++    # }}}
++
++    # get the mesh related variables {{{
++    if verbose > 3:
++        print('Now treating  the mesh')
++    #first get the general things
++    dim = int(md.mesh.domaintype()[0])
++    every_nodes = md.mesh.numberofvertices
++    every_cells = md.mesh.numberofelements
++    try:
++        every_edges = md.mesh.numberofedges
++    except AttributeError:
++        #3D meshes do not have edges
++        every_edges = 0
++
++    if np.shape(md.mesh.elements)[1] == 3 or enveloppe:
++        point_per_elt = 3
++        celltype = 5  #triangles
++    elif np.shape(md.mesh.elements)[1] == 6:
++        point_per_elt = 6
++        celltype = 13  #wedges
++    else:
++        raise BadDimension('exportVTU does not support your element type')
++
++    #only keep the envelope and not the bulk of the results.
++    if enveloppe:  #Treating enveloppe{{{
++        if dim == 3:
++            mesh_alti = '0'
++            is_enveloppe = np.logical_or(md.mesh.vertexonbase, md.mesh.vertexonsurface)
++            enveloppe_index = np.where(is_enveloppe)[0]
++            convert_index = np.nan * np.ones(np.shape(md.mesh.x))
++            convert_index = np.asarray([[i, np.where(enveloppe_index == i)[0][0]] for i, val in enumerate(convert_index) if any(enveloppe_index == i)])
++
++            num_of_points = np.size(enveloppe_index)
++            points = np.column_stack((md.mesh.x[enveloppe_index],
++                                      md.mesh.y[enveloppe_index],
++                                      md.mesh.z[enveloppe_index]))
++
++            num_of_elt = np.size(np.where(np.isnan(md.mesh.lowerelements))) + np.size(np.where(np.isnan(md.mesh.upperelements)))
++            connect = md.mesh.elements[np.where(is_enveloppe[md.mesh.elements - 1])].reshape(int(num_of_elt), 3) - 1
++            for elt in range(0, num_of_elt):
++                connect[elt, 0] = convert_index[np.where(convert_index == connect[elt, 0])[0], 1][0]
++                connect[elt, 1] = convert_index[np.where(convert_index == connect[elt, 1])[0], 1][0]
++                connect[elt, 2] = convert_index[np.where(convert_index == connect[elt, 2])[0], 1][0]
++
++            num_of_edges = every_edges  #looks like edges is only defined on the 2d mesh
++            if num_of_edges > 0:
++                edges = md.mesh.edges[:, 0:2].reshape(int(num_of_edges), 2) - 1
++
++        else:
++            raise BadDimension("exportVTU can't get an enveloppe for  dimension {}".format(dim))
++    # }}}
++
++    else:  #treating mesh{{{
++        #we get all the mesh, mainly defining dummies
++        num_of_elt = every_cells
++        connect = md.mesh.elements - 1
++        num_of_edges = every_edges
++        if num_of_edges > 0:
++            edges = md.mesh.edges[:, 0:2].reshape(int(num_of_edges), 2) - 1
++        enveloppe_index = np.arange(0, np.size(md.mesh.x))
++        num_of_points = every_nodes
++        if dim == 2:
++            mesh_alti = input('''This is a 2D model, what should be the 3rd dimension of the mesh :
++                                        1 : md.geometry.surface
++                                        2 : md.geometry.base
++                                        3 : md.geometry.bed
++                                        4 : 0
++                                        5 : Custom\n''')
++            if mesh_alti == '1':
++                points = np.column_stack((md.mesh.x, md.mesh.y, md.geometry.surface))
++            elif mesh_alti == '2':
++                points = np.column_stack((md.mesh.x, md.mesh.y, md.geometry.base))
++            elif mesh_alti == '3':
++                points = np.column_stack((md.mesh.x, md.mesh.y, md.geometry.bed))
++            elif mesh_alti == '4':
++                points = np.column_stack((md.mesh.x, md.mesh.y, 0. * md.mesh.x))
++            elif mesh_alti == '5':
++                alti_field = input("Which field should be used as 3rd dimension: ")
++                alti_var = eval(alti_field)
++                if np.shape(np.squeeze(alti_var)) == np.shape(md.mesh.x):
++                    points = np.column_stack((md.mesh.x, md.mesh.y, np.squeeze(alti_var)))
++                else:
++                    raise BadDimension('field given for 3rd dimension should be defined on vertices {} is not.'.format(alti_field))
++            else:
++                points = np.column_stack((md.mesh.x, md.mesh.y, md.geometry.surface))
++        elif dim == 3:
++            mesh_alti = '0'
++            points = np.column_stack((md.mesh.x, md.mesh.y, md.mesh.z))
++        else:
++            raise BadDimension('exportVTU does not support dimension {}'.format(dim))
++    # }}}
++
++    if 'clipping' in kwargs.keys():
++        if kwargs['clipping'] is not None:
++            # first get the boundaries and check them
++            [Xmin, Xmax, Ymin, Ymax] = kwargs['clipping']
++            if Xmin > Xmax:
++                raise ClipError('Xmax ({}) should be larger than Xmin ({})'.format(Xmax, Xmin))
++            if Ymin > Ymax:
++                raise ClipError('Ymax ({}) should be larger than Ymin ({})'.format(Ymax, Ymin))
++            if Xmin > np.nanmax(points[:, 0]) or Xmax < np.nanmin(points[:, 0]):
++                raise ClipError('Your X boundaries [{}, {}] are outside of the model domain [{},{}]'.format(Xmin, Xmax, np.nanmin(points[:, 0]), np.nanmax(points[:, 0])))
++            if Ymin > np.nanmax(points[:, 1]) or Ymax < np.nanmin(points[:, 1]):
++                raise ClipError('Your Y boundaries [{}, {}] are outside of the model domain [{},{}]'.format(Ymin, Ymax, np.nanmin(points[:, 1]), np.nanmax(points[:, 1])))
++
++            #boundaries should be fine lets do stuff
++            InX = np.where(np.logical_and(points[:, 0] >= Xmin, points[:, 0] <= Xmax))
++            InY = np.where(np.logical_and(points[:, 1] >= Ymin, points[:, 1] <= Ymax))
++
++            Isinside = np.zeros(np.shape(points)[0], dtype=bool)
++            clip_convert_index = np.nan * np.ones(np.shape(points)[0])
++
++            #define the vertices that are within clipping window
++            Inclipping = np.intersect1d(InX, InY)
++            Isinside[Inclipping] = True
++            points = points[Inclipping, :]
++            num_of_points = np.shape(points)[0]
++
++            #go thorough the elements and keep those for which one node is in the clipped arrea
++            clipconnect = np.asarray([], dtype=int)
++            for elt in connect:
++                if set(elt).issubset(Inclipping):
++                    clipconnect = np.append(clipconnect, elt, axis=0)
++
++            #reshape
++            num_of_elt = int(np.size(clipconnect) / 3)
++            connect = clipconnect.reshape(num_of_elt, 3)
++
++            clip_convert_index = np.asarray([[i, np.where(Inclipping == i)[0][0]] for i, val in enumerate(clip_convert_index) if any(Inclipping == i)])
++            enveloppe_index = enveloppe_index[clip_convert_index[:, 0]]
++
++            #convert indexing and exclude elements that are partly outside of the region
++            for elt in range(0, num_of_elt):
++                try:
++                    connect[elt, 0] = clip_convert_index[np.where(clip_convert_index == connect[elt, 0])[0], 1][0]
++                except IndexError:
++                    connect[elt, 0] = -1
++                try:
++                    connect[elt, 1] = clip_convert_index[np.where(clip_convert_index == connect[elt, 1])[0], 1][0]
++                except IndexError:
++                    connect[elt, 1] = -1
++                try:
++                    connect[elt, 2] = clip_convert_index[np.where(clip_convert_index == connect[elt, 2])[0], 1][0]
++                except IndexError:
++                    connect[elt, 2] = -1
++
++            connect = connect[np.where(connect != -1)[0], :]
++            num_of_elt = np.shape(connect)[0]
++
++            if num_of_edges > 0:
++                clipedges = np.asarray([], dtype=int)
++                for edge in edges:
++                    if set(edge).issubset(Inclipping):
++                        clipedges = np.append(clipedges, edge, axis=0)
++
++                num_of_edges = int(np.size(clipedges) / 2)
++                edges = clipedges.reshape(num_of_edges, 2)
++
++                for edge in range(0, num_of_edges):
++                    try:
++                        edges[edge, 0] = clip_convert_index[np.where(clip_convert_index == edges[edge, 0])[0], 1][0]
++                    except IndexError:
++                        edges[edge, 0] = -1
++                    try:
++                        edges[edge, 1] = clip_convert_index[np.where(clip_convert_index == edges[edge, 1])[0], 1][0]
++                    except IndexError:
++                        edges[edge, 1] = -1
++                edges = edges[np.where(edges != -1)[0], :]
++                num_of_edges = np.shape(edges)[0]
++
++    # }}}
++
++    # write header and mesh {{{
++    if verbose > 3:
++        print('Now starting to write stuff')
++
++    if 'coarsetime' in kwargs.keys():
++        steplist = range(0, num_of_timesteps, kwargs['coarsetime'])
++    elif 'singletime' in kwargs.keys():
++        steplist = [kwargs['singletime']]
++    else:
++        steplist = range(0, num_of_timesteps)
++
++    for step in steplist:
++        if verbose > 2:
++            print('Writing for step {}'.format(step))
++
++        with open(('{}/{}_{}.vtu').format(filename, Dir, step), 'w+') as fid:
++            fid.write('<?xml version="1.0"?>\n')
++            fid.write('<VTKFile type="UnstructuredGrid" version="1.0" byte_order="LittleEndian">\n')
++            fid.write('  <UnstructuredGrid>\n')
++            fid.write('    <Piece NumberOfPoints="{}"  NumberOfCells="{}">\n'.format(num_of_points, num_of_elt + num_of_edges))
++            tensors = []
++            vectors = []
++            scalars = []
++            for sol in solnames:
++                #getting the  fields in the solution
++                if type(res_struct.__dict__[sol]).__name__ == 'solution':
++                    spe_res_struct = res_struct.__dict__[sol].__getitem__(0)
++                    fieldnames = list(dict.keys(spe_res_struct.__dict__))
++                elif type(res_struct.__dict__[sol]).__name__ in ['solutionstep', 'results']:
++                    spe_res_struct = res_struct.__dict__[sol]
++                    fieldnames = list(dict.keys(spe_res_struct.__dict__))
++                else:
++                    print("WARNING, solution type '{}' is not recognise, exported results might be wrong".format(type(res_struct.__dict__[sol])))
++                    spe_res_struct = res_struct.__dict__[sol]
++                    fieldnames = list(dict.keys(spe_res_struct.__dict__))
++
++                loctensors, locvectors, locscalars = SortFields(fieldnames)
++                tensors.extend(loctensors)
++                vectors.extend(locvectors)
++                scalars.extend(locscalars)
++            for other in args:
++                other_struct = md.__dict__[other]
++                othernames = list(dict.keys(other_struct.__dict__))
++
++                loctensors, locvectors, locscalars = SortFields(othernames)
++                tensors.extend(loctensors)
++                vectors.extend(locvectors)
++                scalars.extend(locscalars)
++
++            fid.write('      <PointData Scalars="{}"'.format(scalars))
++            if len(vectors) > 0:
++                fid.write(' Vectors="{}"'.format(vectors[:-1]))
++            if len(tensors) > 0:
++                fid.write(' Tensors="{}"'.format(tensors[:-2]))
++            fid.write('>\n')
++
++            saved_cells = {}
++            saved_edges = {}
++            saved_const = {}
++            timestep = step
++
++            # }}}
++            # {{{loop over the different solution structures
++            # first check if there are solutions to grab
++            for sol in solnames:
++                treated_res = []
++                #dealing with results on different timesteps
++                try:
++                    if(len(res_struct.__dict__[sol]) > timestep):
++                        timestep = step
++                    else:
++                        timestep = np.size(res_struct.__dict__[sol])
++                except TypeError:
++                    #result as no len() so no timesteps
++                    timestep = 1
++
++                #getting the  fields in the solution
++                if(type(res_struct.__dict__[sol]).__name__ == 'solution'):
++                    spe_res_struct = res_struct.__dict__[sol].__getitem__(timestep)
++                    fieldnames = list(dict.keys(spe_res_struct.__dict__))
++                elif(type(res_struct.__dict__[sol]).__name__ == 'solutionstep'):
++                    spe_res_struct = res_struct.__dict__[sol]
++                    fieldnames = list(dict.keys(spe_res_struct.__dict__))
++                elif(type(res_struct.__dict__[sol]).__name__ == 'results'):  #this is a result without steps
++                    spe_res_struct = res_struct.__dict__[sol]
++                    fieldnames = list(dict.keys(spe_res_struct.__dict__))
++                else:
++                    print("WARNING, solution type '{}' is not recognise, exported results might be wrong".format(type(res_struct.__dict__[sol])))
++                    spe_res_struct = res_struct.__dict__[sol]
++                    fieldnames = list(dict.keys(spe_res_struct.__dict__))
++
++                tensors, vectors, ScalarNames = SortFields(fieldnames)
++
++                #check which field is a real result and print
++                for field in fieldnames:
++                    if field in treated_res:
++                        if verbose > 2:
++                            print("{}.{} is already done".format(sol, field))
++                        continue
++
++                    elif field in vectors:
++                        if verbose > 2:
++                            print("Treating {}.{} as a vector ".format(sol, field))
++                        TreatVector(fid, fmtout, spe_res_struct, sol, field, treated_res, enveloppe_index)
++
++                    elif field in tensors:
++                        if verbose > 2:
++                            print("Treating {}.{} as a tensor ".format(sol, field))
++                        TreatTensor(fid, fmtout, spe_res_struct, sol, field, treated_res, enveloppe_index)
++
++                    else:
++                        if np.size(spe_res_struct.__dict__[field]) == 1:
++                            if verbose > 2:
++                                print("Treating {}.{} as a constant ".format(sol, field))
++                            if field == 'time':
++                                current_time = spe_res_struct.__dict__[field]
++                            saved_const[".".join((sol, field))] = np.squeeze(spe_res_struct.__dict__[field])
++
++                        elif np.size(spe_res_struct.__dict__[field]) == every_nodes:
++                            if verbose > 2:
++                                print("Treating {}.{} as a node variable ".format(sol, field))
++                            TreatScalar(fid, fmtout, spe_res_struct, sol, field, enveloppe_index)
++
++                        elif np.shape(spe_res_struct.__dict__[field])[0] == np.size(spe_res_struct.__dict__[field]) == every_cells:
++                            saved_cells[".".join((sol, field))] = np.squeeze(spe_res_struct.__dict__[field])
++
++                        elif np.shape(spe_res_struct.__dict__[field])[0] == np.size(spe_res_struct.__dict__[field]) == every_edges and num_of_edges > 0:
++                            saved_edges[".".join((sol, field))] = np.squeeze(spe_res_struct.__dict__[field])
++
++                        else:
++                            print("format for field {}.{} is not suported, field is skipped".format(sol, field))
++            # }}}
++            # loop on arguments, if something other than result is asked, do it now {{{
++            for other in args:
++                if verbose > 3:
++                    print("Now treating {}".format(other))
++                other_struct = md.__dict__[other]
++                othernames = list(dict.keys(other_struct.__dict__))
++                tensors, vectors, ScalarNames = SortFields(othernames)
++                for field in othernames:
++                    if field in treated_res:
++                        if verbose > 2:
++                            print("{}.{} is already done".format(other, field))
++                        continue
++                    elif field in vectors:
++                        TreatVector(fid, fmtout, other_struct, other, field, treated_res, enveloppe_index)
++
++                    elif field in tensors:
++                        if verbose > 2:
++                            print("Treating {}.{} as a tensor ".format(sol, field))
++                        TreatTensor(fid, fmtout, other_struct, other, field, treated_res, enveloppe_index)
++                        #now treating fields that are not vectors or tensors
++
++                    else:
++                        if np.size(other_struct.__dict__[field]) == 1:
++                            if verbose > 2:
++                                print("Treating {}.{} as an constant ".format(other, field))
++                            if field == 'time':
++                                current_time = other_struct.__dict__[field]
++                            saved_const[".".join((other, field))] = np.squeeze(other_struct.__dict__[field])
++
++                        elif np.size(other_struct.__dict__[field]) == every_nodes:
++                            if verbose > 2:
++                                print("Treating {}.{} as a node variable ".format(other, field))
++                            TreatScalar(fid, fmtout, other_struct, other, field, enveloppe_index)
++
++                        elif np.shape(other_struct.__dict__[field])[0] == every_nodes + 1:
++                            if verbose > 3:
++                                print("Treating {}.{} as a node forcing variable".format(other, field))
++                            TreatForcing(fid, fmtout, other_struct, other, field, treated_res, enveloppe_index, current_time)
++
++                        elif np.shape(other_struct.__dict__[field])[0] == np.size(other_struct.__dict__[field]) == every_cells:
++                            if verbose > 3:
++                                print("Treating {}.{} as a cell variable".format(other, field))
++                            saved_cells[".".join((other, field))] = np.squeeze(other_struct.__dict__[field])
++
++                        elif np.shape(other_struct.__dict__[field])[0] == np.size(other_struct.__dict__[field]) == every_edges and num_of_edges > 0:
++                            if verbose > 3:
++                                print("Treating {}.{} as an edge variable".format(other, field))
++                            saved_edges[".".join((other, field))] = np.squeeze(other_struct.__dict__[field])
++
++                        else:
++                            print("format for field {}.{} is not suported, field is skipped".format(other, field))
++            fid.write('      </PointData>\n')
++            # }}}
++            # Now writting cell variables {{{
++            if np.size(list(saved_cells.keys())) > 0 or np.size(list(saved_edges.keys())) > 0:
++                cellkeys = list(saved_cells.keys())
++                edgekeys = list(saved_edges.keys())
++                print(cellkeys, edgekeys)
++                if len(cellkeys) > 0 and len(edgekeys) > 0:
++                    savekeys = list(saved_cells.keys())
++                    savekeys.extend(edgekeys)
++                elif len(cellkeys) > 0:
++                    savekeys = cellkeys
++                elif len(edgekeys) > 0:
++                    savekeys = edgekeys
++                if verbose > 3:
++                    print("Saving cell for {}".format(savekeys))
++                fid.write('      <CellData Scalars="{}">\n'.format(savekeys))
++
++            if len(cellkeys) > 0:
++                for key in cellkeys:
++                    outval = saved_cells[key]
++                    if num_of_edges > 0:
++                        if fmtout == "binary":
++                            outval = np.append(outval, np.nan * np.ones((num_of_edges)))
++                        else:
++                            outval = np.append(outval, -9999.999 * np.ones((num_of_edges)))
++                    if verbose > 3:
++                        print("writing {} values of type {} for {}".format(len(outval), outval.dtype, key))
++
++                    fid.write('        <DataArray type="Float32" Name="{}" format="{}">\n'.format(key, fmtout))
++                    WriteIt(outval, fid, fmtout)
++                    fid.write('        </DataArray>\n')
++
++            # }}}
++            # Now writting edge variables {{{
++            if np.size(list(saved_edges.keys())) > 0:
++                for key in list(saved_edges.keys()):
++                    if fmtout == "binary":
++                        outval = np.nan * np.ones((num_of_elt))
++                    else:
++                        outval = -9999.999 * np.ones((num_of_elt))
++                    outval = np.append(outval, saved_edges[key])
++                    fid.write('        <DataArray type="Float32" Name="{}" format="{}">\n'.format(key, fmtout))
++                    WriteIt(outval, fid, fmtout)
++                    fid.write('        </DataArray>\n')
++            if np.size(list(saved_cells.keys())) > 0 or np.size(list(saved_edges.keys())) > 0:
++                fid.write('      </CellData>\n')
++            # }}}
++
++            # Now writting constants # {{{
++            if np.size(list(saved_const.keys())) > 0:
++                fid.write('      <FieldData>\n')
++                for key in list(saved_const.keys()):
++                    fid.write('        <DataArray type="Float32" Name="{}" format="{}">\n'.format(key, fmtout))
++                    WriteIt(current_time, fid, fmtout)
++                    fid.write('        </DataArray>\n')
++                fid.write('      </FieldData>\n')
++            # }}}
++
++            #Mesh Treatment and write, it needs to loop to allow variable geometry {{{
++            #updating z for mesh evolution
++            if moving_mesh and mesh_alti == '1':
++                points[:, 2] = np.squeeze(res_struct.__dict__['TransientSolution'][step].__dict__['Surface'][enveloppe_index])
++            elif moving_mesh and mesh_alti == '2':
++                points[:, 2] = np.squeeze(res_struct.__dict__['TransientSolution'][step].__dict__['Base'][enveloppe_index])
++
++            #Now write points locations
++            fid.write('      <Points>\n')
++            fid.write('        <DataArray type="Float32" Name="Points" NumberOfComponents="3" format="{}">\n'.format(fmtout))
++            WriteIt(points, fid, fmtout)
++            fid.write('        </DataArray>\n')
++            fid.write('      </Points>\n')
++
++            #cells are a combination of element and edges
++            # we need node conectivity offsets and types
++            #offsets is the cummulative index of the last elemant of each cell (1 indexed)
++            flat_elt = connect.flatten()
++            elt_offset = np.arange(0, num_of_elt * point_per_elt, point_per_elt, dtype=np.int64) + point_per_elt
++            elt_type = celltype * np.ones((num_of_elt), dtype=np.uint8)
++            if num_of_edges > 0:
++                flat_edges = edges.flatten()
++                flat_cells = np.hstack((flat_elt, flat_edges))
++                edge_offset = np.arange(0, num_of_edges * 2, 2) + 2 + elt_offset[-1]
++                cell_offset = np.hstack((elt_offset, edge_offset))
++                edge_type = 3 * np.ones((num_of_edges), dtype=np.uint8)
++                cell_type = np.hstack((elt_type, edge_type))
++            else:
++                flat_cells = flat_elt
++                cell_offset = elt_offset
++                cell_type = elt_type
++
++            if verbose > 3:
++                print("""writing mesh structure:
++                                  connectivity of shape {}
++                                  cell offset of shape {}
++                                  cell types of shape{}""".format(np.shape(flat_cells), np.shape(cell_offset), np.shape(cell_type)))
++            #write cells Informations
++            fid.write('      <Cells>\n')
++            fid.write('        <DataArray type="Int64" Name="connectivity" format="{}">\n'.format(fmtout))
++            WriteIt(flat_cells, fid, fmtout)
++            fid.write('        </DataArray>\n')
++            fid.write('        <DataArray type="Int64" Name="offsets" format="{}">\n'.format(fmtout))
++            WriteIt(cell_offset, fid, fmtout)
++            fid.write('        </DataArray>\n')
++            fid.write('        <DataArray type="UInt8" Name="types" format="{}">\n'.format(fmtout))
++            WriteIt(cell_type, fid, fmtout)
++            fid.write('        </DataArray>\n')
++            fid.write('      </Cells>\n')
++            fid.write('    </Piece>\n')
++            fid.write('  </UnstructuredGrid>\n')
++            fid.write('</VTKFile>\n')
++            # }}}
++
++
++def SortFields(fieldnames):
++    #we check on sizes so there is a slight chance that logs can be picked as results, we remove them to avoid that
++    for trashfield in ['errlog', 'outlog']:
++        if trashfield in fieldnames:
++            fieldnames.remove(trashfield)
++
++    #Sorting scalars, vectors and tensors
++    tensors = [field for field in fieldnames if field[-2:] in ['xx', 'yy', 'xy', 'zz', 'xz', 'yz']]
++    non_tensor = [field for field in fieldnames if field not in tensors]
++    vectors = [field for field in non_tensor if field[-1] in ['x', 'y', 'z']]
++    #get the name of scalar fields remove, vectors, tensors and things that are not proper results
++    scalars = [field for field in fieldnames if field not in tensors + vectors]
++    dump = ["ConvergenceNumSteps", "step", "time"]
++    for trash in dump:
++        try:
++            scalars.remove(trash)
++        except ValueError:
++            [scalars.remove(name) for name in scalars if trash in name]
++            continue
++    #clean up vector and tensors that might be here and should not
++    # we check that at least two of the vector component are here
++    for namelist in [vectors, tensors]:
++        for name in list(namelist):
++            coord = name[-1]
++            if coord == 'x' and name[:-1] + 'y' in namelist:
++                continue
++            elif coord == 'y' and name[:-1] + 'x' in namelist:
++                continue
++            elif coord == 'z' and name[:-1] + 'x' in namelist:
++                continue
++            else:
++                scalars.extend([name])
++                namelist.remove(name)
++    return tensors, vectors, scalars
++
++
++def TreatScalar(fid, fmtout, structure, structname, fieldname, enveloppe_index):
++    array = np.squeeze(structure.__dict__[fieldname][enveloppe_index])
++    fid.write('        <DataArray type="Float32" Name="{}" NumberOfComponents="1" format="{}">\n'.format(".".join((structname, fieldname)), fmtout))
++    WriteIt(array, fid, fmtout)
++    fid.write('        </DataArray>\n')
++
++
++def TreatVector(fid, fmtout, structure, structname, fieldname, treated_res, enveloppe_index):
++    Vxstruct = np.squeeze(structure.__dict__[fieldname[:-1] + 'x'])
++    Vystruct = np.squeeze(structure.__dict__[fieldname[:-1] + 'y'])
++    Vx = Vxstruct[enveloppe_index]
++    Vy = Vystruct[enveloppe_index]
++    treated_res += [fieldname[:-1] + 'x', fieldname[:-1] + 'y']
++    try:
++        Vzstruct = np.squeeze(structure.__dict__[fieldname[:-1] + 'z'])
++        treated_res += [fieldname[:-1] + 'z']
++        Vz = Vzstruct[enveloppe_index]
++    except KeyError:
++        Vz = np.zeros(np.shape(Vx))
++    Vector = (np.vstack((Vx, Vy, Vz)).T).flatten()
++    fid.write('        <DataArray type="Float32" Name="{}" NumberOfComponents="3" format="{}">\n'.format(".".join((structname, fieldname[:-1])), fmtout))
++    WriteIt(Vector, fid, fmtout)
++    fid.write('        </DataArray>\n')
++
++
++def TreatTensor(fid, fmtout, structure, structname, fieldname, treated_res, enveloppe_index):
++    Txxstruct = np.squeeze(structure.__dict__[fieldname[:-2] + 'xx'])
++    Txystruct = np.squeeze(structure.__dict__[fieldname[:-2] + 'xy'])
++    Tyystruct = np.squeeze(structure.__dict__[fieldname[:-2] + 'yy'])
++    treated_res += [fieldname[:-2] + 'xx', fieldname[:-2] + 'xy', fieldname[:-2] + 'yy']
++    Txx = Txxstruct[enveloppe_index]
++    Tyy = Tyystruct[enveloppe_index]
++    Txy = Txystruct[enveloppe_index]
++    try:
++        Tzzstruct = np.squeeze(structure.__dict__[fieldname[:-2] + 'zz'])
++        Txzstruct = np.squeeze(structure.__dict__[fieldname[:-2] + 'xz'])
++        Tyzstruct = np.squeeze(structure.__dict__[fieldname[:-2] + 'yz'])
++        treated_res += [fieldname[:-2] + 'zz', fieldname[:-2] + 'xz', fieldname[:-2] + 'yz']
++        Tzz = Tzzstruct[enveloppe_index]
++        Txz = Txzstruct[enveloppe_index]
++        Tyz = Tyzstruct[enveloppe_index]
++    except KeyError:
++        Tzz = np.zeros(np.shape(Txx))
++        Txz = np.zeros(np.shape(Txx))
++        Tyz = np.zeros(np.shape(Txx))
++
++    Tensor = (np.vstack((Txx, Tyy, Tzz, Txy, Tyz, Txz)).T).flatten()
++    fid.write('        <DataArray type="Float32" Name="{}" NumberOfComponents="6" format="{}">\n'.format(".".join((structname, fieldname[:-1])), fmtout))
++    WriteIt(Tensor, fid, fmtout)
++    fid.write('        </DataArray>\n')
++
++
++def TreatForcing(fid, fmtout, structure, structname, fieldname, treated_res, enveloppe_index, current_time):
++    #we are dealing with a forcing of some kind.
++    forcing_time = structure.__dict__[fieldname][-1, :]
++    if any(forcing_time == current_time):
++        forcing_index = np.where(forcing_time == current_time)
++        forcing_val = structure.__dict__[fieldname][:, forcing_index]
++    elif forcing_time[0] > current_time:
++        forcing_val = structure.__dict__[fieldname][:, 0]
++    elif forcing_time[-1] < current_time:
++        forcing_val = structure.__dict__[fieldname][:, -1]
++    else:
++        forcing_index = np.where(forcing_time < current_time)[-1][-1]
++        delta_time = forcing_time[forcing_index + 1] - forcing_time[forcing_index]  #compute forcing Dt
++        delta_current = current_time - forcing_time[forcing_index]  # time since last forcing
++        ratio = delta_current / delta_time  #compute weighting factor for preceding forcing vallue
++        forcing_evol = (structure.__dict__[fieldname][:, forcing_index + 1] - structure.__dict__[fieldname][:, forcing_index]) * ratio
++        forcing_val = structure.__dict__[fieldname][:, forcing_index] + forcing_evol
++    array = forcing_val[enveloppe_index]
++    # and now write it down
++    fid.write('        <DataArray type="Float32" Name="{}" NumberOfComponents="1" format="{}">\n'.format(".".join((structname, fieldname)), fmtout))
++    WriteIt(array, fid, fmtout)
++    fid.write('        </DataArray>\n')
++
++
++def WriteIt(Data, fid, fmtout):
++    vtu_to_numpy_type = {
++        "Float32": np.dtype(np.float32),
++        "Float64": np.dtype(np.float64),
++        "Int8": np.dtype(np.int8),
++        "Int16": np.dtype(np.int16),
++        "Int32": np.dtype(np.int32),
++        "Int64": np.dtype(np.int64),
++        "UInt8": np.dtype(np.uint8),
++        "UInt16": np.dtype(np.uint16),
++        "UInt32": np.dtype(np.uint32),
++        "UInt64": np.dtype(np.uint64),
++    }
++    if fmtout == 'binary':
++        try:
++            datatype = Data.dtype
++        except AttributeError:
++            datatype = type(Data)
++        if datatype == np.float64:
++            Data = np.float32(Data)
++        try:
++            data_bytes = Data.tobytes()
++        except AttributeError:
++            data_bytes = np.asarray(Data).tobytes()
++        # collect header
++        header = np.array(len(data_bytes), dtype=vtu_to_numpy_type['UInt32'])
++        fid.write(b64encode(header.tobytes() + data_bytes).decode())
++        fid.write('\n')
++        #cell_type.tofile(fid)
++    elif fmtout == 'ascii':
++        np.savetxt(fid, Data, fmt='%g')
++
++
++def cleanOutliers(Val, fmtout):
++    #paraview does not like NaN in ascii files, replacing
++    if np.isnan(Val):
++        if fmtout == 'ascii':
++            CleanVal = -9999.999
++
++    #also checking for very small value that mess up
++    elif (abs(Val) < 1.0e-20):
++        CleanVal = 0.0
++    else:
++        CleanVal = Val
++    return CleanVal
++
++
++class BadDimension(Exception):
++    """The required dimension is not supported yet."""
++
++
++class BadOption(Exception):
++    """The given option does not exist."""
++
++
++class ClipError(Exception):
++    """Error while trying to clip the domain."""
Index: /issm/oecreview/Archive/27032-27229/ISSM-27143-27144.diff
===================================================================
--- /issm/oecreview/Archive/27032-27229/ISSM-27143-27144.diff	(revision 27230)
+++ /issm/oecreview/Archive/27032-27229/ISSM-27143-27144.diff	(revision 27230)
@@ -0,0 +1,367 @@
+Index: ../trunk-jpl/src/m/contrib/defleurian/paraview/enveloppeVTK.py
+===================================================================
+--- ../trunk-jpl/src/m/contrib/defleurian/paraview/enveloppeVTK.py	(revision 27143)
++++ ../trunk-jpl/src/m/contrib/defleurian/paraview/enveloppeVTK.py	(nonexistent)
+@@ -1,171 +0,0 @@
+-import numpy as np
+-import os
+-import glob
+-
+-
+-def enveloppeVTK(filename, model, *args):
+-    '''
+-    vtk export
+-    function exportVTK(filename, model)
+-    creates a directory with the vtk files for displays in paraview
+-    (only work for triangle and wedges based on their number of nodes)
+-
+-    Give only the results for nw but could be extended to geometry, mask...
+-
+-    input: filename   destination
+-    (string)
+-     - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+-    model      this is md
+-     - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+-    By default only the results are exported, you can add whichever
+-    field you need as a string:
+-    add 'geometry' to export md.geometry
+-
+-    Basile de Fleurian:
+-    '''
+-    Dir = os.path.basename(filename)
+-    Path = filename[: - len(Dir)]
+-
+-    if os.path.exists(filename):
+-        print(('File {} allready exist'.format(filename)))
+-        newname = input('Give a new name or "delete" to replace: ')
+-        if newname == 'delete':
+-            filelist = glob.glob(filename + '/* ')
+-            for oldfile in filelist:
+-                os.remove(oldfile)
+-        else:
+-            print(('New file name is {}'.format(newname)))
+-            filename = newname
+-            os.mkdir(filename)
+-    else:
+-        os.mkdir(filename)
+-
+-    # {{{get the element related variables
+-    if 'z' in dict.keys(model.mesh.__dict__):
+-        is_enveloppe = np.logical_or(model.mesh.vertexonbase, model.mesh.vertexonsurface)
+-        enveloppe_index = np.where(is_enveloppe)[0]
+-        convert_index = np.nan * np.ones(np.shape(model.mesh.x))
+-        convert_index = np.asarray([[i, np.where(enveloppe_index == i)[0][0]] for i, val in enumerate(convert_index) if any(enveloppe_index == i)])
+-        points = np.column_stack((model.mesh.x[enveloppe_index],
+-                                  model.mesh.y[enveloppe_index],
+-                                  model.mesh.z[enveloppe_index]))
+-        low_elt_num = np.size(np.where(np.isnan(model.mesh.lowerelements)))
+-        top_elt_num = np.size(np.where(np.isnan(model.mesh.upperelements)))
+-        num_of_elt = low_elt_num + top_elt_num
+-        connect = model.mesh.elements[np.where(is_enveloppe[model.mesh.elements - 1])].reshape(int(num_of_elt), 3) - 1
+-        for elt in range(0, num_of_elt):
+-            connect[elt, 0] = convert_index[np.where(convert_index == connect[elt, 0])[0], 1][0]
+-            connect[elt, 1] = convert_index[np.where(convert_index == connect[elt, 1])[0], 1][0]
+-            connect[elt, 2] = convert_index[np.where(convert_index == connect[elt, 2])[0], 1][0]
+-
+-    else:
+-        points = np.column_stack((model.mesh.x,
+-                                  model.mesh.y,
+-                                  np.zeros(np.shape(model.mesh.x))))
+-        num_of_elt = np.shape(model.mesh.elements)[0]
+-        connect = model.mesh.elements - 1
+-        enveloppe_index = np.arange(0, np.size(model.mesh.x))
+-
+-    every_nodes = np.size(model.mesh.x)
+-    num_of_points = np.size(enveloppe_index)
+-    dim = 3
+-    point_per_elt = 3
+-    celltype = 5  #triangles
+-
+-    # }}}
+-    # {{{this is the result structure
+-    res_struct = model.results
+-    if (len(res_struct.__dict__) > 0):
+-        #Getting all the solutions of the model
+-        solnames = (dict.keys(res_struct.__dict__))
+-        num_of_sols = len(solnames)
+-        num_of_timesteps = 1
+-        #%building solutionstructure
+-        for solution in solnames:
+-            #looking for multiple time steps
+-            if (np.size(res_struct.__dict__[solution]) > num_of_timesteps):
+-                num_of_timesteps = np.size(res_struct.__dict__[solution])
+-                num_of_timesteps = int(num_of_timesteps)
+-    else:
+-        num_of_timesteps = 1
+-    # }}}
+-    # {{{write header and mesh
+-    for step in range(0, num_of_timesteps):
+-        timestep = step
+-        fid = open((filename + '/Timestep.vtk' + str(timestep) + '.vtk'), 'w + ')
+-        fid.write('  # vtk DataFile Version 2.0 \n')
+-        fid.write('Data for run %s \n' % model.miscellaneous.name)
+-        fid.write('ASCII \n')
+-        fid.write('DATASET UNSTRUCTURED_GRID \n')
+-        fid.write('POINTS %d float\n' % num_of_points)
+-        for point in points:
+-            fid.write('%f %f %f \n' % (point[0], point[1], point[2]))
+-
+-        fid.write('CELLS %d %d\n' % (num_of_elt, num_of_elt * (point_per_elt + 1)))
+-
+-        for elt in range(0, num_of_elt):
+-            fid.write('3 %d %d %d\n' % (connect[elt, 0],
+-                                        connect[elt, 1],
+-                                        connect[elt, 2]))
+-
+-        fid.write('CELL_TYPES %d\n' % num_of_elt)
+-        for elt in range(0, num_of_elt):
+-            fid.write('%d\n' % celltype)
+-
+-        fid.write('POINT_DATA %s \n' % str(num_of_points))
+-    # }}}
+-    # {{{loop over the different solution structures
+-        if 'solnames' in locals():
+-            for sol in solnames:
+-                #dealing with results on different timesteps
+-                if(np.size(res_struct.__dict__[sol]) > timestep):
+-                    timestep = step
+-                else:
+-                    timestep = np.size(res_struct.__dict__[sol])
+-
+-    #getting the  fields in the solution
+-                if(type(res_struct.__dict__[sol]) == list):
+-                    fieldnames = dict.keys(res_struct.__dict__[sol].__getitem__(timestep).__dict__)
+-                else:
+-                    fieldnames = dict.keys(res_struct.__dict__[sol].__dict__)
+-    #check which field is a real result and print
+-                for field in fieldnames:
+-                    if(type(res_struct.__dict__[sol]) == list):
+-                        fieldstruct = res_struct.__dict__[sol].__getitem__(timestep).__dict__[field]
+-                    else:
+-                        fieldstruct = res_struct.__dict__[sol].__dict__[field]
+-
+-                    if ((np.size(fieldstruct)) == every_nodes):
+-                        fid.write('SCALARS %s float 1 \n' % field)
+-                        fid.write('LOOKUP_TABLE default\n')
+-                        for node in range(0, num_of_points):
+-                            #paraview does not like NaN, replacing
+-                            if np.isnan(fieldstruct[enveloppe_index[node]]):
+-                                fid.write('%e\n' % - 9999.9999)
+-                                #also checking for verry small value that mess up
+-                            elif (abs(fieldstruct[enveloppe_index[node]]) < 1.0e-20):
+-                                fid.write('%e\n' % 0.0)
+-                            else:
+-                                fid.write('%e\n' % fieldstruct[enveloppe_index[node]])
+-    # }}}
+-    # {{{loop on arguments, if something other than result is asked, do it now
+-
+-        for other in args:
+-            other_struct = model.__dict__[other]
+-            othernames = (dict.keys(other_struct.__dict__))
+-            for field in othernames:
+-                if ((np.size(other_struct.__dict__[field])) == every_nodes):
+-                    fid.write('SCALARS %s float 1 \n' % field)
+-                    fid.write('LOOKUP_TABLE default\n')
+-                    for node in range(0, num_of_points):
+-                        #paraview does not like NaN, replacing
+-                        if np.isnan(other_struct.__dict__[field][enveloppe_index[node]]):
+-                            fid.write('%e\n' % - 9999.9999)
+-                            #also checking for verry small value that mess up
+-                        elif (abs(other_struct.__dict__[field][enveloppe_index[node]]) < 1.0e-20):
+-                            fid.write('%e\n' % 0.0)
+-                        else:
+-                            fid.write('%e\n' % other_struct.__dict__[field][enveloppe_index[node]])
+-
+-    # }}}
+-    fid.close()
+Index: ../trunk-jpl/src/m/contrib/defleurian/paraview/enveloppeVTK.m
+===================================================================
+--- ../trunk-jpl/src/m/contrib/defleurian/paraview/enveloppeVTK.m	(revision 27143)
++++ ../trunk-jpl/src/m/contrib/defleurian/paraview/enveloppeVTK.m	(nonexistent)
+@@ -1,186 +0,0 @@
+-function enveloppeVTK(filename,model,varargin)
+-% vtk export
+-% function enveloppeVTK(filename,model)
+-% creates a directory with the vtk files for displays in paraview
+-% only export the enveloppe result (surface and base) on trias
+-%
+-% input: filename   destination 
+-%                   (string)
+-%------------------------------------------------------------------
+-%        model      this is md 
+-%------------------------------------------------------------------
+-% By default only the results are exported, you can add whichever
+-% field you need as a string:
+-% add 'geometry' to export md.geometry
+-%
+-% Basile de Fleurian:
+-
+-[path,name,ext]=fileparts(filename);
+-separator=filesep;
+-mkdir(filename);
+-IsEnveloppe=find(model.mesh.vertexonbase | model.mesh.vertexonsurface);
+-
+-%get the element related variables
+-if dimension(model.mesh)==2,
+-	points=[model.mesh.x model.mesh.y zeros(model.mesh.numberofvertices,1)];
+-	[num_of_elt]=size(model.mesh.elements,1);
+-else
+-	points=[model.mesh.x(IsEnveloppe) model.mesh.y(IsEnveloppe) model.mesh.z(IsEnveloppe)];
+-	[num_of_elt]=size(find(isnan(model.mesh.lowerelements)),1)+size(find(isnan(model.mesh.upperelements)),1);
+-	[low_elt_num]=size(find(isnan(model.mesh.lowerelements)),1);
+-	[top_elt_num]=size(find(isnan(model.mesh.upperelements)),1);
+-end
+-
+-celltype=5; %triangles
+-[num_of_points,dim]=size(points);
+-[point_per_elt]=size(model.mesh.elements,2);
+-tot_points=model.mesh.numberofvertices;
+-
+-%this is the result structure
+-res_struct=model.results;
+-%checking for results
+-if (length(fields(res_struct))>0);
+-	%Getting all the solutions of the model
+-	solnames=fields(res_struct);
+-	num_of_sols=length(solnames);
+-	num_of_timesteps=1;
+-	%building solution structure 
+-	for i=1:num_of_sols
+-		sol_struct{i}=res_struct.(solnames{i});
+-		%looking for multiple time steps
+-		if(size(sol_struct{i},2)>num_of_timesteps);
+-			num_of_timesteps=size(sol_struct{i},2);
+-			outstep=model.timestepping.time_step*model.settings.output_frequency
+-    end
+-  end
+-else
+-	num_of_timesteps=1;
+-end
+-for step=1:num_of_timesteps;
+-	
+-	timestep=step;
+-	fid = fopen(strcat(path,filesep,name,filesep,'timestep.vtk',int2str(timestep),'.vtk'),'w+');
+-	fprintf(fid,'# vtk DataFile Version 2.0 \n');
+-	fprintf(fid,'Data for run %s \n',model.miscellaneous.name);
+-	fprintf(fid,'ASCII \n');
+-	fprintf(fid,'DATASET UNSTRUCTURED_GRID \n');
+-	
+-	fprintf(fid,'POINTS %d float\n',num_of_points);
+-	if(dim==3);
+-		s='%f %f %f \n';
+-	elseif(dim==2);
+-		s='%f %f \n';
+-  end
+-	P=[points zeros(num_of_points,3-dim)];
+-	fprintf(fid,s,P');
+-	
+-	fprintf(fid,'CELLS %d %d\n',num_of_elt,num_of_elt*(3+1));
+-	s='%d';
+-	for j=1:3
+-		s=horzcat(s,{' %d'});
+-  end
+-	s=cell2mat(horzcat(s,{'\n'}));
+-
+-	%build the connection matrix for the top and bottom elements
+-	if exist('low_elt_num')
+-		triaconnect=zeros(num_of_elt,3);
+-		triaconnect(1:low_elt_num,:)=model.mesh.elements(find(isnan(model.mesh.lowerelements)),1:3);
+-		upshift=-min(min(model.mesh.elements(find(isnan(model.mesh.upperelements)),4:6)))+1+max(max(model.mesh.elements(find(isnan(model.mesh.lowerelements)),1:3)));
+-		triaconnect(1+low_elt_num:num_of_elt,:)=model.mesh.elements(find(isnan(model.mesh.upperelements)),4:6)+upshift;
+-		fprintf(fid,s,[(3)*ones(num_of_elt,1) triaconnect-1]');
+-	else
+-		fprintf(fid,s,[(point_per_elt)*ones(num_of_elt,1)	model.mesh.elements-1]');
+-  end
+-
+-	fprintf(fid,'CELL_TYPES %d\n',num_of_elt);
+-	s='%d\n';
+-	fprintf(fid,s,celltype*ones(num_of_elt,1));
+-	fprintf(fid,'POINT_DATA %s \n',num2str(num_of_points));
+-
+-	%loop over the different solution structures
+-	if (exist('num_of_sols'));
+-		for j=1:num_of_sols
+-			%dealing with results on different timesteps
+-			if(size(sol_struct{j},2)>timestep);
+-				timestep = step;
+-			else
+-				timestep = size(sol_struct{j},2);
+-	    end
+-			%getting the number of fields in the solution
+-			resfields=fields(sol_struct{j}(timestep));
+-			num_of_fields=length(resfields);
+-			%check which field is a real result and print
+-			for k=1:num_of_fields
+-				if ((numel(sol_struct{j}(timestep).(resfields{k})))==tot_points);
+-					%paraview does not like NaN, replacing
+-					nanval=find(isnan(sol_struct{j}(timestep).(resfields{k})));
+-					sol_struct{j}(timestep).(resfields{k})(nanval)=-9999;
+-					%also checking for verry small value that mess up
+-					smallval=(abs(sol_struct{j}(timestep).(resfields{k}))<1.0e-20);
+-					sol_struct{j}(timestep).(resfields{k})(smallval)=0.0;
+-					fprintf(fid,'SCALARS %s float 1 \n',resfields{k});
+-					fprintf(fid,'LOOKUP_TABLE default\n');
+-					s='%e\n';
+-					fprintf(fid,s,sol_struct{j}(timestep).(resfields{k})(IsEnveloppe));
+-		    end		
+-	    end 
+-	  end
+-  end
+-	%loop on arguments, if something other than result is asked, do
+-	%it now
+-	for j= 1:nargin-2
+-		res_struct=model.(varargin{j});
+-		fieldnames=fields(res_struct);
+-		num_of_fields=length(fieldnames);
+-		for k=1:num_of_fields
+-			if ((numel(res_struct.(fieldnames{k})))==tot_points);
+-				%paraview does not like NaN, replacing
+-				nanval=find(isnan(res_struct.(fieldnames{k})));
+-				res_struct.(fieldnames{k})(nanval)=-9999;
+-				%also checking for verry small value that mess up
+-				smallval=(abs(res_struct.(fieldnames{k}))<1.0e-20);
+-				res_struct.(fieldnames{k})(smallval)=0.0;
+-				fprintf(fid,'SCALARS %s float 1 \n',fieldnames{k});
+-				fprintf(fid,'LOOKUP_TABLE default\n');
+-				s='%e\n';
+-				fprintf(fid,s,res_struct.(fieldnames{k})(IsEnveloppe));
+-				%check for forcings	
+-			elseif (size(res_struct.(fieldnames{k}),1)==tot_points+1);
+-				%paraview does not like NaN, replacing
+-				nanval=find(isnan(res_struct.(fieldnames{k})));
+-				res_struct.(fieldnames{k})(nanval)=-9999;
+-				%also checking for verry small value that mess up
+-				smallval=(abs(res_struct.(fieldnames{k}))<1.0e-20);
+-				res_struct.(fieldnames{k})(smallval)=0.0;
+-				if (size(res_struct.(fieldnames{k}),2)==num_of_timesteps),
+-					fprintf(fid,'SCALARS %s float 1 \n',fieldnames{k});
+-					fprintf(fid,'LOOKUP_TABLE default\n');
+-					s='%e\n';
+-					fprintf(fid,s,res_struct.(fieldnames{k})(IsEnveloppe,timestep));
+-				else,
+-					%forcing and results not on the same timestep,need some treatment
+-					fprintf(fid,'SCALARS %s float 1 \n',fieldnames{k});
+-					fprintf(fid,'LOOKUP_TABLE default\n');
+-					index=1
+-					currenttime=((timestep-1)*outstep)+model.timestepping.start_time+model.timestepping.time_step
+-					while (res_struct.(fieldnames{k})(end,index)<=currenttime);
+-						index=index+1
+-		      end
+-					uptime=res_struct.(fieldnames{k})(end,index);
+-					uplim=res_struct.(fieldnames{k})(IsEnveloppe,index);
+-					uptime
+-					while (res_struct.(fieldnames{k})(end,index)>=currenttime);
+-						index=index-1
+-		      end
+-					lowtime=res_struct.(fieldnames{k})(end,index);
+-					lowlim=res_struct.(fieldnames{k})(IsEnveloppe,index);
+-					lowtime
+-					interp=lowlim+(uplim-lowlim)*((currenttime-lowtime)/(uptime-lowtime))
+-					s='%e\n';
+-					fprintf(fid,s,interp);
+-				end	
+-		  end		
+-		end 
+-	end
+-	fclose(fid);
+-end
Index: /issm/oecreview/Archive/27032-27229/ISSM-27144-27145.diff
===================================================================
--- /issm/oecreview/Archive/27032-27229/ISSM-27144-27145.diff	(revision 27230)
+++ /issm/oecreview/Archive/27032-27229/ISSM-27144-27145.diff	(revision 27230)
@@ -0,0 +1,22 @@
+Index: ../trunk-jpl/src/m/mesh/planet/gmsh/gmshplanet.m
+===================================================================
+--- ../trunk-jpl/src/m/mesh/planet/gmsh/gmshplanet.m	(revision 27144)
++++ ../trunk-jpl/src/m/mesh/planet/gmsh/gmshplanet.m	(revision 27145)
+@@ -18,6 +18,17 @@
+ 	[s,r]=system(['gmsh -info 2>&1 | command grep ''Version'' | sed -e ''s/Version[[:blank:]]*:[[:blank:]]//'' | cut -d ''.'' -f1']);
+ 	if s~=0,
+ 		error(r);
++	elseif isempty(r),
++		% If this function is called from one of our distributable packages, we 
++		% need to do a bit more to find the Gmsh executable
++		[filepath,name,ext]=fileparts(which('gmsh.'));
++		setenv('PATH',[filepath ':' getenv('PATH')])
++		[s,r]=system(['gmsh -info 2>&1 | command grep ''Version'' | sed -e ''s/Version[[:blank:]]*:[[:blank:]]//'' | cut -d ''.'' -f1']);
++		if s~=0,
++			error(r);
++		elseif isempty(r),
++			error('gmshplanet: Gmsh executable not found!');
++		end
+ 	end
+ 	gmshmajorversion=str2num(r);
+ 	if ~ismember([3,4],gmshmajorversion),
Index: /issm/oecreview/Archive/27032-27229/ISSM-27145-27146.diff
===================================================================
--- /issm/oecreview/Archive/27032-27229/ISSM-27145-27146.diff	(revision 27230)
+++ /issm/oecreview/Archive/27032-27229/ISSM-27145-27146.diff	(revision 27230)
@@ -0,0 +1,2726 @@
+Index: ../trunk-jpl/src/c/modules/FourierLoveCorex/util.f90
+===================================================================
+--- ../trunk-jpl/src/c/modules/FourierLoveCorex/util.f90	(revision 27145)
++++ ../trunk-jpl/src/c/modules/FourierLoveCorex/util.f90	(nonexistent)
+@@ -1,226 +0,0 @@
+-module util
+- 
+- use model
+- use lnb_param
+-
+- contains
+-
+-!
+-!_______DERIVS_________________________________________________________________
+-!
+- subroutine derivs(x,y,dydx)
+- 
+- implicit none
+- double complex  :: la, mu
+- double precision :: x,ro,g
+- double complex :: flm,rlm,rm0,rg0,frh,fgr,fn
+- logical :: solid
+- integer :: iy,id,n2,ny
+- double complex, dimension(6)   :: y,dydx,f
+- double complex, dimension(6,6) :: dy
+-
+- call earth_nlayers_viscoelas(x,ro,la,mu,g,solid)
+- !print*,la,mu
+-!
+-!_______Expressions
+-!
+- flm=(la+2.d0*mu)
+- rlm=(3.d0*la+2.d0*mu)/(la+2.d0*mu)
+- rm0=mu/mu0
+- rg0=g/go0
+- frh=ro*g*ra/mu0
+- fgr=4.d0*Pi*GG*ro*ra/go0
+- fn=dble(deg*(deg+1))
+- 
+-!
+-!_______Systeme differentiel yi dans un solide
+-!
+- if(solid) then
+- 
+- ny = 6
+-
+- dy(1,1)= (-2.d0*la/flm)/x
+- dy(1,2)= mu0/flm
+- dy(1,3)= (la*fn/flm)/x
+- dy(1,4)= 0.d0
+- dy(1,5)= 0.d0
+- dy(1,6)= 0.d0
+-
+- dy(2,1)=  4.d0*(-frh+rm0*rlm/x)/x + ro*freq**2*ra/mu0
+- dy(2,2)=(-4.d0*mu/flm)/x
+- dy(2,3)= fn*(frh-2.d0*rm0*rlm/x)/x
+- dy(2,4)= fn/x
+- dy(2,5)= 0.d0
+- dy(2,6)= -frh/rg0
+-
+- dy(3,1)= -1.d0/x
+- dy(3,2)= 0.d0
+- dy(3,3)= 1.d0/x
+- dy(3,4)= 1.d0/rm0
+- dy(3,5)= 0.d0
+- dy(3,6)= 0.d0
+-
+- dy(4,1)= (frh-2.d0*rm0*rlm/x)/x
+- dy(4,2)= ( -la/flm)/x
+- dy(4,3)= (2.d0*rm0*(la*(2.d0*fn-1.d0)+2.d0*mu*(fn-1.d0))/flm)/(x*x) + ro*freq**2*ra/mu0
+- dy(4,4)= -3.d0/x
+- dy(4,5)= -(frh/rg0)/x
+- dy(4,6)= 0.d0
+-
+- dy(5,1)= fgr
+- dy(5,2)= 0.d0
+- dy(5,3)= 0.d0
+- dy(5,4)= 0.d0
+- dy(5,5)= 0.d0
+- dy(5,6)= 1.d0
+-
+- dy(6,1)= 0.d0
+- dy(6,2)= 0.d0
+- dy(6,3)= -(fgr*fn)/x
+- dy(6,4)= 0.d0
+- dy(6,5)= fn/(x*x)
+- dy(6,6)= -2.d0/x
+-  
+- else
+- 
+- ny = 2
+-
+- dy(:,:)= 0.d0
+-
+- dy(1,1)= fgr/rg0
+- dy(1,2)= 1.d0
+- dy(2,1)= (-4.d0*(fgr/rg0)+fn/x)/x
+- dy(2,2)= -2.d0/x-fgr/rg0
+- 
+- end if
+-!
+-!_______Derivees des yi
+-! 
+- dydx(:)=0.d0 
+- do id=1,ny
+-  do iy=1,ny
+-     dydx(id)=dydx(id)+dy(id,iy)*y(iy)
+-  end do
+- end do
+-
+-    end subroutine derivs
+-
+-
+-    subroutine propagFDS(ystart,xmin,xmax,nstep)
+-     implicit none
+-     double precision :: xmin,xmax,dr,x
+-     integer :: nstep,i
+-     double complex, dimension(6)   :: ystart,dydx,y,y1
+-
+-     dr = (xmax -xmin)/nstep
+-     y = ystart
+-     x = xmin
+-
+-     do i = 1,nstep
+-
+-  call derivs(x,y,dydx)
+-  y1 = y + dr*dydx
+-  x = x + dr
+-  y = y1
+-
+-     end do
+-
+-     ystart = y
+-
+- end subroutine propagFDS
+-
+-!_____LUDCMP___________________________________________________________________
+-!
+-      SUBROUTINE ludcmp(a,n,np,indx,d)
+-      IMPLICIT DOUBLE PRECISION (a-h,o-z)
+-      INTEGER n,np,indx(n),NMAX
+-      REAL*8 d,a(np,np),TINY
+-      PARAMETER (NMAX=500,TINY=1.0D-30)
+-      INTEGER i,imax,j,k
+-      REAL*8 aamax,dum,sum,vv(NMAX)
+-      d=1d0
+-      do 12 i=1,n
+-        aamax=0d0
+-        do 11 j=1,n
+-          if (dabs(a(i,j)).gt.aamax) aamax=dabs(a(i,j))
+-11      continue
+-        if (aamax.eq.0d0) stop 'singular matrix in ludcmp'
+-        vv(i)=1./aamax
+-12    continue
+-      do 19 j=1,n
+-        do 14 i=1,j-1
+-          sum=a(i,j)
+-          do 13 k=1,i-1
+-            sum=sum-a(i,k)*a(k,j)
+-13        continue
+-          a(i,j)=sum
+-14      continue
+-        aamax=0d0
+-        do 16 i=j,n
+-          sum=a(i,j)
+-          do 15 k=1,j-1
+-            sum=sum-a(i,k)*a(k,j)
+-15        continue
+-          a(i,j)=sum
+-          dum=vv(i)*dabs(sum)
+-          if (dum.ge.aamax) then
+-            imax=i
+-            aamax=dum
+-          endif
+-16      continue
+-        if (j.ne.imax)then
+-          do 17 k=1,n
+-            dum=a(imax,k)
+-            a(imax,k)=a(j,k)
+-            a(j,k)=dum
+-17        continue
+-          d=-d
+-          vv(imax)=vv(j)
+-        endif
+-        indx(j)=imax
+-        if(a(j,j).eq.0d0)a(j,j)=TINY
+-        if(j.ne.n)then
+-          dum=1d0/a(j,j)
+-          do 18 i=j+1,n
+-            a(i,j)=a(i,j)*dum
+-18        continue
+-        endif
+-19    continue
+-      return
+-      END SUBROUTINE ludcmp
+-!
+-!_____LUBKSB___________________________________________________________________
+-!
+-      SUBROUTINE lubksb(a,n,np,indx,b)
+-      IMPLICIT DOUBLE PRECISION (a-h,o-z)
+-      INTEGER n,np,indx(n)
+-      REAL*8 a(np,np),b(np)
+-      INTEGER i,ii,j,ll
+-      REAL*8 sum
+-      ii=0
+-      do 12 i=1,n
+-        ll=indx(i)
+-        sum=b(ll)
+-        b(ll)=b(i)
+-        if (ii.ne.0)then
+-          do 11 j=ii,i-1
+-            sum=sum-a(i,j)*b(j)
+-11        continue
+-        else if (sum.ne.0d0) then
+-          ii=i
+-        endif
+-        b(i)=sum
+-12    continue
+-      do 14 i=n,1,-1
+-        sum=b(i)
+-        do 13 j=i+1,n
+-          sum=sum-a(i,j)*b(j)
+-13      continue
+-        b(i)=sum/a(i,i)
+-14    continue
+-      return
+-      END SUBROUTINE lubksb
+-
+-
+-
+-end module util
+Index: ../trunk-jpl/src/c/modules/FourierLoveCorex/lovenb_sub.f90
+===================================================================
+--- ../trunk-jpl/src/c/modules/FourierLoveCorex/lovenb_sub.f90	(revision 27145)
++++ ../trunk-jpl/src/c/modules/FourierLoveCorex/lovenb_sub.f90	(nonexistent)
+@@ -1,589 +0,0 @@
+-module lovenb_sub
+-
+- use util
+- use lnb_param
+-
+- implicit none
+- 
+- contains
+- 
+- ! subroutine boundary_conditions_matrix {{{ 
+- subroutine boundary_conditions_matrix(bc,indx,nbc)
+-
+-  implicit none
+-  double complex :: la, mu
+-  double precision :: xmin,xmax,eps,hini,hmin
+-  double precision :: x,ro1,ro2,g,d,one
+-  double complex, dimension (:,:), pointer :: bc
+-  integer, dimension(:), pointer   :: indx
+-  double complex, dimension(6)   :: ystart,dydx
+-  double complex, dimension(6,6) :: ystep
+-  integer :: ny,i,j,k,ii,jj,kk,nok,nbad,is,nbc,ibc,ifirst,nstep
+-  logical :: solid,vali
+-  
+-  !-- Initialisation of boundary condition matrix
+-
+-  indx(:) = 0
+-  
+-  !-- Integration 
+-
+-  eps= 1.d-10
+-  hini=1.d-10
+-  hmin=0.d0
+-
+-  ! Underflows risk tests in the numerical integration
+-  ! The starting ystart are chosen to be different than 1 to limit under and overflows in the Runge-Kutta
+-  if (-300.d0<dlog10(tiny(ra))) then 
+-	write(*,*) 'Warning problem in the dimensioning of the starting values in Runge-Kutta'
+-	write(*,*) 'log tiny(ra) = ', dlog(tiny(ra))
+-	stop
+-  endif
+-
+-	
+-   if ((dlog10(1.d0/ra**dint(dble(deg)/10.d0)))<-250.d0) then
+-	!valini=1.d-300!*complex(1.d0,1.d0)
+-	   valini=10.d0**(-dble(150)/dble(nbc/6-1))!*complex(1.d0,1.d0)
+-   else
+-	   valini= 1.d0!*complex(1.d0,1.d0)
+-   endif
+-
+-  ! Which among the model interfaces is the first to display boundary conditions
+-  ifirst = 0
+-  i = 0
+-  do while (ifirst==0)
+-	i = i+1
+-	if (radbc(i)) ifirst = i
+-  end do
+-  
+-  
+-  !-- Layer iteration for the solutions propagation 
+-  !    and typing the matrix boundary conditions 
+-  ibc = 0   ! Counter of interfaces with boundary conditions 
+- 
+-  do i = ifirst,nlayer 
+-  
+-   xmin= radius(i)/ra
+-   xmax= radius(i+1)/ra - epsdb
+-   nstep=100
+-  
+-   if (soliddim(i)) then
+-   		ny = 6
+-   		is = 0
+-   		one= 1.d0
+-   else	
+-   		ny = 2
+-   		is = 4
+-   		one= -1.d0
+-   end if 	
+-   
+-   do j = 1,ny
+-		! Typing ystart 
+-      !!! >>> SA: 01/27/2018 => changes made to retrieve love numbers at depth 
+-		!!!if (radbc(i)) then
+-   		ystart(:)= 0.d0
+-			ystart(j)= valini
+- 			k=ibc+1
+- 		!!!else
+- 		!!!	ystart(:)=ystep(j,:)
+- 		!!!end if
+- 		
+-		! Numerical Integration 
+-		!print*,j
+-		call propagFDS(ystart,xmin,xmax,nstep)
+- 		!call odeint(ystart,ny,xmin,xmax,eps,hini,hmin,nok,nbad)
+-		!print*,j
+- 		
+- 		! Boundary Condition matrix - propagation part 
+-		!!!if (radbc(i+1)) then
+- 			ii = 6*k+is
+- 			jj = 6*k+j+is-3
+- 			do kk=1,ny
+-            bc(ii+kk,jj) = ystart(kk)*one !/valini 
+-			end do
+-		!!!else
+-		!!!	ystep(j,:)=ystart(:) 
+- 		!!!end if
+-   end do
+-	
+-	
+-   !!!if (radbc(i)) then
+-   
+-	! Boundary Condition matrix - solid regions
+-	if (soliddim(i)) then
+-		one = -1.d0
+-		if (i>1)then 
+-			if (.not.soliddim(i-1)) one = 1.d0
+-		end if
+-		do  j=1,6
+-			bc(j+6*ibc,j+6*ibc+3) = one
+-		end do
+-		
+-	! Boundary Condition matrix - liquid regions
+-	else
+-		x = radius(i)/ra
+-		call earth_nlayers_viscoelas(x,ro2,la,mu,g,solid)
+-		ii = 6*ibc+1
+-		bc(ii,ii+3) = -1.d0
+-		bc(ii,ii+4+3) = -go0/g
+-		bc( ii+1,ii+3)=-ro2*g*ra/mu0
+-		bc( ii+2,ii+1+3)=-1.d0
+-		bc(ii+5,ii+3)= 4.d0*pi*GG*ro2*ra/go0
+-		bc(ii+4,ii+4+3)=-1.d0
+-		bc(ii+5,ii+5+3)=-1.d0
+-		x = radius(i+1)/ra
+-		call earth_nlayers_viscoelas(x-epsdb,ro1,la,mu,g,solid)
+-		call earth_nlayers_viscoelas(x,ro2,la,mu,g,solid)
+-		ii = 6*(ibc+1)+1
+-		bc(ii,ii-1)=-1.d0
+-		bc(ii,ii+1)=bc(ii+4,ii+1)*go0/g ! b(17,14) solution integration 1 of z5 CMB
+-		bc(ii,ii+2)=bc(ii+4,ii+2)*go0/g ! b(17,15) solution integration 2 of z5 CMB
+-		 					  ! b(13,..) y1 CMB
+-		bc(ii+1,ii-1)=-ro1*g*ra/mu0
+-		bc(ii+2,ii)=-1.d0
+-		bc(ii+5,ii-1)= 4.d0*pi*GG*ro1*ra/go0
+-	end if	
+-	ibc = ibc+1
+-	
+-   !! end if
+-	
+-  end do
+-
+-  !-- Internal sphere
+-
+-  call sphere(ifirst,deg,bc)
+-
+-  !-- Surface conditions
+-	bc(nbc-5,nbc-2)=-1.d0
+-	bc(nbc-3,nbc-1)=-1.d0
+-	bc(nbc-1,nbc)=-1.d0
+-	bc(nbc,nbc)=dble(deg+1)
+-
+-  !-- Degree 1 special case
+-	if(deg==1) then
+-		  bc(nbc,:)=0.d0
+-		  bc(nbc,nbc)=1.d0
+-	end if
+-
+-	!print*, bc, imag_eval
+- end subroutine boundary_conditions_matrix
+-  ! }}} 
+- 
+- ! subroutine sphere {{{
+- subroutine sphere(i,n,bc)
+-!------------------------
+-
+-	implicit none
+-	double complex :: la,mu
+-	integer :: n,i
+-	double precision :: x,e,r,ro,g,cst,xsen,eps
+-	double complex, dimension(:,:),pointer :: bc
+-
+-	logical :: solid
+-	
+-
+-	eps= 1.d-10
+-	x = radius(i)/ra
+-	e = x
+-	call earth_nlayers_viscoelas(x-eps,ro,la,mu,g,solid)
+-	
+-	xsen=(x/e)**n
+-	r=x*ra
+-	cst = 4.d0*pi*GG*ro
+-
+-	!write(89,*),xsen,r,ra,cst,mu0,mu,n	
+-
+-
+-	bc(1,1)=xsen*r/ra
+-	bc(1,2)=xsen/(r*ra)
+-	bc(1,3)=0.d0
+-
+-	bc(2,1)=(2.d0*mu*dble(n*n-n-3)/dble(n) + cst/3.d0*ro*r**2)*xsen/mu0
+-	bc(2,2)=(2.d0*mu*dble(n-1)/r**2 + cst/3.d0*ro)*xsen/mu0
+-	bc(2,3)=-ro*xsen/mu0
+-
+-	bc(3,1)=dble(n+3)/dble(n*(n+1))*xsen*r/ra
+-	bc(3,2)=1.d0/dble(n)*xsen/(r*ra)
+-	bc(3,3)=0.d0
+-
+-	bc(4,1)=2.d0*mu*dble(n+2)/dble(n+1)*xsen/mu0
+-	bc(4,2)=2.d0*mu*dble(n-1)/dble(n)*xsen/(r**2*mu0)
+-	bc(4,3)=0.d0
+-
+-	bc(5,1)=0.d0
+-	bc(5,2)=0.d0
+-	bc(5,3)=xsen/(go0*ra)
+-
+-	bc(6,1)=-cst*xsen*r/go0
+-	bc(6,2)=-cst*xsen/(r*go0)
+-	bc(6,3)=dble(n)*xsen/(r*go0)
+-
+-
+- end subroutine sphere
+- ! }}} 
+- 
+- ! subroutine external_forcing {{{
+- subroutine external_forcing(n,source,sourcs,nfext,nbc)
+-!-----------------------------------
+-
+-   implicit none
+-   integer :: n
+-   integer :: nfext,nbc
+-   character*40,     dimension(:),   pointer :: sourcs
+-   double complex, dimension(:,:), pointer :: source
+-   
+-   source(:,:)=0.d0
+-   sourcs(:)=' '
+-	  
+-   ! In Case of a Inner Core - Outer Core - Mantle planet and Boundary conditions on these 3 interfaces
+-   if (nbc == 24) then 
+-   
+-	!-- Sources at the ICB
+-   
+-	sourcs(1)='ICB --Volumetric Potential'
+-	source(1,12)=dble(n)/(rc*go0)
+-	source(1,11)=1.d0/(ra*go0)
+-	
+-	sourcs(2)='ICB --Pressure'
+-	source(2, 8)=-ro_mean/mu0
+-
+-	sourcs(3)='ICB --Loading'
+-	source(3, 8)=-ro_mean*dble(2*n+1)/(3.d0*mu0)*ra/rc
+-	source(3,12)= dble(2*n+1)/(rc*go0)
+-
+-	sourcs(4)='ICB --Tangential Traction'
+-	source(4,10)= ro_mean/mu0
+-
+-	!--Sources at the CMB
+-
+-	sourcs(5)='CMB --Volumetric Potential'
+-	source(5,14)=-ro_mean/mu0*ra/rb
+-	source(5,18)= dble(2*n+1)/(rb*go0)
+-
+-	sourcs(6)='CMB --Pressure'
+-	source(6,14)=-ro_mean/mu0
+-
+-	sourcs(7)='CMB --Loading'
+-	source(7,14)=-ro_mean*dble(2*n+1)/(3.d0*mu0)*ra/rb
+-	source(7,18)= dble(2*n+1)/(rb*go0)
+-
+-	sourcs(8)='CMB --Tangential Traction'
+-	source(8,16)=-ro_mean/mu0
+-	
+-    endif
+-
+-    !--Sources at the surface
+-
+-	sourcs(9)='SURF--Volumetric Potential'
+-	source(9,nbc)=dble(2*n+1)/(ra*go0)
+-
+-	sourcs(10)='SURF--Pressure'
+-	source(10,nbc-4)=-ro_mean/mu0
+-
+-	sourcs(11)='SURF--Loading'
+-	source(11,nbc-4)=-ro_mean*dble(2*n+1)/(3.d0*mu0)
+-	source(11,nbc)= dble(2*n+1)/(ra*go0)
+-
+-	sourcs(12)='SURF--Tangential Traction'
+-	source(12,nbc-2)= ro_mean/mu0
+-
+-	!--Special case n=1
+-
+-	if (n.eq.1) then
+-	  source(11,nbc)=0.d0
+-	  source(9,nbc)=0.d0
+-	end if
+-	
+- 
+- end subroutine external_forcing
+- ! }}} 
+- 
+- ! subroutine solution {{{ 
+- subroutine solution(n,bc,indx,f,sourcs,nfext,nbc,loveh,lovel,lovek,delta,love_kernels)
+-!-------------------------------------------------
+-
+-  integer :: n,nfext,nbc,i,j,ic,ibc,ii,jj,icmin,ifirst,info,lda,ldb
+-  double complex, dimension(:,:), pointer :: bc,f
+-  integer,      dimension(:), pointer :: indx
+-  character*40, dimension(:), pointer :: sourcs	
+-  double complex, dimension(nbc,1) :: sc, love_kernels
+-  double complex :: loveh,lovel,lovek,loveh1,lovel1,lovek1,loveh1s,lovel1s,lovek1s
+-  double complex :: sumh,suml,sumk,d,val,sumy2,sumy4,sumy6,rads
+-  double precision :: delta
+-  double complex, dimension(6) :: icbh,icbl,icbk,y2srf,y4srf,y6srf
+-  double complex, dimension(nbc,nbc) :: bcsav
+-  integer :: ipiv(nbc)
+-  logical :: ok
+-
+-  bcsav(:,:) = bc(:,:)
+-  rads=0.d0
+-  lda=nbc
+-  ldb=nbc
+-
+- ! open(unit=370,file='../temp') 
+- !  do i=1,nbc
+- !     do j=1,nbc
+- !        write(370,*), real(bc(i,j))
+- !     end do 
+- !  end do
+- ! close(370) 
+-
+-  ifirst = 0
+-  i = 0
+-  do while (ifirst==0)
+-	i = i+1
+-	if (radbc(i)) ifirst = i
+-  end do
+-! do i = 1,nbc 
+-!	do j = 1,nbc
+-!	if (bc(i,j)/=0.d0) print*, i,j,bc(i,j)
+-!	enddo
+-! enddo
+-! write(*,*)
+-  
+-  !-- LU decomposition and determinant
+-    ok = .true.
+-   
+-  !call ludcmp(bc,nbc,nbc,indx,d)
+-  !do i=1,nbc
+-  !   d=d*bc(i,i)
+-  !end do
+-  !if (display) write(*,*)
+-  !write(*,*),dlog(freq),'   Matrix det = ',d/dabs(d)*dlog(dabs(d))
+-  !if (display) write(*,*),dlog10(freq*365.25d0*24.d0*3600.d0*1000.d0),'   Matrix det = ',d
+-  !write(ifile5,*) freq,d
+-
+-!-- Resolution
+-
+-  if (ok) then
+-  do i = ifmin,ifmax
+-  	
+-	do j=1,nbc
+-	  sc(j,1)=f(i,j)
+-	end do
+-
+-	!if (display) write(*,*) 'Source: ',sourcs(i)
+-	!call lubksb(bc,nbc,nbc,indx,sc)
+-	call ZGESV(nbc,1,bc,lda,ipiv,sc,ldb,info)
+-
+-  	if (info.ne.0) then 
+-		print*, 'Error in ZGESV : LAPACK linear equation solver couldn''t resolve the system'
+-	end if
+-   !!! >>> y1, y3, y5 at surface (by default) 
+-	!loveh = sc(nbc-2,1)*ra*go0 !go_surf
+-	!lovel = sc(nbc-1,1)*ra*go0 !go_surf
+-	loveh = sc(nbc-2,1)*ra*go_surf
+-	lovel = sc(nbc-1,1)*ra*go_surf
+-	lovek = sc(nbc,1)*ra*go0
+-	delta = (1.d0-dble(n+1)/dble(n)*(lovek-1.d0)+2.d0/dble(n)*loveh)
+-
+-   !print *, ra, go0, go_surf
+-
+-	do j=1,nbc
+-      if (j<nbc-2) then ! no need for valini restoration for surface. 
+-         sc(j,1) = sc(j,1)*valini**((nbc-j-3)/6+1)
+-      endif
+-	   love_kernels(j,1)=sc(j,1) !*valini
+-	end do
+-
+-	sumy2=0.d0
+-	sumy4=0.d0
+-	sumy6=0.d0
+-
+-	do ic=1,6
+-	  sumy2 = sumy2+bcsav(nbc-4,ic+nbc-9)*sc(ic+nbc-9,1)
+-	  sumy4 = sumy4+bcsav(nbc-2,ic+nbc-9)*sc(ic+nbc-9,1)
+-	  sumy6 = sumy6+bcsav(nbc,ic+nbc-9)*sc(ic+nbc-9,1)
+-	end do
+-
+-
+-   !print*, '***********' 
+-   !print*, radbc
+-   !print*, '***********' 
+-
+-   loveh1 = sc(4,1)
+-   lovel1 = sc(6,1)
+-   lovek1 = sc(8,1) - (radius(nlayer-nbc/6+3)/ra)**deg/(go0*ra)
+-
+-   loveh1s = sc(nbc-2,1)
+-   lovel1s = sc(nbc-1,1)
+-   lovek1s = sc(nbc,1) - 1.d0/(go0*ra)
+-
+-   ! ratio of love_number_at_depth vs love_number_at_surface was compared 
+-   ! the comparison is suited for two solid-layers. 
+-   ! Not sure whether it works as well when we have a liquid layer at depth. 
+-   layerrap = zabs(loveh1/loveh1s) 
+-   if (zabs(lovel1/lovel1s) < layerrap) then 
+-      layerrap = zabs(lovel1/lovel1s) 
+-   endif 
+-   if (zabs(lovek1/lovek1s) < layerrap) then 
+-      layerrap = zabs(lovek1/lovek1s) 
+-   endif 
+-
+-   end do
+-   end if
+-  
+-   !open(unit=371,file='../temp2') 
+-   !do i=1,nbc
+-   !   write(371,*), real(sc(i,1))
+-   !end do
+-   !close(371) 
+-
+- !301 format(a4,5x,'n=',i3,5x,'h=',f14.10,5x,'l=',f14.10,5x,'k=',f14.10)
+- 301 format(a4,5x,'n=',i5,5x,'h=',d14.7,5x,'l=',d14.7,5x,'k=',d14.7)
+- 305 format(a4,i1,4x,'n=',i5,5x,'h=',d14.7,5x,'l=',d14.7,5x,'k=',d14.7)
+- 306 format(a4,i2,3x,'n=',i5,5x,'h=',d14.7,5x,'l=',d14.7,5x,'k=',d14.7)
+- 302 format(i5,5x,f14.10,5x,f14.10,5x,f14.10)
+- 303 format(i5,5x,f14.10,5x,f14.10,5x,f14.10,5x,f14.10)
+- 304 format(i5,5x,d20.10,5x,d20.10,5x,d20.10)
+-
+- end subroutine solution 
+- ! }}}
+- 
+-  ! subroutine solution_nbloutput {{{ 
+-  subroutine solution_nbloutput(n,bc,indx,f,sourcs,nfext,nbc,loveh,lovel,lovek,delta)
+-!-------------------------------------------------
+-
+-  integer :: n,nfext,nbc,i,j,ic,ibc,ii,jj,icmin,ifirst
+-  double precision, dimension(:,:), pointer :: bc,f
+-  integer,      dimension(:), pointer :: indx
+-  character*40, dimension(:), pointer :: sourcs	
+-  double precision, dimension(nbc) :: sc
+-  double precision :: loveh,lovel,lovek,loveh1,lovel1,lovek1,loveh1s,lovel1s,lovek1s
+-  double precision :: sumh,suml,sumk,d,val,delta,sumy2,sumy4,sumy6,rads
+-  double precision, dimension(6) :: icbh,icbl,icbk,y2srf,y4srf,y6srf
+-  double precision, dimension(nbc,nbc) :: bcsav
+-  logical :: ok
+-
+-  
+-  !do ic=1,6
+-!	if (nbc==18) then 
+-!		icbh(ic) = bc(1,ic)
+-!		icbl(ic) = bc(3,ic)
+-!		icbk(ic) = bc(5,ic)
+-!!	elseif (nbc==24) then 
+-!		icbh(ic) = bc(7,ic+3)
+-!		icbl(ic) = bc(9,ic+3)
+-!		icbk(ic) = bc(11,ic+3)
+-!	end if
+-!	y2srf(ic) = bc(nbc-4,ic+nbc-9)
+-!	y4srf(ic) = bc(nbc-2,ic+nbc-9)
+-!	y6srf(ic) = bc(nbc,ic+nbc-9)
+- ! end do
+-  
+-  bcsav(:,:) = bc(:,:)
+-  rads=0
+-  ifirst = 0
+-  i = 0
+-  do while (ifirst==0)
+-	i = i+1
+-	if (radbc(i)) ifirst = i
+-  end do
+- !do i = 1,nbc 
+-!	do j = 1,nbc
+-!	if (bc(i,j)/=0.d0) print*, i,j,bc(i,j)
+-!	enddo
+- !enddo
+- !write(*,*)
+-  
+-  !-- LU decomposition and determinant
+-    ok = .true.
+-   
+-  call ludcmp(bc,nbc,nbc,indx,d)
+-  do i=1,nbc
+-     d=d*bc(i,i)
+-  end do
+-  write(*,*)
+-  !write(*,*),dlog(freq),'   Matrix det = ',d/dabs(d)*dlog(dabs(d))
+- 
+-!-- Resolution
+- 
+-  if (ok) then
+-  do i = ifmin,ifmax
+-  	
+-	do j=1,nbc
+-	  sc(j)=f(i,j)
+-	end do
+-
+-	write(*,*) 'Source: ',sourcs(i)
+-	call lubksb(bc,nbc,nbc,indx,sc)
+-
+-	loveh = sc(nbc-2)*ra*go_surf
+-	lovel = sc(nbc-1)*ra*go_surf
+-	lovek = sc(nbc)*ra*go0
+-	delta = 1.d0-dble(n+1)/dble(n)*(lovek-1.d0)+2.d0/dble(n)*loveh
+-	
+-	sumy2=0.d0
+-	sumy4=0.d0
+-	sumy6=0.d0
+-
+-	do ic=1,6
+-	  sumy2 = sumy2+bcsav(nbc-4,ic+nbc-9)*sc(ic+nbc-9)
+-	  sumy4 = sumy4+bcsav(nbc-2,ic+nbc-9)*sc(ic+nbc-9)
+-	  sumy6 = sumy6+bcsav(nbc,ic+nbc-9)*sc(ic+nbc-9)
+-	end do
+-	
+-	!write(*,*) 'SURF',n,loveh,lovel,lovek-1.d0
+-	
+-	ibc = 0
+-	do  j = nlayer,1,-1
+-		if (radbc(j)) then 
+-			ibc=ibc+1
+-			if (soliddim(j)) then
+-				loveh1 = sc(nbc - ibc*6 -3 +1)*ra*go_surf*valini
+-				lovel1 = sc(nbc -ibc*6 -3 +3)*ra*go_surf*valini
+-				lovek1 = sc(nbc -ibc*6 -3 +5)*ra*go0*valini
+-			else 
+-				sumh=0.d0
+-				suml=0.d0
+-				sumk=0.d0
+-				ii = nbc - (ibc+1)*6
+-				jj = nbc - (ibc+1)*6 -3
+-				if (j==ifirst) then 
+-					icmin = 4
+-				else
+-					icmin = 1
+-				end if
+-				do ic=icmin,6
+-					!print*, ii+1,jj+ic
+-					sumh = sumh+bcsav(ii+1,jj+ic)*sc(jj+ic)
+-					suml = suml+bcsav(ii+3,jj+ic)*sc(jj+ic)
+-					sumk = sumk+bcsav(ii+5,jj+ic)*sc(jj+ic)
+-				end do
+-				loveh1 = sumh*ra*go_surf*valini
+-				lovel1 = suml*ra*go_surf*valini
+-				lovek1 = sumk*ra*go0*valini
+-			end if			
+-			if (j==ifirst) then
+-				layerrap = dabs(loveh1s/loveh)
+-				if (layerrap > dabs(lovel1s/lovel)) layerrap = dabs(lovel1s/lovel)
+-				if (layerrap > dabs((lovek1s-(rads/ra)**deg)/(lovek-1.d0))) &
+-				layerrap = dabs((lovek1s-(rads/ra)**deg)/(lovek-1.d0)) 
+-			endif
+-
+-			loveh1s = loveh1
+-			lovel1s = lovel1
+-			lovek1s = lovek1
+-			rads = radius(j)
+-			!if (radius(j)==rb) then 
+-			!	write(*,301) 'CMB ',n,loveh1,lovel1,lovek1-(rb/ra)**deg
+-			!else if (radius(j)==rc) then
+-			!	write(*,301) 'ICB ',n,loveh1,lovel1,lovek1-(rc/ra)**deg
+-			!else
+-			!	if (j<10) then
+-			!		write(*,305) 'ITF-',j,n,loveh1,lovel1,lovek1-(radius(j)/ra)**deg
+-			!	else
+-			!		write(*,306) 'ITF-',j,n,loveh1,lovel1,lovek1-(radius(j)/ra)**deg
+-			!	end if
+-			!endif
+-		end if
+-	end do
+-			
+-  end do
+-  end if
+-  
+-   !write(*,*),dlog10(aimag(freq)*365.d0*24.d0*3600.d0*1000.d0),'   Matrix det = ',d, lovek
+-  
+- end subroutine solution_nbloutput 
+- ! }}}
+-
+-end module lovenb_sub
+Index: ../trunk-jpl/src/c/modules/FourierLoveCorex/util.mod
+===================================================================
+--- ../trunk-jpl/src/c/modules/FourierLoveCorex/util.mod	(revision 27145)
++++ ../trunk-jpl/src/c/modules/FourierLoveCorex/util.mod	(nonexistent)
+@@ -1,269 +0,0 @@
+-GFORTRAN module version '10' created from util.f90
+-MD5:6b427639b8981256d3e19f33c3e9956b -- If you edit this, you'll get what you deserve.
+-
+-(() () () () () () () () () () () () () () () () () () () () () () ()
+-() () () ())
+-
+-()
+-
+-()
+-
+-()
+-
+-()
+-
+-()
+-
+-(2 '__convert_r4_r8' '(intrinsic)' '' 1 ((PROCEDURE UNKNOWN-INTENT
+-UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 FUNCTION ELEMENTAL PURE) (REAL 8 0 0 0
+-REAL ()) 0 0 () () 2 () () () 0 0)
+-3 'allow_layer_del' 'lnb_param' '' 1 ((VARIABLE UNKNOWN-INTENT
+-UNKNOWN-PROC UNKNOWN IMPLICIT-SAVE 0 0) (LOGICAL 4 0 0 0 LOGICAL ()) 0 0
+-() () 0 () () () 0 0)
+-4 'benchmark_spada' 'lnb_param' '' 1 ((VARIABLE UNKNOWN-INTENT
+-UNKNOWN-PROC UNKNOWN IMPLICIT-SAVE 0 0) (LOGICAL 4 0 0 0 LOGICAL ()) 0 0
+-() () 0 () () () 0 0)
+-5 'burgers' 'lnb_param' '' 1 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC
+-UNKNOWN IMPLICIT-SAVE 0 0 DIMENSION POINTER) (LOGICAL 4 0 0 0 LOGICAL ())
+-0 0 () (1 0 DEFERRED () ()) 0 () () () 0 0)
+-6 'deg' 'lnb_param' '' 1 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN
+-IMPLICIT-SAVE 0 0) (INTEGER 4 0 0 0 INTEGER ()) 0 0 () () 0 () () () 0 0)
+-7 'degmax' 'lnb_param' '' 1 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC
+-UNKNOWN IMPLICIT-SAVE 0 0) (INTEGER 4 0 0 0 INTEGER ()) 0 0 () () 0 () ()
+-() 0 0)
+-8 'degmin' 'lnb_param' '' 1 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC
+-UNKNOWN IMPLICIT-SAVE 0 0) (INTEGER 4 0 0 0 INTEGER ()) 0 0 () () 0 () ()
+-() 0 0)
+-9 'derivs' 'util' '' 1 ((PROCEDURE UNKNOWN-INTENT MODULE-PROC DECL
+-UNKNOWN 0 0 SUBROUTINE) (UNKNOWN 0 0 0 0 UNKNOWN ()) 10 0 (11 12 13) ()
+-0 () () () 0 0)
+-14 'display' 'lnb_param' '' 1 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC
+-UNKNOWN IMPLICIT-SAVE 0 0) (LOGICAL 4 0 0 0 LOGICAL ()) 0 0 () () 0 () ()
+-() 0 0)
+-15 'earth_homogeneous_layers_prembased' 'model' '' 1 ((PROCEDURE
+-UNKNOWN-INTENT MODULE-PROC DECL UNKNOWN 0 0 SUBROUTINE ALWAYS_EXPLICIT)
+-(UNKNOWN 0 0 0 0 UNKNOWN ()) 16 0 (17 18 19 20 21 22 23) () 0 () () () 0
+-0)
+-24 'earth_nlayers' 'model' '' 1 ((PROCEDURE UNKNOWN-INTENT MODULE-PROC
+-DECL UNKNOWN 0 0 SUBROUTINE) (UNKNOWN 0 0 0 0 UNKNOWN ()) 25 0 (26 27 28
+-29 30 31) () 0 () () () 0 0)
+-32 'earth_nlayers_viscoelas' 'model' '' 1 ((PROCEDURE UNKNOWN-INTENT
+-MODULE-PROC DECL UNKNOWN 0 0 SUBROUTINE) (UNKNOWN 0 0 0 0 UNKNOWN ()) 33
+-0 (34 35 36 37 38 39) () 0 () () () 0 0)
+-40 'epsdb' 'lnb_param' '' 1 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC
+-UNKNOWN IMPLICIT-SAVE 0 0) (REAL 8 0 0 0 REAL ()) 0 0 () () 0 () () () 0
+-0)
+-41 'freq' 'lnb_param' '' 1 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC
+-UNKNOWN IMPLICIT-SAVE 0 0) (COMPLEX 8 0 0 0 COMPLEX ()) 0 0 () () 0 () ()
+-() 0 0)
+-42 'gg' 'lnb_param' '' 1 ((PARAMETER UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN
+-IMPLICIT-SAVE 0 0) (REAL 8 0 0 0 REAL ()) 0 0 () (CONSTANT (REAL 8 0 0 0
+-REAL ()) 0 '0.495dac00000000@-8') () 0 () () () 0 0)
+-43 'go0' 'lnb_param' '' 1 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN
+-IMPLICIT-SAVE 0 0) (REAL 8 0 0 0 REAL ()) 0 0 () () 0 () () () 0 0)
+-44 'go_cmb' 'lnb_param' '' 1 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC
+-UNKNOWN IMPLICIT-SAVE 0 0) (REAL 8 0 0 0 REAL ()) 0 0 () () 0 () () () 0
+-0)
+-45 'go_icb' 'lnb_param' '' 1 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC
+-UNKNOWN IMPLICIT-SAVE 0 0) (REAL 8 0 0 0 REAL ()) 0 0 () () 0 () () () 0
+-0)
+-46 'go_surf' 'lnb_param' '' 1 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC
+-UNKNOWN IMPLICIT-SAVE 0 0) (REAL 8 0 0 0 REAL ()) 0 0 () () 0 () () () 0
+-0)
+-47 'ifmax' 'lnb_param' '' 1 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC
+-UNKNOWN IMPLICIT-SAVE 0 0) (INTEGER 4 0 0 0 INTEGER ()) 0 0 () () 0 () ()
+-() 0 0)
+-48 'ifmin' 'lnb_param' '' 1 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC
+-UNKNOWN IMPLICIT-SAVE 0 0) (INTEGER 4 0 0 0 INTEGER ()) 0 0 () () 0 () ()
+-() 0 0)
+-49 'incompressible' 'lnb_param' '' 1 ((VARIABLE UNKNOWN-INTENT
+-UNKNOWN-PROC UNKNOWN IMPLICIT-SAVE 0 0) (LOGICAL 4 0 0 0 LOGICAL ()) 0 0
+-() () 0 () () () 0 0)
+-50 'lac' 'lnb_param' '' 1 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN
+-IMPLICIT-SAVE 0 0 DIMENSION POINTER) (REAL 8 0 0 0 REAL ()) 0 0 () (1 0
+-DEFERRED () ()) 0 () () () 0 0)
+-51 'layerrap' 'lnb_param' '' 1 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC
+-UNKNOWN IMPLICIT-SAVE 0 0) (REAL 8 0 0 0 REAL ()) 0 0 () () 0 () () () 0
+-0)
+-52 'lnb_param' 'lnb_param' '' 1 ((MODULE UNKNOWN-INTENT UNKNOWN-PROC
+-UNKNOWN UNKNOWN 0 0) (UNKNOWN 0 0 0 0 UNKNOWN ()) 0 0 () () 0 () () () 0
+-0)
+-53 'lubksb' 'util' '' 1 ((PROCEDURE UNKNOWN-INTENT MODULE-PROC DECL
+-UNKNOWN 0 0 SUBROUTINE) (UNKNOWN 0 0 0 0 UNKNOWN ()) 54 0 (55 56 57 58
+-59) () 0 () () () 0 0)
+-60 'ludcmp' 'util' '' 1 ((PROCEDURE UNKNOWN-INTENT MODULE-PROC DECL
+-UNKNOWN 0 0 SUBROUTINE) (UNKNOWN 0 0 0 0 UNKNOWN ()) 61 0 (62 63 64 65
+-66) () 0 () () () 0 0)
+-67 'model' 'model' '' 1 ((MODULE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN
+-UNKNOWN 0 0) (UNKNOWN 0 0 0 0 UNKNOWN ()) 0 0 () () 0 () () () 0 0)
+-68 'model_init2' 'model' '' 1 ((PROCEDURE UNKNOWN-INTENT MODULE-PROC
+-DECL UNKNOWN 0 0 SUBROUTINE) (UNKNOWN 0 0 0 0 UNKNOWN ()) 69 0 (70) () 0
+-() () () 0 0)
+-71 'mu0' 'lnb_param' '' 1 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN
+-IMPLICIT-SAVE 0 0) (REAL 8 0 0 0 REAL ()) 0 0 () () 0 () () () 0 0)
+-72 'muc' 'lnb_param' '' 1 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN
+-IMPLICIT-SAVE 0 0 DIMENSION POINTER) (REAL 8 0 0 0 REAL ()) 0 0 () (1 0
+-DEFERRED () ()) 0 () () () 0 0)
+-73 'muc2' 'lnb_param' '' 1 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC
+-UNKNOWN IMPLICIT-SAVE 0 0 DIMENSION POINTER) (REAL 8 0 0 0 REAL ()) 0 0
+-() (1 0 DEFERRED () ()) 0 () () () 0 0)
+-74 'mucratio' 'lnb_param' '' 1 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC
+-UNKNOWN IMPLICIT-SAVE 0 0) (REAL 8 0 0 0 REAL ()) 0 0 () () 0 () () () 0
+-0)
+-75 'nfreq' 'lnb_param' '' 1 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC
+-UNKNOWN IMPLICIT-SAVE 0 0) (INTEGER 4 0 0 0 INTEGER ()) 0 0 () () 0 () ()
+-() 0 0)
+-76 'nlayer' 'lnb_param' '' 1 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC
+-UNKNOWN IMPLICIT-SAVE 0 0) (INTEGER 4 0 0 0 INTEGER ()) 0 0 () () 0 () ()
+-() 0 0)
+-77 'pi' 'lnb_param' '' 1 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN
+-IMPLICIT-SAVE 0 0) (REAL 8 0 0 0 REAL ()) 0 0 () () 0 () () () 0 0)
+-78 'propagfds' 'util' '' 1 ((PROCEDURE UNKNOWN-INTENT MODULE-PROC DECL
+-UNKNOWN 0 0 SUBROUTINE) (UNKNOWN 0 0 0 0 UNKNOWN ()) 79 0 (80 81 82 83)
+-() 0 () () () 0 0)
+-84 'r0' 'lnb_param' '' 1 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN
+-IMPLICIT-SAVE 0 0) (REAL 8 0 0 0 REAL ()) 0 0 () () 0 () () () 0 0)
+-85 'ra' 'lnb_param' '' 1 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN
+-IMPLICIT-SAVE 0 0) (REAL 8 0 0 0 REAL ()) 0 0 () () 0 () () () 0 0)
+-86 'radbc' 'lnb_param' '' 1 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC
+-UNKNOWN IMPLICIT-SAVE 0 0 DIMENSION POINTER) (LOGICAL 4 0 0 0 LOGICAL ())
+-0 0 () (1 0 DEFERRED () ()) 0 () () () 0 0)
+-87 'radius' 'lnb_param' '' 1 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC
+-UNKNOWN IMPLICIT-SAVE 0 0 DIMENSION POINTER) (REAL 8 0 0 0 REAL ()) 0 0
+-() (1 0 DEFERRED () ()) 0 () () () 0 0)
+-88 'rb' 'lnb_param' '' 1 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN
+-IMPLICIT-SAVE 0 0) (REAL 8 0 0 0 REAL ()) 0 0 () () 0 () () () 0 0)
+-89 'rc' 'lnb_param' '' 1 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN
+-IMPLICIT-SAVE 0 0) (REAL 8 0 0 0 REAL ()) 0 0 () () 0 () () () 0 0)
+-90 'ro_mean' 'lnb_param' '' 1 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC
+-UNKNOWN IMPLICIT-SAVE 0 0) (REAL 8 0 0 0 REAL ()) 0 0 () () 0 () () () 0
+-0)
+-91 'roc' 'lnb_param' '' 1 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN
+-IMPLICIT-SAVE 0 0 DIMENSION POINTER) (REAL 8 0 0 0 REAL ()) 0 0 () (1 0
+-DEFERRED () ()) 0 () () () 0 0)
+-92 'soliddim' 'lnb_param' '' 1 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC
+-UNKNOWN IMPLICIT-SAVE 0 0 DIMENSION POINTER) (LOGICAL 4 0 0 0 LOGICAL ())
+-0 0 () (1 0 DEFERRED () ()) 0 () () () 0 0)
+-93 'util' 'util' '' 1 ((MODULE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN
+-UNKNOWN 0 0) (UNKNOWN 0 0 0 0 UNKNOWN ()) 0 0 () () 0 () () () 0 0)
+-94 'valini' 'lnb_param' '' 1 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC
+-UNKNOWN IMPLICIT-SAVE 0 0) (COMPLEX 8 0 0 0 COMPLEX ()) 0 0 () () 0 () ()
+-() 0 0)
+-95 'vic' 'lnb_param' '' 1 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN
+-IMPLICIT-SAVE 0 0 DIMENSION POINTER) (REAL 8 0 0 0 REAL ()) 0 0 () (1 0
+-DEFERRED () ()) 0 () () () 0 0)
+-96 'vic2' 'lnb_param' '' 1 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC
+-UNKNOWN IMPLICIT-SAVE 0 0 DIMENSION POINTER) (REAL 8 0 0 0 REAL ()) 0 0
+-() (1 0 DEFERRED () ()) 0 () () () 0 0)
+-97 'vicratio' 'lnb_param' '' 1 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC
+-UNKNOWN IMPLICIT-SAVE 0 0) (REAL 8 0 0 0 REAL ()) 0 0 () () 0 () () () 0
+-0)
+-11 'x' '' '' 10 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN 0
+-0 DUMMY) (REAL 8 0 0 0 REAL ()) 0 0 () () 0 () () () 0 0)
+-12 'y' '' '' 10 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN 0
+-0 DIMENSION DUMMY) (COMPLEX 8 0 0 0 COMPLEX ()) 0 0 () (1 0 EXPLICIT (
+-CONSTANT (INTEGER 4 0 0 0 INTEGER ()) 0 '1') (CONSTANT (INTEGER 4 0 0 0
+-INTEGER ()) 0 '6')) 0 () () () 0 0)
+-13 'dydx' '' '' 10 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN
+-UNKNOWN 0 0 DIMENSION DUMMY) (COMPLEX 8 0 0 0 COMPLEX ()) 0 0 () (1 0
+-EXPLICIT (CONSTANT (INTEGER 4 0 0 0 INTEGER ()) 0 '1') (CONSTANT (
+-INTEGER 4 0 0 0 INTEGER ()) 0 '6')) 0 () () () 0 0)
+-17 'radin' '' '' 16 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN
+-UNKNOWN 0 0 DIMENSION POINTER DUMMY) (REAL 8 0 0 0 REAL ()) 0 0 () (1 0
+-DEFERRED () ()) 0 () () () 0 0)
+-18 'nl' '' '' 16 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN
+-0 0 DUMMY) (INTEGER 4 0 0 0 INTEGER ()) 0 0 () () 0 () () () 0 0)
+-19 'rot' '' '' 16 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN
+-0 0 DIMENSION POINTER DUMMY) (REAL 8 0 0 0 REAL ()) 0 0 () (1 0 DEFERRED
+-() ()) 0 () () () 0 0)
+-20 'lat' '' '' 16 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN
+-0 0 DIMENSION POINTER DUMMY) (REAL 8 0 0 0 REAL ()) 0 0 () (1 0 DEFERRED
+-() ()) 0 () () () 0 0)
+-21 'mut' '' '' 16 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN
+-0 0 DIMENSION POINTER DUMMY) (REAL 8 0 0 0 REAL ()) 0 0 () (1 0 DEFERRED
+-() ()) 0 () () () 0 0)
+-22 'gr' '' '' 16 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN
+-0 0 DUMMY) (REAL 8 0 0 0 REAL ()) 0 0 () () 0 () () () 0 0)
+-23 'solid' '' '' 16 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN
+-UNKNOWN 0 0 DUMMY) (LOGICAL 4 0 0 0 LOGICAL ()) 0 0 () () 0 () () () 0 0)
+-26 'x0' '' '' 25 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN
+-0 0 DUMMY) (REAL 8 0 0 0 REAL ()) 0 0 () () 0 () () () 0 0)
+-27 'ro' '' '' 25 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN
+-0 0 DUMMY) (REAL 8 0 0 0 REAL ()) 0 0 () () 0 () () () 0 0)
+-28 'la' '' '' 25 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN
+-0 0 DUMMY) (REAL 8 0 0 0 REAL ()) 0 0 () () 0 () () () 0 0)
+-29 'mu' '' '' 25 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN
+-0 0 DUMMY) (REAL 8 0 0 0 REAL ()) 0 0 () () 0 () () () 0 0)
+-30 'gr' '' '' 25 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN
+-0 0 DUMMY) (REAL 8 0 0 0 REAL ()) 0 0 () () 0 () () () 0 0)
+-31 'solid' '' '' 25 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN
+-UNKNOWN 0 0 DUMMY) (LOGICAL 4 0 0 0 LOGICAL ()) 0 0 () () 0 () () () 0 0)
+-34 'x0' '' '' 33 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN
+-0 0 DUMMY) (REAL 8 0 0 0 REAL ()) 0 0 () () 0 () () () 0 0)
+-35 'ro' '' '' 33 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN
+-0 0 DUMMY) (REAL 8 0 0 0 REAL ()) 0 0 () () 0 () () () 0 0)
+-36 'la' '' '' 33 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN
+-0 0 DUMMY) (COMPLEX 8 0 0 0 COMPLEX ()) 0 0 () () 0 () () () 0 0)
+-37 'mu' '' '' 33 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN
+-0 0 DUMMY) (COMPLEX 8 0 0 0 COMPLEX ()) 0 0 () () 0 () () () 0 0)
+-38 'gr' '' '' 33 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN
+-0 0 DUMMY) (REAL 8 0 0 0 REAL ()) 0 0 () () 0 () () () 0 0)
+-39 'solid' '' '' 33 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN
+-UNKNOWN 0 0 DUMMY) (LOGICAL 4 0 0 0 LOGICAL ()) 0 0 () () 0 () () () 0 0)
+-55 'a' '' '' 54 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN 0
+-0 DIMENSION DUMMY) (REAL 8 0 0 0 REAL ()) 0 0 () (2 0 EXPLICIT (
+-CONSTANT (INTEGER 4 0 0 0 INTEGER ()) 0 '1') (VARIABLE (INTEGER 4 0 0 0
+-INTEGER ()) 0 57 ()) (CONSTANT (INTEGER 4 0 0 0 INTEGER ()) 0 '1') (
+-VARIABLE (INTEGER 4 0 0 0 INTEGER ()) 0 57 ())) 0 () () () 0 0)
+-56 'n' '' '' 54 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN 0
+-0 DUMMY) (INTEGER 4 0 0 0 INTEGER ()) 0 0 () () 0 () () () 0 0)
+-57 'np' '' '' 54 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN
+-0 0 DUMMY) (INTEGER 4 0 0 0 INTEGER ()) 0 0 () () 0 () () () 0 0)
+-58 'indx' '' '' 54 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN
+-UNKNOWN 0 0 DIMENSION DUMMY) (INTEGER 4 0 0 0 INTEGER ()) 0 0 () (1 0
+-EXPLICIT (CONSTANT (INTEGER 4 0 0 0 INTEGER ()) 0 '1') (VARIABLE (
+-INTEGER 4 0 0 0 INTEGER ()) 0 56 ())) 0 () () () 0 0)
+-59 'b' '' '' 54 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN 0
+-0 DIMENSION DUMMY) (REAL 8 0 0 0 REAL ()) 0 0 () (1 0 EXPLICIT (
+-CONSTANT (INTEGER 4 0 0 0 INTEGER ()) 0 '1') (VARIABLE (INTEGER 4 0 0 0
+-INTEGER ()) 0 57 ())) 0 () () () 0 0)
+-62 'a' '' '' 61 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN 0
+-0 DIMENSION DUMMY) (REAL 8 0 0 0 REAL ()) 0 0 () (2 0 EXPLICIT (
+-CONSTANT (INTEGER 4 0 0 0 INTEGER ()) 0 '1') (VARIABLE (INTEGER 4 0 0 0
+-INTEGER ()) 0 64 ()) (CONSTANT (INTEGER 4 0 0 0 INTEGER ()) 0 '1') (
+-VARIABLE (INTEGER 4 0 0 0 INTEGER ()) 0 64 ())) 0 () () () 0 0)
+-63 'n' '' '' 61 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN 0
+-0 DUMMY) (INTEGER 4 0 0 0 INTEGER ()) 0 0 () () 0 () () () 0 0)
+-64 'np' '' '' 61 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN
+-0 0 DUMMY) (INTEGER 4 0 0 0 INTEGER ()) 0 0 () () 0 () () () 0 0)
+-65 'indx' '' '' 61 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN
+-UNKNOWN 0 0 DIMENSION DUMMY) (INTEGER 4 0 0 0 INTEGER ()) 0 0 () (1 0
+-EXPLICIT (CONSTANT (INTEGER 4 0 0 0 INTEGER ()) 0 '1') (VARIABLE (
+-INTEGER 4 0 0 0 INTEGER ()) 0 63 ())) 0 () () () 0 0)
+-66 'd' '' '' 61 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN 0
+-0 DUMMY) (REAL 8 0 0 0 REAL ()) 0 0 () () 0 () () () 0 0)
+-70 'nbc' '' '' 69 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN
+-0 0 DUMMY) (INTEGER 4 0 0 0 INTEGER ()) 0 0 () () 0 () () () 0 0)
+-80 'ystart' '' '' 79 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN
+-UNKNOWN 0 0 DIMENSION DUMMY) (COMPLEX 8 0 0 0 COMPLEX ()) 0 0 () (1 0
+-EXPLICIT (CONSTANT (INTEGER 4 0 0 0 INTEGER ()) 0 '1') (CONSTANT (
+-INTEGER 4 0 0 0 INTEGER ()) 0 '6')) 0 () () () 0 0)
+-81 'xmin' '' '' 79 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN
+-UNKNOWN 0 0 DUMMY) (REAL 8 0 0 0 REAL ()) 0 0 () () 0 () () () 0 0)
+-82 'xmax' '' '' 79 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN
+-UNKNOWN 0 0 DUMMY) (REAL 8 0 0 0 REAL ()) 0 0 () () 0 () () () 0 0)
+-83 'nstep' '' '' 79 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN
+-UNKNOWN 0 0 DUMMY) (INTEGER 4 0 0 0 INTEGER ()) 0 0 () () 0 () () () 0 0)
+-)
+-
+-('__convert_r4_r8' 0 2 'allow_layer_del' 0 3 'benchmark_spada' 0 4
+-'burgers' 0 5 'deg' 0 6 'degmax' 0 7 'degmin' 0 8 'derivs' 0 9 'display'
+-0 14 'earth_homogeneous_layers_prembased' 0 15 'earth_nlayers' 0 24
+-'earth_nlayers_viscoelas' 0 32 'epsdb' 0 40 'freq' 0 41 'gg' 0 42 'go0'
+-0 43 'go_cmb' 0 44 'go_icb' 0 45 'go_surf' 0 46 'ifmax' 0 47 'ifmin' 0
+-48 'incompressible' 0 49 'lac' 0 50 'layerrap' 0 51 'lnb_param' 0 52
+-'lubksb' 0 53 'ludcmp' 0 60 'model' 0 67 'model_init2' 0 68 'mu0' 0 71
+-'muc' 0 72 'muc2' 0 73 'mucratio' 0 74 'nfreq' 0 75 'nlayer' 0 76 'pi' 0
+-77 'propagfds' 0 78 'r0' 0 84 'ra' 0 85 'radbc' 0 86 'radius' 0 87 'rb'
+-0 88 'rc' 0 89 'ro_mean' 0 90 'roc' 0 91 'soliddim' 0 92 'util' 0 93
+-'valini' 0 94 'vic' 0 95 'vic2' 0 96 'vicratio' 0 97)
+Index: ../trunk-jpl/src/c/modules/FourierLoveCorex/lovenb_sub.mod
+===================================================================
+--- ../trunk-jpl/src/c/modules/FourierLoveCorex/lovenb_sub.mod	(revision 27145)
++++ ../trunk-jpl/src/c/modules/FourierLoveCorex/lovenb_sub.mod	(nonexistent)
+@@ -1,373 +0,0 @@
+-GFORTRAN module version '10' created from lovenb_sub.f90
+-MD5:abd34956a6ed4ca3faf89b83c227ea8d -- If you edit this, you'll get what you deserve.
+-
+-(() () () () () () () () () () () () () () () () () () () () () () ()
+-() () () ())
+-
+-()
+-
+-()
+-
+-()
+-
+-()
+-
+-()
+-
+-(2 '__convert_r4_r8' '(intrinsic)' '' 1 ((PROCEDURE UNKNOWN-INTENT
+-UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 FUNCTION ELEMENTAL PURE) (REAL 8 0 0 0
+-REAL ()) 0 0 () () 2 () () () 0 0)
+-3 'allow_layer_del' 'lnb_param' '' 1 ((VARIABLE UNKNOWN-INTENT
+-UNKNOWN-PROC UNKNOWN IMPLICIT-SAVE 0 0) (LOGICAL 4 0 0 0 LOGICAL ()) 0 0
+-() () 0 () () () 0 0)
+-4 'benchmark_spada' 'lnb_param' '' 1 ((VARIABLE UNKNOWN-INTENT
+-UNKNOWN-PROC UNKNOWN IMPLICIT-SAVE 0 0) (LOGICAL 4 0 0 0 LOGICAL ()) 0 0
+-() () 0 () () () 0 0)
+-5 'boundary_conditions_matrix' 'lovenb_sub' '' 1 ((PROCEDURE
+-UNKNOWN-INTENT MODULE-PROC DECL UNKNOWN 0 0 SUBROUTINE ALWAYS_EXPLICIT)
+-(UNKNOWN 0 0 0 0 UNKNOWN ()) 6 0 (7 8 9) () 0 () () () 0 0)
+-10 'burgers' 'lnb_param' '' 1 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC
+-UNKNOWN IMPLICIT-SAVE 0 0 DIMENSION POINTER) (LOGICAL 4 0 0 0 LOGICAL ())
+-0 0 () (1 0 DEFERRED () ()) 0 () () () 0 0)
+-11 'deg' 'lnb_param' '' 1 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN
+-IMPLICIT-SAVE 0 0) (INTEGER 4 0 0 0 INTEGER ()) 0 0 () () 0 () () () 0 0)
+-12 'degmax' 'lnb_param' '' 1 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC
+-UNKNOWN IMPLICIT-SAVE 0 0) (INTEGER 4 0 0 0 INTEGER ()) 0 0 () () 0 () ()
+-() 0 0)
+-13 'degmin' 'lnb_param' '' 1 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC
+-UNKNOWN IMPLICIT-SAVE 0 0) (INTEGER 4 0 0 0 INTEGER ()) 0 0 () () 0 () ()
+-() 0 0)
+-14 'derivs' 'util' '' 1 ((PROCEDURE UNKNOWN-INTENT MODULE-PROC DECL
+-UNKNOWN 0 0 SUBROUTINE) (UNKNOWN 0 0 0 0 UNKNOWN ()) 15 0 (16 17 18) ()
+-0 () () () 0 0)
+-19 'display' 'lnb_param' '' 1 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC
+-UNKNOWN IMPLICIT-SAVE 0 0) (LOGICAL 4 0 0 0 LOGICAL ()) 0 0 () () 0 () ()
+-() 0 0)
+-20 'earth_homogeneous_layers_prembased' 'model' '' 1 ((PROCEDURE
+-UNKNOWN-INTENT MODULE-PROC DECL UNKNOWN 0 0 SUBROUTINE ALWAYS_EXPLICIT)
+-(UNKNOWN 0 0 0 0 UNKNOWN ()) 21 0 (22 23 24 25 26 27 28) () 0 () () () 0
+-0)
+-29 'earth_nlayers' 'model' '' 1 ((PROCEDURE UNKNOWN-INTENT MODULE-PROC
+-DECL UNKNOWN 0 0 SUBROUTINE) (UNKNOWN 0 0 0 0 UNKNOWN ()) 30 0 (31 32 33
+-34 35 36) () 0 () () () 0 0)
+-37 'earth_nlayers_viscoelas' 'model' '' 1 ((PROCEDURE UNKNOWN-INTENT
+-MODULE-PROC DECL UNKNOWN 0 0 SUBROUTINE) (UNKNOWN 0 0 0 0 UNKNOWN ()) 38
+-0 (39 40 41 42 43 44) () 0 () () () 0 0)
+-45 'epsdb' 'lnb_param' '' 1 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC
+-UNKNOWN IMPLICIT-SAVE 0 0) (REAL 8 0 0 0 REAL ()) 0 0 () () 0 () () () 0
+-0)
+-46 'external_forcing' 'lovenb_sub' '' 1 ((PROCEDURE UNKNOWN-INTENT
+-MODULE-PROC DECL UNKNOWN 0 0 SUBROUTINE ALWAYS_EXPLICIT) (UNKNOWN 0 0 0
+-0 UNKNOWN ()) 47 0 (48 49 50 51 52) () 0 () () () 0 0)
+-53 'freq' 'lnb_param' '' 1 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC
+-UNKNOWN IMPLICIT-SAVE 0 0) (COMPLEX 8 0 0 0 COMPLEX ()) 0 0 () () 0 () ()
+-() 0 0)
+-54 'gg' 'lnb_param' '' 1 ((PARAMETER UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN
+-IMPLICIT-SAVE 0 0) (REAL 8 0 0 0 REAL ()) 0 0 () (CONSTANT (REAL 8 0 0 0
+-REAL ()) 0 '0.495dac00000000@-8') () 0 () () () 0 0)
+-55 'go0' 'lnb_param' '' 1 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN
+-IMPLICIT-SAVE 0 0) (REAL 8 0 0 0 REAL ()) 0 0 () () 0 () () () 0 0)
+-56 'go_cmb' 'lnb_param' '' 1 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC
+-UNKNOWN IMPLICIT-SAVE 0 0) (REAL 8 0 0 0 REAL ()) 0 0 () () 0 () () () 0
+-0)
+-57 'go_icb' 'lnb_param' '' 1 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC
+-UNKNOWN IMPLICIT-SAVE 0 0) (REAL 8 0 0 0 REAL ()) 0 0 () () 0 () () () 0
+-0)
+-58 'go_surf' 'lnb_param' '' 1 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC
+-UNKNOWN IMPLICIT-SAVE 0 0) (REAL 8 0 0 0 REAL ()) 0 0 () () 0 () () () 0
+-0)
+-59 'ifmax' 'lnb_param' '' 1 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC
+-UNKNOWN IMPLICIT-SAVE 0 0) (INTEGER 4 0 0 0 INTEGER ()) 0 0 () () 0 () ()
+-() 0 0)
+-60 'ifmin' 'lnb_param' '' 1 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC
+-UNKNOWN IMPLICIT-SAVE 0 0) (INTEGER 4 0 0 0 INTEGER ()) 0 0 () () 0 () ()
+-() 0 0)
+-61 'incompressible' 'lnb_param' '' 1 ((VARIABLE UNKNOWN-INTENT
+-UNKNOWN-PROC UNKNOWN IMPLICIT-SAVE 0 0) (LOGICAL 4 0 0 0 LOGICAL ()) 0 0
+-() () 0 () () () 0 0)
+-62 'lac' 'lnb_param' '' 1 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN
+-IMPLICIT-SAVE 0 0 DIMENSION POINTER) (REAL 8 0 0 0 REAL ()) 0 0 () (1 0
+-DEFERRED () ()) 0 () () () 0 0)
+-63 'layerrap' 'lnb_param' '' 1 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC
+-UNKNOWN IMPLICIT-SAVE 0 0) (REAL 8 0 0 0 REAL ()) 0 0 () () 0 () () () 0
+-0)
+-64 'lnb_param' 'lnb_param' '' 1 ((MODULE UNKNOWN-INTENT UNKNOWN-PROC
+-UNKNOWN UNKNOWN 0 0) (UNKNOWN 0 0 0 0 UNKNOWN ()) 0 0 () () 0 () () () 0
+-0)
+-65 'lovenb_sub' 'lovenb_sub' '' 1 ((MODULE UNKNOWN-INTENT UNKNOWN-PROC
+-UNKNOWN UNKNOWN 0 0) (UNKNOWN 0 0 0 0 UNKNOWN ()) 0 0 () () 0 () () () 0
+-0)
+-66 'lubksb' 'util' '' 1 ((PROCEDURE UNKNOWN-INTENT MODULE-PROC DECL
+-UNKNOWN 0 0 SUBROUTINE) (UNKNOWN 0 0 0 0 UNKNOWN ()) 67 0 (68 69 70 71
+-72) () 0 () () () 0 0)
+-73 'ludcmp' 'util' '' 1 ((PROCEDURE UNKNOWN-INTENT MODULE-PROC DECL
+-UNKNOWN 0 0 SUBROUTINE) (UNKNOWN 0 0 0 0 UNKNOWN ()) 74 0 (75 76 77 78
+-79) () 0 () () () 0 0)
+-80 'model' 'model' '' 1 ((MODULE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN
+-UNKNOWN 0 0) (UNKNOWN 0 0 0 0 UNKNOWN ()) 0 0 () () 0 () () () 0 0)
+-81 'model_init2' 'model' '' 1 ((PROCEDURE UNKNOWN-INTENT MODULE-PROC
+-DECL UNKNOWN 0 0 SUBROUTINE) (UNKNOWN 0 0 0 0 UNKNOWN ()) 82 0 (83) () 0
+-() () () 0 0)
+-84 'mu0' 'lnb_param' '' 1 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN
+-IMPLICIT-SAVE 0 0) (REAL 8 0 0 0 REAL ()) 0 0 () () 0 () () () 0 0)
+-85 'muc' 'lnb_param' '' 1 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN
+-IMPLICIT-SAVE 0 0 DIMENSION POINTER) (REAL 8 0 0 0 REAL ()) 0 0 () (1 0
+-DEFERRED () ()) 0 () () () 0 0)
+-86 'muc2' 'lnb_param' '' 1 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC
+-UNKNOWN IMPLICIT-SAVE 0 0 DIMENSION POINTER) (REAL 8 0 0 0 REAL ()) 0 0
+-() (1 0 DEFERRED () ()) 0 () () () 0 0)
+-87 'mucratio' 'lnb_param' '' 1 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC
+-UNKNOWN IMPLICIT-SAVE 0 0) (REAL 8 0 0 0 REAL ()) 0 0 () () 0 () () () 0
+-0)
+-88 'nfreq' 'lnb_param' '' 1 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC
+-UNKNOWN IMPLICIT-SAVE 0 0) (INTEGER 4 0 0 0 INTEGER ()) 0 0 () () 0 () ()
+-() 0 0)
+-89 'nlayer' 'lnb_param' '' 1 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC
+-UNKNOWN IMPLICIT-SAVE 0 0) (INTEGER 4 0 0 0 INTEGER ()) 0 0 () () 0 () ()
+-() 0 0)
+-90 'pi' 'lnb_param' '' 1 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN
+-IMPLICIT-SAVE 0 0) (REAL 8 0 0 0 REAL ()) 0 0 () () 0 () () () 0 0)
+-91 'propagfds' 'util' '' 1 ((PROCEDURE UNKNOWN-INTENT MODULE-PROC DECL
+-UNKNOWN 0 0 SUBROUTINE) (UNKNOWN 0 0 0 0 UNKNOWN ()) 92 0 (93 94 95 96)
+-() 0 () () () 0 0)
+-97 'r0' 'lnb_param' '' 1 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN
+-IMPLICIT-SAVE 0 0) (REAL 8 0 0 0 REAL ()) 0 0 () () 0 () () () 0 0)
+-98 'ra' 'lnb_param' '' 1 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN
+-IMPLICIT-SAVE 0 0) (REAL 8 0 0 0 REAL ()) 0 0 () () 0 () () () 0 0)
+-99 'radbc' 'lnb_param' '' 1 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC
+-UNKNOWN IMPLICIT-SAVE 0 0 DIMENSION POINTER) (LOGICAL 4 0 0 0 LOGICAL ())
+-0 0 () (1 0 DEFERRED () ()) 0 () () () 0 0)
+-100 'radius' 'lnb_param' '' 1 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC
+-UNKNOWN IMPLICIT-SAVE 0 0 DIMENSION POINTER) (REAL 8 0 0 0 REAL ()) 0 0
+-() (1 0 DEFERRED () ()) 0 () () () 0 0)
+-101 'rb' 'lnb_param' '' 1 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN
+-IMPLICIT-SAVE 0 0) (REAL 8 0 0 0 REAL ()) 0 0 () () 0 () () () 0 0)
+-102 'rc' 'lnb_param' '' 1 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN
+-IMPLICIT-SAVE 0 0) (REAL 8 0 0 0 REAL ()) 0 0 () () 0 () () () 0 0)
+-103 'ro_mean' 'lnb_param' '' 1 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC
+-UNKNOWN IMPLICIT-SAVE 0 0) (REAL 8 0 0 0 REAL ()) 0 0 () () 0 () () () 0
+-0)
+-104 'roc' 'lnb_param' '' 1 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC
+-UNKNOWN IMPLICIT-SAVE 0 0 DIMENSION POINTER) (REAL 8 0 0 0 REAL ()) 0 0
+-() (1 0 DEFERRED () ()) 0 () () () 0 0)
+-105 'soliddim' 'lnb_param' '' 1 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC
+-UNKNOWN IMPLICIT-SAVE 0 0 DIMENSION POINTER) (LOGICAL 4 0 0 0 LOGICAL ())
+-0 0 () (1 0 DEFERRED () ()) 0 () () () 0 0)
+-106 'solution' 'lovenb_sub' '' 1 ((PROCEDURE UNKNOWN-INTENT MODULE-PROC
+-DECL UNKNOWN 0 0 SUBROUTINE ALWAYS_EXPLICIT) (UNKNOWN 0 0 0 0 UNKNOWN ())
+-107 0 (108 109 110 111 112 113 114 115 116 117 118) () 0 () () () 0 0)
+-119 'solution_nbloutput' 'lovenb_sub' '' 1 ((PROCEDURE UNKNOWN-INTENT
+-MODULE-PROC DECL UNKNOWN 0 0 SUBROUTINE ALWAYS_EXPLICIT) (UNKNOWN 0 0 0
+-0 UNKNOWN ()) 120 0 (121 122 123 124 125 126 127 128 129 130 131) () 0 ()
+-() () 0 0)
+-132 'sphere' 'lovenb_sub' '' 1 ((PROCEDURE UNKNOWN-INTENT MODULE-PROC
+-DECL UNKNOWN 0 0 SUBROUTINE ALWAYS_EXPLICIT) (UNKNOWN 0 0 0 0 UNKNOWN ())
+-133 0 (134 135 136) () 0 () () () 0 0)
+-137 'util' 'util' '' 1 ((MODULE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN
+-UNKNOWN 0 0) (UNKNOWN 0 0 0 0 UNKNOWN ()) 0 0 () () 0 () () () 0 0)
+-138 'valini' 'lnb_param' '' 1 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC
+-UNKNOWN IMPLICIT-SAVE 0 0) (COMPLEX 8 0 0 0 COMPLEX ()) 0 0 () () 0 () ()
+-() 0 0)
+-139 'vic' 'lnb_param' '' 1 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC
+-UNKNOWN IMPLICIT-SAVE 0 0 DIMENSION POINTER) (REAL 8 0 0 0 REAL ()) 0 0
+-() (1 0 DEFERRED () ()) 0 () () () 0 0)
+-140 'vic2' 'lnb_param' '' 1 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC
+-UNKNOWN IMPLICIT-SAVE 0 0 DIMENSION POINTER) (REAL 8 0 0 0 REAL ()) 0 0
+-() (1 0 DEFERRED () ()) 0 () () () 0 0)
+-141 'vicratio' 'lnb_param' '' 1 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC
+-UNKNOWN IMPLICIT-SAVE 0 0) (REAL 8 0 0 0 REAL ()) 0 0 () () 0 () () () 0
+-0)
+-7 'bc' '' '' 6 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN 0
+-0 DIMENSION POINTER DUMMY) (COMPLEX 8 0 0 0 COMPLEX ()) 0 0 () (2 0
+-DEFERRED () () () ()) 0 () () () 0 0)
+-8 'indx' '' '' 6 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN
+-0 0 DIMENSION POINTER DUMMY) (INTEGER 4 0 0 0 INTEGER ()) 0 0 () (1 0
+-DEFERRED () ()) 0 () () () 0 0)
+-9 'nbc' '' '' 6 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN 0
+-0 DUMMY) (INTEGER 4 0 0 0 INTEGER ()) 0 0 () () 0 () () () 0 0)
+-16 'x' '' '' 15 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN 0
+-0 DUMMY) (REAL 8 0 0 0 REAL ()) 0 0 () () 0 () () () 0 0)
+-17 'y' '' '' 15 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN 0
+-0 DIMENSION DUMMY) (COMPLEX 8 0 0 0 COMPLEX ()) 0 0 () (1 0 EXPLICIT (
+-CONSTANT (INTEGER 4 0 0 0 INTEGER ()) 0 '1') (CONSTANT (INTEGER 4 0 0 0
+-INTEGER ()) 0 '6')) 0 () () () 0 0)
+-18 'dydx' '' '' 15 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN
+-UNKNOWN 0 0 DIMENSION DUMMY) (COMPLEX 8 0 0 0 COMPLEX ()) 0 0 () (1 0
+-EXPLICIT (CONSTANT (INTEGER 4 0 0 0 INTEGER ()) 0 '1') (CONSTANT (
+-INTEGER 4 0 0 0 INTEGER ()) 0 '6')) 0 () () () 0 0)
+-22 'radin' '' '' 21 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN
+-UNKNOWN 0 0 DIMENSION POINTER DUMMY) (REAL 8 0 0 0 REAL ()) 0 0 () (1 0
+-DEFERRED () ()) 0 () () () 0 0)
+-23 'nl' '' '' 21 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN
+-0 0 DUMMY) (INTEGER 4 0 0 0 INTEGER ()) 0 0 () () 0 () () () 0 0)
+-24 'rot' '' '' 21 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN
+-0 0 DIMENSION POINTER DUMMY) (REAL 8 0 0 0 REAL ()) 0 0 () (1 0 DEFERRED
+-() ()) 0 () () () 0 0)
+-25 'lat' '' '' 21 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN
+-0 0 DIMENSION POINTER DUMMY) (REAL 8 0 0 0 REAL ()) 0 0 () (1 0 DEFERRED
+-() ()) 0 () () () 0 0)
+-26 'mut' '' '' 21 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN
+-0 0 DIMENSION POINTER DUMMY) (REAL 8 0 0 0 REAL ()) 0 0 () (1 0 DEFERRED
+-() ()) 0 () () () 0 0)
+-27 'gr' '' '' 21 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN
+-0 0 DUMMY) (REAL 8 0 0 0 REAL ()) 0 0 () () 0 () () () 0 0)
+-28 'solid' '' '' 21 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN
+-UNKNOWN 0 0 DUMMY) (LOGICAL 4 0 0 0 LOGICAL ()) 0 0 () () 0 () () () 0 0)
+-31 'x0' '' '' 30 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN
+-0 0 DUMMY) (REAL 8 0 0 0 REAL ()) 0 0 () () 0 () () () 0 0)
+-32 'ro' '' '' 30 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN
+-0 0 DUMMY) (REAL 8 0 0 0 REAL ()) 0 0 () () 0 () () () 0 0)
+-33 'la' '' '' 30 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN
+-0 0 DUMMY) (REAL 8 0 0 0 REAL ()) 0 0 () () 0 () () () 0 0)
+-34 'mu' '' '' 30 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN
+-0 0 DUMMY) (REAL 8 0 0 0 REAL ()) 0 0 () () 0 () () () 0 0)
+-35 'gr' '' '' 30 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN
+-0 0 DUMMY) (REAL 8 0 0 0 REAL ()) 0 0 () () 0 () () () 0 0)
+-36 'solid' '' '' 30 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN
+-UNKNOWN 0 0 DUMMY) (LOGICAL 4 0 0 0 LOGICAL ()) 0 0 () () 0 () () () 0 0)
+-39 'x0' '' '' 38 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN
+-0 0 DUMMY) (REAL 8 0 0 0 REAL ()) 0 0 () () 0 () () () 0 0)
+-40 'ro' '' '' 38 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN
+-0 0 DUMMY) (REAL 8 0 0 0 REAL ()) 0 0 () () 0 () () () 0 0)
+-41 'la' '' '' 38 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN
+-0 0 DUMMY) (COMPLEX 8 0 0 0 COMPLEX ()) 0 0 () () 0 () () () 0 0)
+-42 'mu' '' '' 38 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN
+-0 0 DUMMY) (COMPLEX 8 0 0 0 COMPLEX ()) 0 0 () () 0 () () () 0 0)
+-43 'gr' '' '' 38 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN
+-0 0 DUMMY) (REAL 8 0 0 0 REAL ()) 0 0 () () 0 () () () 0 0)
+-44 'solid' '' '' 38 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN
+-UNKNOWN 0 0 DUMMY) (LOGICAL 4 0 0 0 LOGICAL ()) 0 0 () () 0 () () () 0 0)
+-48 'n' '' '' 47 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN 0
+-0 DUMMY) (INTEGER 4 0 0 0 INTEGER ()) 0 0 () () 0 () () () 0 0)
+-49 'source' '' '' 47 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN
+-UNKNOWN 0 0 DIMENSION POINTER DUMMY) (COMPLEX 8 0 0 0 COMPLEX ()) 0 0 ()
+-(2 0 DEFERRED () () () ()) 0 () () () 0 0)
+-50 'sourcs' '' '' 47 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN
+-UNKNOWN 0 0 DIMENSION POINTER DUMMY) (CHARACTER 1 0 0 0 CHARACTER ((
+-CONSTANT (INTEGER 4 0 0 0 INTEGER ()) 0 '40'))) 0 0 () (1 0 DEFERRED ()
+-()) 0 () () () 0 0)
+-51 'nfext' '' '' 47 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN
+-UNKNOWN 0 0 DUMMY) (INTEGER 4 0 0 0 INTEGER ()) 0 0 () () 0 () () () 0 0)
+-52 'nbc' '' '' 47 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN
+-0 0 DUMMY) (INTEGER 4 0 0 0 INTEGER ()) 0 0 () () 0 () () () 0 0)
+-68 'a' '' '' 67 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN 0
+-0 DIMENSION DUMMY) (REAL 8 0 0 0 REAL ()) 0 0 () (2 0 EXPLICIT (
+-CONSTANT (INTEGER 4 0 0 0 INTEGER ()) 0 '1') (VARIABLE (INTEGER 4 0 0 0
+-INTEGER ()) 0 70 ()) (CONSTANT (INTEGER 4 0 0 0 INTEGER ()) 0 '1') (
+-VARIABLE (INTEGER 4 0 0 0 INTEGER ()) 0 70 ())) 0 () () () 0 0)
+-69 'n' '' '' 67 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN 0
+-0 DUMMY) (INTEGER 4 0 0 0 INTEGER ()) 0 0 () () 0 () () () 0 0)
+-70 'np' '' '' 67 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN
+-0 0 DUMMY) (INTEGER 4 0 0 0 INTEGER ()) 0 0 () () 0 () () () 0 0)
+-71 'indx' '' '' 67 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN
+-UNKNOWN 0 0 DIMENSION DUMMY) (INTEGER 4 0 0 0 INTEGER ()) 0 0 () (1 0
+-EXPLICIT (CONSTANT (INTEGER 4 0 0 0 INTEGER ()) 0 '1') (VARIABLE (
+-INTEGER 4 0 0 0 INTEGER ()) 0 69 ())) 0 () () () 0 0)
+-72 'b' '' '' 67 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN 0
+-0 DIMENSION DUMMY) (REAL 8 0 0 0 REAL ()) 0 0 () (1 0 EXPLICIT (
+-CONSTANT (INTEGER 4 0 0 0 INTEGER ()) 0 '1') (VARIABLE (INTEGER 4 0 0 0
+-INTEGER ()) 0 70 ())) 0 () () () 0 0)
+-75 'a' '' '' 74 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN 0
+-0 DIMENSION DUMMY) (REAL 8 0 0 0 REAL ()) 0 0 () (2 0 EXPLICIT (
+-CONSTANT (INTEGER 4 0 0 0 INTEGER ()) 0 '1') (VARIABLE (INTEGER 4 0 0 0
+-INTEGER ()) 0 77 ()) (CONSTANT (INTEGER 4 0 0 0 INTEGER ()) 0 '1') (
+-VARIABLE (INTEGER 4 0 0 0 INTEGER ()) 0 77 ())) 0 () () () 0 0)
+-76 'n' '' '' 74 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN 0
+-0 DUMMY) (INTEGER 4 0 0 0 INTEGER ()) 0 0 () () 0 () () () 0 0)
+-77 'np' '' '' 74 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN
+-0 0 DUMMY) (INTEGER 4 0 0 0 INTEGER ()) 0 0 () () 0 () () () 0 0)
+-78 'indx' '' '' 74 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN
+-UNKNOWN 0 0 DIMENSION DUMMY) (INTEGER 4 0 0 0 INTEGER ()) 0 0 () (1 0
+-EXPLICIT (CONSTANT (INTEGER 4 0 0 0 INTEGER ()) 0 '1') (VARIABLE (
+-INTEGER 4 0 0 0 INTEGER ()) 0 76 ())) 0 () () () 0 0)
+-79 'd' '' '' 74 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN 0
+-0 DUMMY) (REAL 8 0 0 0 REAL ()) 0 0 () () 0 () () () 0 0)
+-83 'nbc' '' '' 82 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN
+-0 0 DUMMY) (INTEGER 4 0 0 0 INTEGER ()) 0 0 () () 0 () () () 0 0)
+-93 'ystart' '' '' 92 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN
+-UNKNOWN 0 0 DIMENSION DUMMY) (COMPLEX 8 0 0 0 COMPLEX ()) 0 0 () (1 0
+-EXPLICIT (CONSTANT (INTEGER 4 0 0 0 INTEGER ()) 0 '1') (CONSTANT (
+-INTEGER 4 0 0 0 INTEGER ()) 0 '6')) 0 () () () 0 0)
+-94 'xmin' '' '' 92 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN
+-UNKNOWN 0 0 DUMMY) (REAL 8 0 0 0 REAL ()) 0 0 () () 0 () () () 0 0)
+-95 'xmax' '' '' 92 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN
+-UNKNOWN 0 0 DUMMY) (REAL 8 0 0 0 REAL ()) 0 0 () () 0 () () () 0 0)
+-96 'nstep' '' '' 92 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN
+-UNKNOWN 0 0 DUMMY) (INTEGER 4 0 0 0 INTEGER ()) 0 0 () () 0 () () () 0 0)
+-108 'n' '' '' 107 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN
+-0 0 DUMMY) (INTEGER 4 0 0 0 INTEGER ()) 0 0 () () 0 () () () 0 0)
+-109 'bc' '' '' 107 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN
+-UNKNOWN 0 0 DIMENSION POINTER DUMMY) (COMPLEX 8 0 0 0 COMPLEX ()) 0 0 ()
+-(2 0 DEFERRED () () () ()) 0 () () () 0 0)
+-110 'indx' '' '' 107 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN
+-UNKNOWN 0 0 DIMENSION POINTER DUMMY) (INTEGER 4 0 0 0 INTEGER ()) 0 0 ()
+-(1 0 DEFERRED () ()) 0 () () () 0 0)
+-111 'f' '' '' 107 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN
+-0 0 DIMENSION POINTER DUMMY) (COMPLEX 8 0 0 0 COMPLEX ()) 0 0 () (2 0
+-DEFERRED () () () ()) 0 () () () 0 0)
+-112 'sourcs' '' '' 107 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN
+-UNKNOWN 0 0 DIMENSION POINTER DUMMY) (CHARACTER 1 0 0 0 CHARACTER ((
+-CONSTANT (INTEGER 4 0 0 0 INTEGER ()) 0 '40'))) 0 0 () (1 0 DEFERRED ()
+-()) 0 () () () 0 0)
+-113 'nfext' '' '' 107 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN
+-UNKNOWN 0 0 DUMMY) (INTEGER 4 0 0 0 INTEGER ()) 0 0 () () 0 () () () 0 0)
+-114 'nbc' '' '' 107 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN
+-UNKNOWN 0 0 DUMMY) (INTEGER 4 0 0 0 INTEGER ()) 0 0 () () 0 () () () 0 0)
+-115 'loveh' '' '' 107 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN
+-UNKNOWN 0 0 DUMMY) (COMPLEX 8 0 0 0 COMPLEX ()) 0 0 () () 0 () () () 0 0)
+-116 'lovel' '' '' 107 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN
+-UNKNOWN 0 0 DUMMY) (COMPLEX 8 0 0 0 COMPLEX ()) 0 0 () () 0 () () () 0 0)
+-117 'lovek' '' '' 107 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN
+-UNKNOWN 0 0 DUMMY) (COMPLEX 8 0 0 0 COMPLEX ()) 0 0 () () 0 () () () 0 0)
+-118 'delta' '' '' 107 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN
+-UNKNOWN 0 0 DUMMY) (REAL 8 0 0 0 REAL ()) 0 0 () () 0 () () () 0 0)
+-121 'n' '' '' 120 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN
+-0 0 DUMMY) (INTEGER 4 0 0 0 INTEGER ()) 0 0 () () 0 () () () 0 0)
+-122 'bc' '' '' 120 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN
+-UNKNOWN 0 0 DIMENSION POINTER DUMMY) (REAL 8 0 0 0 REAL ()) 0 0 () (2 0
+-DEFERRED () () () ()) 0 () () () 0 0)
+-123 'indx' '' '' 120 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN
+-UNKNOWN 0 0 DIMENSION POINTER DUMMY) (INTEGER 4 0 0 0 INTEGER ()) 0 0 ()
+-(1 0 DEFERRED () ()) 0 () () () 0 0)
+-124 'f' '' '' 120 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN
+-0 0 DIMENSION POINTER DUMMY) (REAL 8 0 0 0 REAL ()) 0 0 () (2 0 DEFERRED
+-() () () ()) 0 () () () 0 0)
+-125 'sourcs' '' '' 120 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN
+-UNKNOWN 0 0 DIMENSION POINTER DUMMY) (CHARACTER 1 0 0 0 CHARACTER ((
+-CONSTANT (INTEGER 4 0 0 0 INTEGER ()) 0 '40'))) 0 0 () (1 0 DEFERRED ()
+-()) 0 () () () 0 0)
+-126 'nfext' '' '' 120 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN
+-UNKNOWN 0 0 DUMMY) (INTEGER 4 0 0 0 INTEGER ()) 0 0 () () 0 () () () 0 0)
+-127 'nbc' '' '' 120 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN
+-UNKNOWN 0 0 DUMMY) (INTEGER 4 0 0 0 INTEGER ()) 0 0 () () 0 () () () 0 0)
+-128 'loveh' '' '' 120 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN
+-UNKNOWN 0 0 DUMMY) (REAL 8 0 0 0 REAL ()) 0 0 () () 0 () () () 0 0)
+-129 'lovel' '' '' 120 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN
+-UNKNOWN 0 0 DUMMY) (REAL 8 0 0 0 REAL ()) 0 0 () () 0 () () () 0 0)
+-130 'lovek' '' '' 120 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN
+-UNKNOWN 0 0 DUMMY) (REAL 8 0 0 0 REAL ()) 0 0 () () 0 () () () 0 0)
+-131 'delta' '' '' 120 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN
+-UNKNOWN 0 0 DUMMY) (REAL 8 0 0 0 REAL ()) 0 0 () () 0 () () () 0 0)
+-134 'i' '' '' 133 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN
+-0 0 DUMMY) (INTEGER 4 0 0 0 INTEGER ()) 0 0 () () 0 () () () 0 0)
+-135 'n' '' '' 133 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN
+-0 0 DUMMY) (INTEGER 4 0 0 0 INTEGER ()) 0 0 () () 0 () () () 0 0)
+-136 'bc' '' '' 133 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN
+-UNKNOWN 0 0 DIMENSION POINTER DUMMY) (COMPLEX 8 0 0 0 COMPLEX ()) 0 0 ()
+-(2 0 DEFERRED () () () ()) 0 () () () 0 0)
+-)
+-
+-('__convert_r4_r8' 0 2 'allow_layer_del' 0 3 'benchmark_spada' 0 4
+-'boundary_conditions_matrix' 0 5 'burgers' 0 10 'deg' 0 11 'degmax' 0 12
+-'degmin' 0 13 'derivs' 0 14 'display' 0 19
+-'earth_homogeneous_layers_prembased' 0 20 'earth_nlayers' 0 29
+-'earth_nlayers_viscoelas' 0 37 'epsdb' 0 45 'external_forcing' 0 46 'freq'
+-0 53 'gg' 0 54 'go0' 0 55 'go_cmb' 0 56 'go_icb' 0 57 'go_surf' 0 58
+-'ifmax' 0 59 'ifmin' 0 60 'incompressible' 0 61 'lac' 0 62 'layerrap' 0
+-63 'lnb_param' 0 64 'lovenb_sub' 0 65 'lubksb' 0 66 'ludcmp' 0 73 'model'
+-0 80 'model_init2' 0 81 'mu0' 0 84 'muc' 0 85 'muc2' 0 86 'mucratio' 0
+-87 'nfreq' 0 88 'nlayer' 0 89 'pi' 0 90 'propagfds' 0 91 'r0' 0 97 'ra'
+-0 98 'radbc' 0 99 'radius' 0 100 'rb' 0 101 'rc' 0 102 'ro_mean' 0 103
+-'roc' 0 104 'soliddim' 0 105 'solution' 0 106 'solution_nbloutput' 0 119
+-'sphere' 0 132 'util' 0 137 'valini' 0 138 'vic' 0 139 'vic2' 0 140
+-'vicratio' 0 141)
+Index: ../trunk-jpl/src/c/modules/FourierLoveCorex/love_numbers.f90
+===================================================================
+--- ../trunk-jpl/src/c/modules/FourierLoveCorex/love_numbers.f90	(revision 27145)
++++ ../trunk-jpl/src/c/modules/FourierLoveCorex/love_numbers.f90	(nonexistent)
+@@ -1,403 +0,0 @@
+- 
+- !subroutine lnb_setup {{{
+- subroutine lnb_setup(  ksr, ksi, hsr, hsi, lsr, lsi, lksr, lksi, dnfreq,  frequencies,  ddegmax, ddegmin, &
+-          dgo0,  dr0,  dmu0, dallow_layer_del, source_type, ddisplay, dnlayer,  dradius,    &
+-          dvic,  dlac,  dmuc, dvic2,  dmuc2,  droc, dburgers,  dsoliddim)
+-
+- use lnb_param
+- use util
+- implicit none
+-
+- integer :: dnfreq, ddegmax, ddegmin
+- integer :: dnlayer
+- integer :: source_type, fr, i, IERR
+- double precision :: T,cst, fluid_tscale,g
+- double precision, dimension(dnfreq,ddegmax+1) :: hsr,hsi,lsr,lsi,ksr,ksi
+- double complex, dimension(dnfreq,ddegmax+1) :: hs,ls,ks
+- double precision, dimension(dnfreq) :: frequencies
+-
+- double complex :: lks(dnfreq,(ddegmax+1)*(dnlayer+1)*6) 
+- double precision, dimension(dnfreq,(ddegmax+1)*(dnlayer+1)*6) :: lksr, lksi 
+- 
+- double precision   :: dmu0,dgo0,dr0
+- logical :: dallow_layer_del, ddisplay
+-
+- double precision, dimension(dnlayer) :: droc,dlac,dmuc,dvic,dvic2,dmuc2 
+- double precision, dimension(dnlayer+1) :: dradius 
+- double precision, dimension(dnlayer) :: dsoliddim,dburgers 
+-
+- !assign local variables to public variables
+- mu0=dmu0; go0=dgo0; r0=dr0; allow_layer_del=dallow_layer_del; 
+- nfreq=dnfreq;degmax=ddegmax;degmin=ddegmin;nlayer=dnlayer; 
+- allocate(roc(nlayer),lac(nlayer),muc(nlayer),vic(nlayer),vic2(nlayer),muc2(nlayer))
+- roc=droc; lac=dlac; muc=dmuc; vic=dvic; vic2=dvic2; muc2=dmuc2; 
+- allocate(radius(nlayer+1),soliddim(nlayer),burgers(nlayer),radbc(nlayer+1))
+- radius=dradius; 
+-
+-	display=ddisplay
+-	!print*,display
+-	do i=1,nlayer
+-	if (NINT(dsoliddim(i))==1) then
+-		soliddim(i)=.true.
+-	else
+-		soliddim(i)=.false.
+-	endif 
+-	if (NINT(dburgers(i))==1) then
+-		burgers(i)=.true.
+-	else
+-		burgers(i)=.false.
+-	endif 
+-	enddo
+-
+- pi=dacos(-1.d0)
+-
+- ra=radius(nlayer+1)
+- rb = 3480.d3
+- rc = 1221.5d3
+- r0=ra
+- cst = 365.25d0*24.d0*3600.d0*1000.d0 
+-
+- benchmark_spada=.false.
+- !frequencies=1E-5/cst*2*pi
+-
+-	hs(:,:)=(0.d0,0.d0)
+-	ks=hs
+-	ls=hs
+- 
+- call love_numbers(frequencies,source_type,hs,ls,ks,lks)
+-
+- hsr=dble(hs)
+- hsi=dimag(hs)
+- ksr=dble(ks)
+- ksi=dimag(ks)
+- lsr=dble(ls)
+- lsi=dimag(ls)
+- !!! love kernels 
+- lksr=dble(lks)
+- lksi=dimag(lks)
+-
+-end subroutine
+-! }}}
+-
+-!subroutine love_numbers {{{
+- subroutine love_numbers(frequencies,source_type,hs,ls,ks,lks)
+-
+- use model
+- use lovenb_sub
+-
+- double complex, dimension(:,:), pointer :: bc
+- double complex, dimension(:,:), pointer :: f
+- character*40,     dimension(:),   pointer :: sourcs
+- integer,          dimension(:),   pointer :: indx,indx2
+- integer :: nbc,nfext,ifreq,ntheta2,nphi2,pp 
+- double precision :: cst,prec, delta!,h1,h2,k1,k2,l1,l2,dh1,dh2,dk1,dk2,dl1,dl2
+- double precision :: he,ke,le
+- double precision :: frequencies(nfreq), fluid_tscale
+- double complex :: loveh,lovel,lovek
+- logical :: logi
+- integer :: nbc_init
+- integer :: i,j,k,n, fr,m,l, source_type
+- double complex :: hs(nfreq,degmax+1), ls(nfreq,degmax+1), ks(nfreq,degmax+1)
+- !double complex, dimension(nbc_init,1) :: lovekernels
+- double complex, dimension(:,:), allocatable :: lovekernels
+- double complex :: lks(nfreq,(degmax+1)*(nlayer+1)*6) 
+-
+- double precision :: cpu_time1(100)
+- integer :: cpu_count
+-
+- pi=dacos(-1.d0)
+-
+-  open(unit=101, file='lastrun_log')
+-
+- cpu_count=0
+- cpu_count=cpu_count+1;call cpu_time(cpu_time1(cpu_count))
+- !write(101,*), 'Done !', cpu_time1(cpu_count), 's'
+- !write(101,*),''
+-
+-
+- !double precision, dimension(:), pointer :: vech,vecl,veck,vecd,vec
+-
+- radbc(:)=.false.
+- radbc(1)=.true.
+- radbc(nlayer+1)=.true.
+- do i=2,nlayer
+-  if ((.not.soliddim(i)).or.(.not.soliddim(i-1))) then
+-   radbc(i)=.true.
+-  end if
+- end do
+- 
+-
+- ! Test number of interfaces and of boundary conditions
+-  nbc = 0
+-  lks=0.d0
+-  !!! >>> SA: 01/27/2018 => following changes are made to retrieve love numbers at depth 
+-  !do i=1,nlayer+1 
+- !if (radbc(i)) nbc=nbc+6
+-  !enddo
+-  nbc_init = (nlayer+1)*6
+-  nbc=nbc_init
+-  !!! >>> SA 
+-
+- ifmin=source_type
+- ifmax=source_type
+- 
+-
+-  if (display) then
+-	 print*,'model init'
+- endif
+-
+-
+- call model_init2(nbc)  
+-
+-
+-  if (display) then
+-	 print*, 'done'
+- endif
+-
+- nfext = 13 ! Number of potential excitation sources
+- allocate( lovekernels(nbc_init,1) )
+- allocate( bc(nbc,nbc_init), indx(nbc_init) )
+- allocate( f(nfext,nbc_init), sourcs(nfext) )
+-
+- sourcs(1)='ICB --Volumetric Potential' 
+- sourcs(2)='ICB --Pressure'
+- sourcs(3)='ICB --Loading'
+- sourcs(4)='ICB --Tangential Traction'
+- sourcs(5)='CMB --Volumetric Potential'
+- sourcs(6)='CMB --Pressure'
+- sourcs(7)='CMB --Loading'
+- sourcs(8)='CMB --Tangential Traction'
+- sourcs(9)='SURF--Volumetric Potential'
+- sourcs(10)='SURF--Pressure'
+- sourcs(11)='SURF--Loading'
+- sourcs(12)='SURF--Tangential Traction'
+-
+- 
+- if (display)  print*, 'source_type =', source_type, ', ', sourcs(source_type)
+- if (source_type<9) then
+-  print*,'Error: Internal loading not supported yet, please input source_type between 9 and 12'
+-  print*,'Reference:'
+-  do i=1,12
+-   print*,i,sourcs(i)
+-  enddo
+- return
+- endif
+-
+-
+-! Print/write control
+- !display=.false. ! Printing on the terminal
+- 
+- ! Calculation optimization (avoids underflows at high degree)
+- !allow_layer_del = .true.     ! Do we allow deletion of the central layers in the calculation if necessary?
+- layerrap = 1.d0  ! Max absolute ratio between love numbers at the top and bottom of the last layer
+-
+- ! Mode search parameters
+- freq0 = -1.d10
+- logi = .true.
+- cst = 365.25d0*24.d0*3600.d0*1000.d0 
+- prec = 1.d-8
+- firstmode = 0.d0
+-
+- 
+- cpu_count=cpu_count+1;call cpu_time(cpu_time1(cpu_count))
+- !write(101,*), 'Earth model initialization :', cpu_time1(cpu_count) -cpu_time1(cpu_count-1), 's'
+- !write(101,*),''
+- if (display) then
+- write(*,*), 'Earth model initialization :', cpu_time1(cpu_count) -cpu_time1(cpu_count-1), 's'
+- write(*,*),''
+- endif
+-
+-! Spherical Harmonics initialization
+-
+-
+-
+-! -- SH degree loop
+-
+-
+- bc(:,:)=0.d0
+-
+- 
+- 
+-  !write(101,*), 'Calculating impulse response'
+- if (display) then
+- write(*,*), 'Calculating impulse response'
+- endif
+- 	if (maxval(frequencies).ne.0 .and. display) then
+-		print*, 'Frequency ranging from ', minval(dabs(frequencies)), &
+-		' to ', maxval(frequencies),' s^-1'
+-	endif 
+-
+-	if (frequencies(1)==0 .and. display) then
+-		print*,'Elastic calculation'
+-	endif
+- deg=degmin-1
+-
+-
+-
+- do l = degmin,degmax 
+- deg=deg+1
+- !write(*,*)
+-  !write(*,*)
+-  !write(101,fmt='(A19, 10X,A2,I3,A1,I3)',ADVANCE='NO'), repeat(char(8),19),'l=',deg,'/',degmax
+-  if (display) then
+-  write(*,fmt='(A10,A2,I5,A1,I5)',ADVANCE='NO'),repeat(char(32),10),'l=',deg,'/',degmax
+-  endif
+-
+-  !write(*,*)
+-  !!write(101,*), fr, T
+-
+- do fr=1,nfreq
+-
+-  !!write(101,*),fr
+-
+-
+-  !the way Fourier Transform algorithms works : they calculate for fmin=0 to fmax=1/dt
+-  !by aliasing for this algo, f=1/(2*dt) to f=1/dt is the same as f=-1/(2*dt) to f=0
+-  !but physics-wise, the Earth response at high frequency is not what we are looking for
+-  !the [0 ; 1/(2*dt)] interval and its negative counterpart are what we are looking for
+-  !therefore in our love number calculation the frenquency set must be [0 ; 1/(2*dt) ] U [-1/(2*dt) 0[
+-
+-  !if (fr==1) then ! the variable freq is, in fact, the pulsation = 2*pi*frequency
+-  ! fluid_tscale=-575.502 / (deg+91.1765) -0.176471 ! this formula sets fluid time scale = 1e6 kyr at degree 2, 1e5 kyr at degree 20 and 1e3 kyr at degree 90, which allows no error growth and still the fluid number as the benchmark at all degree (tested up to degmax=147)
+-   !print*,fluid_tscale
+-  ! freq=complex(0.d0,1.d0)*2.d0*pi*(10.d0**(fluid_tscale)/cst) ! empiric time period that changes according to harmonic degree to ensure getting fluid response without crazy error growing for high degree
+-! it is meant to approximate the theoretical freq=0.d0 that should be assessed for fft
+-  !elseif (fr <= nfreq/2+1) then
+-  ! freq=complex(0.d0,1.d0)*(dble(fr-1)/T)*2.d0*pi
+-  !else 
+-  ! freq=complex(0.d0,1.d0)*(-dble(nfreq+1-fr)/T)*2.d0*pi
+-  !end if
+-  
+-  freq=dcmplx(0.d0,frequencies(fr))
+-  !print*,fr,freq
+-
+-  !if (deg==degmin) write(31,*),fr,real(freq)*cst,aimag(freq)*cst,time(fr)
+-  !freq=dble(fr)/T
+-  !--  Elastic Love number calculation
+-  !freq=2.d0*pi/(1e4*cst)*complex(0.d0,1.d0)
+-
+-   !if (deg==2) then ! for rotationnal feedback
+-   !ifmin=9;ifmax=9 ! Sets tidal calculation
+-   !bc(:,:)=0.d0
+-   !call boundary_conditions_matrix(bc,indx,nbc)
+-   !call external_forcing(deg,f,sourcs,nfext,nbc) 
+-   !call solution(deg,bc,indx,f,sourcs,nfext,nbc,loveh,lovel,lovek,delta)
+-   !k2tidal(fr)=lovek-1.d0
+-   !h2tidal(fr)=loveh
+-   !l2tidal(fr)=lovel
+-   !ifmin=11;ifmax=11 ! Sets back loading calculation
+-   !endif
+-   !print*,(deg)
+-   bc(:,:)=0.d0
+-   lovekernels(:,1)=0.d0
+-   call boundary_conditions_matrix(bc,indx,nbc)
+-	!print*,'bc ok', layerrap
+-   call external_forcing(deg,f,sourcs,nfext,nbc) 
+-	!print*,'forcing ok', layerrap
+-   call solution(deg,bc,indx,f,sourcs,nfext,nbc,loveh,lovel,lovek,delta,lovekernels)
+-
+-   !do i=1,nbc
+-   !   lks(fr,deg*nbc+i) = lovekernels(i)
+-   !end do
+-
+-	!print*,'first_sol', layerrap, epsdb
+-
+-   ! Automatic reduction of the number of layers when the attenuation with depth becomes too strong
+-   allow_layer_del=.true.
+-   !allow_layer_del=.false.
+-   if (allow_layer_del.eqv..true.) then
+-
+-      print*, layerrap, epsdb, nbc 
+-      !do while ((layerrap<=epsdb).and.(nbc>12*6).or.(isnan(layerrap)) )
+-      do while ((layerrap<=epsdb).and.(nbc>12).or.(isnan(layerrap)) )
+-     !do while ((layerrap<=epsdb).and.(nbc>12*(nlayer+1)).or.(isnan(layerrap)) ) ! SA: for love Kernels
+- !		print*,'trying to delete layer', layerrap, epsdb, nbc
+-     !write(101,*)
+-     !write(101,*) 'Rapport Nombre de Love surface/profondeur faible : ', layerrap 
+-     !write(101,*) ' Changement d''interface de debut d''integration' 
+-
+-     if (display) then
+-     write(*,*)
+-     write(*,*) 'Surface/Depth Love number ratio small: ', layerrap 
+-     write(*,*) ' Changing the interface where the integration starts'
+-     endif
+-
+-     nbc = nbc-6
+-     n = 1
+-     do while (.not.radbc(n))
+-      n = n+1
+-     end do
+-     radbc(n) =.false.
+-     radbc(n+1) =.true.
+-     !write(101,*) ' New start interface: ', radius(n+1)/1.d3,' km'
+-     if (display) then
+-     write(*,*) ' New start interface: ', radius(n+1)/1.d3,' km'
+-     endif
+-        
+-     deallocate( bc, indx, f, sourcs, lovekernels )
+-     allocate( bc(nbc,nbc), indx(nbc) )
+-     allocate( f(nfext,nbc), sourcs(nfext) )
+-    
+-     allocate( lovekernels(nbc,1) )
+-
+-     bc(:,:)=0.d0
+-     lovekernels(:,1)=0.d0
+-
+-     call boundary_conditions_matrix(bc,indx,nbc)
+-     call external_forcing(deg,f,sourcs,nfext,nbc) 
+-     call solution(deg,bc,indx,f,sourcs,nfext,nbc,loveh,lovel,lovek,delta,lovekernels)
+-
+-    end do
+-
+-      !do i=1,nbc
+-      !   pp = ((nlayer+1)*6 - nbc)/6 
+-      !   lks(fr, deg*nbc + pp*6 + i) = lovekernels(i)
+-      !end do
+-
+-   end if
+-
+-   !-- Saving Love numbers
+-    hs(fr,deg+1) = loveh
+-    ks(fr,deg+1) = lovek - 1.d0
+-    ls(fr,deg+1) = lovel
+-    
+-    !!! and love kernels 
+-    do i=1,nbc
+-      !lks(fr,deg*nbc+i) = lovekernels(i,1)
+-      lks(fr,(deg+1)*nbc_init+i-nbc) = lovekernels(i,1)
+-    end do
+-
+-	!print*,dble(hs(fr,deg+1)), dimag(hs(fr,deg+1)),dble(ks(fr,deg+1)), dimag(ks(fr,deg+1))
+-
+-    !if (fr==1) then ! if this is supposed to be fluid response
+-    !  ! then cut off the imaginary part, which is inherited from approximating t=infinity to a few million years (see above the setting of freq)
+-    ! hs(fr,deg+1)=real(hs(fr,deg+1))
+-    ! ks(fr,deg+1)=real(ks(fr,deg+1))
+-    ! ls(fr,deg+1)=real(ls(fr,deg+1))
+-    !endif
+-!~~~~~~~~~~~~~~TEST ZONE~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+- if (benchmark_spada) then
+- write(17,*), deg,fr,dble(hs(fr,deg+1)), dimag(hs(fr,deg+1)),dble(ks(fr,deg+1)), dimag(ks(fr,deg+1))
+- endif
+-!~~~~~~~~~~~~~~END TEST ZONE~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+-
+-
+-  !write(*,*) 'Elastic Love Numbers:  ',ke,he,le 
+-  !write(ifile1,*) deg,ke,he,le
+- end do
+- 
+- end do
+-
+-
+- cpu_count=cpu_count+1;call cpu_time(cpu_time1(cpu_count))
+- !write(101,*), 'Earth model initialization :', cpu_time1(cpu_count) -cpu_time1(cpu_count-1), 's'
+- !write(101,*),''
+- if (display) then
+- write(*,*), 'Love number calc done :', cpu_time1(cpu_count) -cpu_time1(cpu_count-1), 's'
+- write(*,*),''
+- endif
+-
+- deallocate( bc, indx, f, sourcs )
+-end subroutine
+-! }}} 
+-
+Index: ../trunk-jpl/src/c/modules/FourierLoveCorex/Makefile
+===================================================================
+--- ../trunk-jpl/src/c/modules/FourierLoveCorex/Makefile	(revision 27145)
++++ ../trunk-jpl/src/c/modules/FourierLoveCorex/Makefile	(nonexistent)
+@@ -1,50 +0,0 @@
+-PROG =	lnb_calc.exe
+-
+-### Modules du programme 
+-SRCS =  lnb_param.f90 lovenb_sub.f90 love_numbers.f90 model.f90 util.f90
+-
+-OBJS =  lnb_param.o model.o util.o lovenb_sub.o love_numbers.o
+-
+-MOD = lnb_param.mod model.mod util.mod lovenb_sub.mod
+-
+-SHTOOLSPATH = /home/caronlam/Codes/SHTOOLS-3.4
+-
+-LIBS =  -m64 -fPIC -O2 -ffast-math -L/usr/lib64 -lfftw3 -lm -llapack -lblas  
+-#	LIBS =  -L$(SHTOOLSPATH)/lib -lSHTOOLS2.8 -llapack -lfftw3  -lm
+-
+-INCLUDE = -mcmodel=medium -I/usr/include 
+-
+-CC = cc
+-CFLAGS = -O
+-
+-#F90 = gfortran -mcmodel=medium -O2
+-F90= gfortran -O2
+-#F90 = gfortran
+-#F90 = g95
+-#F90 = ifort
+-
+-F90FLAGS = 
+-LDFLAGS =
+-
+-all: 	$(PROG)
+-
+-$(PROG): $(OBJS)
+-	$(F90) $(LDFLAGS)  -o $@ $(OBJS) $(LIBS)
+-
+-clean:
+-	rm -f $(PROG) $(OBJS) *.M *.mod *.T *.lst 
+-
+-.SUFFIXES: $(SUFFIXES) .f90
+-
+-.f90.o:
+-	$(F90) $(F90FLAGS)  -c $< $(INCLUDE)
+-
+-#------------------------
+-#Dependances
+-#------------------------
+-
+-#invGIA.o: nblove.o, parameters.o
+-love_numbers.o: lnb_param.o model.o lovenb_sub.o 
+-model.o: lnb_param.o
+-util.o: lnb_param.o model.o
+-lovenb_sub.o: lnb_param.o model.o util.o
+Index: ../trunk-jpl/src/c/modules/FourierLoveCorex/model.f90
+===================================================================
+--- ../trunk-jpl/src/c/modules/FourierLoveCorex/model.f90	(revision 27145)
++++ ../trunk-jpl/src/c/modules/FourierLoveCorex/model.f90	(nonexistent)
+@@ -1,426 +0,0 @@
+-module model
+- 
+- implicit none
+-
+- contains
+-
+-  subroutine model_init2(nbc)
+-!--------------------- 
+- use lnb_param
+-
+-  double precision :: ro,g,drad,la,mu,ro1,ro2,x
+-  logical :: solid,test
+-  integer :: nbc,i,n,j
+-
+-
+-
+-  !- Calculus parameters    
+-  pi=dacos(-1.d0)
+-  epsdb=epsilon(1.d0)
+-  
+-  !write(101,*), 'Epsilon machine = ',epsdb
+-  !write(101,*), 'Constants:'
+-  !write(101,*), ' pi = ',pi
+-  !write(101,*), ' G  = ',GG 
+-  !write(101,*), 'Dimensioned scales:'
+-  !write(101,*), ' rigidity mu0 = ',mu0
+-  !write(101,*), ' gravity  go0 = ',go0
+-  !write(101,*), ' distance r0  = ',r0
+-  
+- 
+-
+- 
+- !call earth_homogeneous_layers_prembased(radius,nlayer,roc,lac,muc,g,solid) !yields the Earth layers radii, density, lamé parameters, gravity and solid/liquid state boolean identifier
+- 
+- !if (benchmark_spada) then
+- ! muc(1) = 1.d6; muc(2) = 0.d0; muc(3) = 2.28340d11 
+- ! muc(4) = 1.05490d11; muc(5) = 0.70363d11; muc(6) = 0.50605d11
+- ! roc(1) = 10751.d0; roc(2) = 10750.d0; roc(3) = 4978.d0 
+- ! roc(6)=3300.d0
+- !else
+-  !muc(1) = 1.d6; muc(2) = 0.d0; muc(3) = 2.20425d11 
+-  !muc(4) = 0.870257d11; muc(5) = 0.870257d11; muc(6) = 0.510268d11
+-  !roc(1) = 10987.9d0; roc(2) = 10986.9d0; roc(3) = 4903.58d0 
+-  !roc(4) = 3628.29d0; roc(5) = 3628.29d0; roc(6) = 3113.94d0
+- !endif
+-
+- !vic2=vic/vicratio
+- !muc2=muc/mucratio
+-
+- if (display) then
+-	print*, '  Layer top boundary        rho                       la                        mu                        eta' 
+- do i = 1,nlayer
+-  ! print*, radius(i+1),roc(i),lac(i),muc(i),vic(i)
+-  if (burgers(i)) then
+-  print*, radius(i+1),roc(i),lac(i),muc(i),vic(i),muc2(i),vic2(i), 'B'
+-  else
+-  print*, radius(i+1),roc(i),lac(i),muc(i),vic(i)
+-  endif
+- end do
+-
+- endif
+- !write(101,*),
+-
+-
+- call earth_nlayers(1.d0,ro,la,mu,g,solid)
+-   go_surf = g
+-   go0 = g !!! LC+SA: 07/20/2020. 
+-   ro_mean = 3.d0/4.d0*go_surf/(pi*GG*ra)
+-	if (display) then
+-		print*, 'Surface Gravity: ', go_surf, ' m.s^-2, mean density: ', ro_mean, ' kg.m^-3'
+-		print*, 'Center of the Earth approximated at r=', radius(1)/1e3, ' km'
+-	endif 
+-  
+-  ! Test number of interfaces and of boundary conditions
+-  n = 0
+-  !!! >>> SA: 01/27/2018 => following changes made to retrieve love numbers at depth 
+-  !do i=1,nlayer+1 
+- !if (radbc(i)) n=n+1
+-  !enddo
+-  n = nlayer+1 
+-  !!! >>> SA 
+-  if (nbc/=(6*n)) then
+- !write(101,*),
+- print*, 'Error nbc should be ',6*n,' instead of ',nbc
+- stop
+-  endif
+-  
+-  ! Test solid-liquid boundaries
+- test = .false.
+-  do i = 1,nlayer
+- if (radbc(i)) test = .true.
+- if (test) then
+- if ((.not.soliddim(i)).and.((.not.radbc(i)).or.(.not.radbc(i+1)))) then
+-  print*, 'Error in model definition: one fluid layer is not set with correct boundary conditions'
+-  stop
+- endif
+- endif
+-  enddo
+-  
+-  !-- Display a few quantities
+-  !write(101,*), ' surface radius = ',ra
+-  !write(101,*), ' CMB radius = ',rb
+-  !write(101,*), ' ICB radius = ',rc
+-  !write(101,*), ' go surface = ',go_surf
+-  !write(101,*), ' mean density = ',ro_mean 
+-  
+-  !-- Diplsay ICB conditions
+-  !x=rc/ra
+-  !write(101,*), 
+-  !call earth_nlayers_viscoelas(x-epsdb,ro1,complex(la,0.d0),complex(mu,0d0),g,solid)
+-  !write(101,*), 'ICB, g = ',g
+-  !write(101,*), 'ICB, ro(Inner Core) = ', ro1
+-  !call earth_nlayers_viscoelas(x,ro2,complex(la,0.d0),complex(mu,0d0),g,solid)
+-  !write(101,*), 'ICB, g = ',g
+-  !write(101,*), 'ICB, ro(Outer Core) = ', ro2
+-  !go_icb = g
+-  
+-  !-- Display CMB conditions
+-  !x=rb/ra
+-  !write(101,*),
+-  !call earth_nlayers_viscoelas(x-epsdb,ro1,complex(la,0.d0),complex(mu,0d0),g,solid)
+-  !write(101,*), 'CMB, g = ',g
+-  !write(101,*), 'CMB, ro(Outer Core) = ', ro1
+-  !call earth_nlayers_viscoelas(x,ro2,complex(la,0.d0),complex(mu,0d0),g,solid)
+-  !write(101,*), 'CMB, g = ',g
+-  !write(101,*), 'CMB, ro(Mantle) = ', ro2
+-  !go_cmb = g
+- 
+- end subroutine model_init2
+-
+-
+- subroutine earth_homogeneous_layers_prembased(radin,nl,rot,lat,mut,GR,solid)
+- use lnb_param
+-   
+-   double precision :: x0,GR
+-   logical :: solid
+-   integer                 :: i,j,nl
+-   doubleprecision      :: la,mu,ro,vp,vs,RT
+-   doubleprecision      :: t1,t2,t3,t4,r1,r2
+-   doubleprecision, dimension(14) :: r
+-   doubleprecision, dimension(13,4) :: d,p,s
+-   doubleprecision, dimension(:), pointer :: radin
+-   doubleprecision, dimension(:), pointer :: rot,lat,mut
+-    doubleprecision, dimension(nl+1) :: rad
+-   
+-   
+-   RT = ra
+-   r(1) = 0.d0;     r(2) = 1221.5d0; r(3) = 3480.d0; r(4) = 3630.d0
+-   r(5) = 5600.d0;  r(6) = 5701.d0;  r(7) = 5771.d0; r(8) = 5971.d0
+-   r(9) = 6151.d0; r(10) = 6291.d0; r(11) = 6346.6d0
+-   r(12) = 6356.d0; r(13) = 6368.d0; r(14) = ra
+-  
+-!   if ((r(14)*1.d3) /= ra) stop'Problem in prem: Earth radius /= ra !' 
+-!
+-  d(:,:) = 0.d0
+-  d(1,1) = 13.0885d0;               d(1,3) = -8.8381d0 
+-  d(2,1) = 12.5815d0; d(2,2) = -1.2638d0; d(2,3) = -3.6426d0; d(2,4) = -5.5281d0
+-  d(3,1) = 7.9565d0 ; d(3,2) = -6.4761;   d(3,3) = 5.5283d0;  d(3,4) = -3.0807d0
+-  d(4,1) = 7.9565d0 ; d(4,2) = -6.4761;   d(4,3) = 5.5283d0;  d(4,4) = -3.0807d0
+-  d(5,1) = 7.9565d0 ; d(5,2) = -6.4761;   d(5,3) = 5.5283d0;  d(5,4) = -3.0807d0
+-  d(6,1) = 5.3197d0 ; d(6,2) = -1.4836d0
+-  d(7,1) = 11.2494d0; d(7,2) = -8.0298d0
+-  d(8,1) = 7.1089d0 ; d(8,2) = -3.8045d0
+-  d(9,1) = 2.6910d0 ; d(9,2) = 0.6924d0
+-  d(10,1) = 2.6910d0; d(10,2) = 0.6924d0
+-  d(11,1) = 2.9d0  
+-  d(12,1) = 2.6d0  
+-
+-! ocean
+-  if (soliddim(13).eqv..false.) then
+-   d(13,1) = 1.02d0 
+-
+-! continental
+-  else
+-  d(13,1) = d(12,1)
+-  end if
+-
+-  p(:,:) = 0.d0
+-  p(1,1) = 11.2622d0 ; p(1,3) = -6.3640d0
+-  p(2,1) = 11.0487d0 ; p(2,2) = -4.0362d0; p(2,3)  = 4.8023d0; p(2,4) = -13.5732d0
+-  p(3,1) = 15.3891d0 ; p(3,2) = -5.3181d0; p(3,3)  = 5.5242d0; p(3,4) = -2.5514d0
+-  p(4,1) = 24.952d0 ; p(4,2)  = -40.4673d0; p(4,3) = 51.4832d0; p(4,4) = -26.6419d0
+-  p(5,1) = 29.2766d0 ; p(5,2) = -23.6027d0; p(5,3) = 5.5242d0; p(5,4) = -2.5514d0
+-  p(6,1) = 19.0957d0 ; p(6,2)  = -9.8672d0
+-  p(7,1) = 39.7027d0 ; p(7,2)  = -32.6166d0
+-  p(8,1) = 20.3926d0 ; p(8,2)  = -12.2569d0
+-  p(9,1) = 4.1875d0 ; p(9,2)  = 3.9382d0
+-  p(10,1) = 4.1875d0 ; p(10,2) = 3.9382d0
+-  p(11,1) = 6.8d0 
+-  p(12,1) = 5.8d0
+-!
+-! ocean
+-  if (soliddim(13).eqv..false.) then
+-  p(13,1) = 1.45d0 
+-!
+-! continental
+-  else
+-  p(13,1) = p(12,1)
+-  end if
+-!----
+-!
+-  s(:,:) = 0.d0
+-!
+-  s(1,1) = 3.6678d0; s(1,3) = -4.4475d0
+-
+-  s(3,1) = 6.9254d0; s(3,2) = 1.4672d0; s(3,3) = -2.0834d0; s(3,4) = 0.9783d0
+-  s(4,1) = 11.1671d0; s(4,2) = -13.7818d0; s(4,3) = 17.4575d0; s(4,4) = -9.2777d0
+-  s(5,1) = 22.3459d0; s(5,2) = -17.2473d0; s(5,3) = -2.0834d0; s(5,4) = 0.9783d0
+-  s(6,1) = 9.9839d0; s(6,2) = -4.9324
+-  s(7,1) = 22.3512d0; s(7,2) = -18.5856d0 
+-  s(8,1) = 8.9496d0; s(8,2) = -4.4597
+-  s(9,1) = 2.1519d0; s(9,2) = 2.3481d0
+-  s(10,1) = 2.1519d0; s(10,2) = 2.3481d0
+-  s(11,1) = 3.9d0 
+-  s(12,1) = 3.2d0 
+-!
+-! ocean (please don't modify)
+-  if (soliddim(13).eqv..false.) then
+-!
+-! continental
+-  else
+-  s(13,1) = s(12,1)
+-  end if
+-!
+-!
+-  r(:) = r(:)*1.d3
+-  
+-  !- handling the first layer : central sphere
+-  rad = radin
+-  rad(1) = 0.d0
+-  
+-  do j = 1,nl
+-  
+- ro = 0.d0
+- vp = 0.d0
+- vs = 0.d0
+-
+- do i = 1,13
+-
+-  r1 = 0.d0
+-  r2 = 0.d0
+-  if ((rad(j) > r(i)).and.(rad(j) <= r(i+1))) then
+-   if (rad(j+1) <= r(i+1)) then
+-    r2 = rad(j+1)
+-    r1 = rad(j)
+-   else
+-    r2 = r(i+1)
+-    r1 = rad(j)
+-   end if
+-  else if (rad(j) <= r(i)) then
+-   if ((rad(j+1) > r(i)).and.(rad(j+1) <= r(i+1))) then
+-    r2 = rad(j+1)
+-    r1 = r(i)
+-   else if (rad(j+1) > r(i+1)) then
+-    r2 = r(i+1)
+-    r1 = r(i)
+-   end if
+-  end if
+-
+-  t1 = d(i,1)/3.d0
+-  t2 = d(i,2)/(Rt*4.d0)
+-  t3 = d(i,3)/((Rt**2)*5.d0)
+-  t4 = d(i,4)/((Rt**3)*6.d0)
+-  ro =  ro + t1*(r2**3) + t2*(r2**4) + t3*(r2**5) + t4*(r2**6) - &
+-   ( t1*(r1**3) + t2*(r1**4) + t3*(r1**5) + t4*(r1**6) )
+-     
+-  t1 = p(i,1)/3.d0
+-  t2 = p(i,2)/(Rt*4.d0)
+-  t3 = p(i,3)/((Rt**2)*5.d0)
+-  t4 = p(i,4)/((Rt**3)*6.d0)
+-  vp =  vp + t1*(r2**3) + t2*(r2**4) + t3*(r2**5) + t4*(r2**6) - &
+-   ( t1*(r1**3) + t2*(r1**4) + t3*(r1**5) + t4*(r1**6) )
+-     
+-  t1 = s(i,1)/3.d0
+-  t2 = s(i,2)/(Rt*4.d0)
+-  t3 = s(i,3)/((Rt**2)*5.d0)
+-  t4 = s(i,4)/((Rt**3)*6.d0)
+-  vs =  vs + t1*(r2**3) + t2*(r2**4) + t3*(r2**5) + t4*(r2**6) - &
+-   ( t1*(r1**3) + t2*(r1**4) + t3*(r1**5) + t4*(r1**6) )
+-
+- end do
+- ro = ro*3 / (rad(j+1)**3-rad(j)**3)
+- vp = vp*3 /(rad(j+1)**3-rad(j)**3)
+- vs = vs*3 / (rad(j+1)**3-rad(j)**3)
+- mu = ro*vs**2
+- la = ro*vp**2 - 2.d0*mu
+- ro = ro*1.d3
+- la = la*1.d9
+- mu = mu*1.d9
+-
+- !print*, rad(j+1), ro, la , mu
+- rot(j) = ro
+- lat(j) = la
+- mut(j) = mu
+-  end do
+-   
+-   
+- end subroutine earth_homogeneous_layers_prembased
+-
+-
+- subroutine earth_nlayers(x0,ro,la,mu,GR,solid)
+- use lnb_param
+-!---------------------------------------
+-! Gets planet properties at non-dimentionalized radius x0:
+-!ro: density
+-!la: Lame lambda constant
+-!mu: Lame mu constant (shear modulus)
+-!GR: gravity
+-!solid: boolean, true if solid, otherwise liquid
+-    integer                 :: i,j
+-    doubleprecision      :: la,mu,CST,GR
+-    doubleprecision      :: x,x0,xx0,ro
+-    doubleprecision      ::r1,r2
+-    logical       :: solid
+-    double precision, dimension(nlayer+1) :: r
+-    
+-
+-
+-    solid = .true.
+-
+-    r(:) = radius(:)
+-    r(1) = 0.d0
+-    x    = x0   * ra
+-    CST = 4.d0*pi*GG/3.d0
+-    if ( x > r(nlayer+1) ) x = r(nlayer+1)
+-    
+-    GR = 0.d0
+-    
+-    do i = 1,nlayer
+-
+- if (x > r(i)) then 
+-
+-  r2 = r(i+1)
+-  r1 = r(i)
+-  ro = roc(i)
+-
+-  if (x <= r(i+1)) then
+-
+-   GR = GR + ro*(x**3-r1**3)
+-   if (x > epsdb) GR = GR*CST/(x**2)
+-
+-  else
+-   GR = GR + ro*(r2**3-r1**3)
+-  end if
+- end if
+-
+- if ((x >= r(i)).and.(x < r(i+1))) then    
+-  la = lac(i)
+-  mu = muc(i)
+-  ro = roc(i)
+-  if ( soliddim(i).eqv..false. ) solid = .false.
+-
+- end if
+-
+-    end do
+-
+-    if (x>=r(nlayer+1)) then
+- la = lac(nlayer)
+- mu = muc(nlayer)
+- ro = roc(nlayer)
+-  if ( soliddim(nlayer).eqv..false. ) solid = .false.
+-
+-     end if
+-
+- end subroutine earth_nlayers
+- 
+- subroutine earth_nlayers_viscoelas(x0,ro,la,mu,GR,solid)
+- use lnb_param
+-!---------------------------------------
+-! Defines the earth rheology at non-dimensionalized radius x0 and angular frequency freq (global/public variable)
+-
+-    integer                 :: i
+-    double complex   :: la, mu, cst
+-    double precision      :: GR,la0,mu00,ka,mu1,mu2,vi2
+-    double precision      :: x,x0,xx0,ro,vi
+-    logical       :: notfound,solid,burg
+-
+-
+-
+-  call earth_nlayers(x0,ro,la0,mu00,GR,solid)
+-  
+-  x    = x0 * ra
+- do i = 1,nlayer
+- if ((x >= radius(i)).and.(x < radius(i+1))) then
+- vi = vic(i) 
+- vi2 = vic2(i)
+- mu2=muc2(i)
+- burg=burgers(i)
+- end if
+- end do
+-
+-  if (burg.eqv..true.) then
+- mu1=mu00
+-
+- if ((vi*freq) /= 0.d0) then
+-  ka=la0 + 2.d0/3.d0*mu00
+-  !print*,mu1,mu2,vi,vi2
+-   mu=mu1*freq*(freq+mu2/vi2)/((freq+mu2/vi2)*(freq+mu1/vi)+mu1/vi2*freq)
+-  !la=4*la0*mu**2/(2*mu*(3*la0+2*mu)-3*la0*mu)
+-  la=ka-2.d0/3.d0*mu
+-  !print*,freq,mu,la
+- else
+-  mu = mu00
+-  la = la0
+- endif
+-  else
+-   ka = la0 + 2.d0/3.d0*mu00
+-   cst = vi*freq
+-   if (cst /= 0.d0) then
+-  mu = mu00/(1.d0+mu00/cst)
+-  la = (la0 + mu00*ka/cst)/(1.d0 + mu00/cst)
+-   else
+-  mu = mu00
+-  la = la0
+-   endif
+-  endif
+-   
+-  !
+-  !!write(101,*), freq,cst,la0,la,mu00,mu,vi
+-
+- end subroutine earth_nlayers_viscoelas
+- 
+- 
+-
+-
+-end module model
+Index: ../trunk-jpl/src/c/modules/FourierLoveCorex/model.mod
+===================================================================
+--- ../trunk-jpl/src/c/modules/FourierLoveCorex/model.mod	(revision 27145)
++++ ../trunk-jpl/src/c/modules/FourierLoveCorex/model.mod	(nonexistent)
+@@ -1,78 +0,0 @@
+-GFORTRAN module version '10' created from model.f90
+-MD5:a258024f3edabbd9d8f912615daabf3f -- If you edit this, you'll get what you deserve.
+-
+-(() () () () () () () () () () () () () () () () () () () () () () ()
+-() () () ())
+-
+-()
+-
+-()
+-
+-()
+-
+-()
+-
+-()
+-
+-(2 'earth_homogeneous_layers_prembased' 'model' '' 1 ((PROCEDURE
+-UNKNOWN-INTENT MODULE-PROC DECL UNKNOWN 0 0 SUBROUTINE ALWAYS_EXPLICIT)
+-(UNKNOWN 0 0 0 0 UNKNOWN ()) 3 0 (4 5 6 7 8 9 10) () 0 () () () 0 0)
+-11 'earth_nlayers' 'model' '' 1 ((PROCEDURE UNKNOWN-INTENT MODULE-PROC
+-DECL UNKNOWN 0 0 SUBROUTINE) (UNKNOWN 0 0 0 0 UNKNOWN ()) 12 0 (13 14 15
+-16 17 18) () 0 () () () 0 0)
+-19 'earth_nlayers_viscoelas' 'model' '' 1 ((PROCEDURE UNKNOWN-INTENT
+-MODULE-PROC DECL UNKNOWN 0 0 SUBROUTINE) (UNKNOWN 0 0 0 0 UNKNOWN ()) 20
+-0 (21 22 23 24 25 26) () 0 () () () 0 0)
+-27 'model' 'model' '' 1 ((MODULE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN
+-UNKNOWN 0 0) (UNKNOWN 0 0 0 0 UNKNOWN ()) 0 0 () () 0 () () () 0 0)
+-28 'model_init2' 'model' '' 1 ((PROCEDURE UNKNOWN-INTENT MODULE-PROC
+-DECL UNKNOWN 0 0 SUBROUTINE) (UNKNOWN 0 0 0 0 UNKNOWN ()) 29 0 (30) () 0
+-() () () 0 0)
+-4 'radin' '' '' 3 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN
+-0 0 DIMENSION POINTER DUMMY) (REAL 8 0 0 0 REAL ()) 0 0 () (1 0 DEFERRED
+-() ()) 0 () () () 0 0)
+-5 'nl' '' '' 3 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN 0
+-0 DUMMY) (INTEGER 4 0 0 0 INTEGER ()) 0 0 () () 0 () () () 0 0)
+-6 'rot' '' '' 3 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN 0
+-0 DIMENSION POINTER DUMMY) (REAL 8 0 0 0 REAL ()) 0 0 () (1 0 DEFERRED ()
+-()) 0 () () () 0 0)
+-7 'lat' '' '' 3 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN 0
+-0 DIMENSION POINTER DUMMY) (REAL 8 0 0 0 REAL ()) 0 0 () (1 0 DEFERRED ()
+-()) 0 () () () 0 0)
+-8 'mut' '' '' 3 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN 0
+-0 DIMENSION POINTER DUMMY) (REAL 8 0 0 0 REAL ()) 0 0 () (1 0 DEFERRED ()
+-()) 0 () () () 0 0)
+-9 'gr' '' '' 3 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN 0
+-0 DUMMY) (REAL 8 0 0 0 REAL ()) 0 0 () () 0 () () () 0 0)
+-10 'solid' '' '' 3 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN
+-UNKNOWN 0 0 DUMMY) (LOGICAL 4 0 0 0 LOGICAL ()) 0 0 () () 0 () () () 0 0)
+-13 'x0' '' '' 12 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN
+-0 0 DUMMY) (REAL 8 0 0 0 REAL ()) 0 0 () () 0 () () () 0 0)
+-14 'ro' '' '' 12 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN
+-0 0 DUMMY) (REAL 8 0 0 0 REAL ()) 0 0 () () 0 () () () 0 0)
+-15 'la' '' '' 12 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN
+-0 0 DUMMY) (REAL 8 0 0 0 REAL ()) 0 0 () () 0 () () () 0 0)
+-16 'mu' '' '' 12 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN
+-0 0 DUMMY) (REAL 8 0 0 0 REAL ()) 0 0 () () 0 () () () 0 0)
+-17 'gr' '' '' 12 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN
+-0 0 DUMMY) (REAL 8 0 0 0 REAL ()) 0 0 () () 0 () () () 0 0)
+-18 'solid' '' '' 12 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN
+-UNKNOWN 0 0 DUMMY) (LOGICAL 4 0 0 0 LOGICAL ()) 0 0 () () 0 () () () 0 0)
+-21 'x0' '' '' 20 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN
+-0 0 DUMMY) (REAL 8 0 0 0 REAL ()) 0 0 () () 0 () () () 0 0)
+-22 'ro' '' '' 20 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN
+-0 0 DUMMY) (REAL 8 0 0 0 REAL ()) 0 0 () () 0 () () () 0 0)
+-23 'la' '' '' 20 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN
+-0 0 DUMMY) (COMPLEX 8 0 0 0 COMPLEX ()) 0 0 () () 0 () () () 0 0)
+-24 'mu' '' '' 20 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN
+-0 0 DUMMY) (COMPLEX 8 0 0 0 COMPLEX ()) 0 0 () () 0 () () () 0 0)
+-25 'gr' '' '' 20 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN
+-0 0 DUMMY) (REAL 8 0 0 0 REAL ()) 0 0 () () 0 () () () 0 0)
+-26 'solid' '' '' 20 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN
+-UNKNOWN 0 0 DUMMY) (LOGICAL 4 0 0 0 LOGICAL ()) 0 0 () () 0 () () () 0 0)
+-30 'nbc' '' '' 29 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN
+-0 0 DUMMY) (INTEGER 4 0 0 0 INTEGER ()) 0 0 () () 0 () () () 0 0)
+-)
+-
+-('earth_homogeneous_layers_prembased' 0 2 'earth_nlayers' 0 11
+-'earth_nlayers_viscoelas' 0 19 'model' 0 27 'model_init2' 0 28)
+Index: ../trunk-jpl/src/c/modules/FourierLoveCorex/FourierLoveCorex.cpp
+===================================================================
+--- ../trunk-jpl/src/c/modules/FourierLoveCorex/FourierLoveCorex.cpp	(revision 27145)
++++ ../trunk-jpl/src/c/modules/FourierLoveCorex/FourierLoveCorex.cpp	(nonexistent)
+@@ -1,35 +0,0 @@
+-/*!\file FourierLoveCorex
+- * \brief: core solution module for love analysis. Based on Caron's fortran core. 
+- */
+-
+-#include "./FourierLoveCorex.h"
+-
+-#include "../../classes/classes.h"
+-#include "../../shared/shared.h"
+-#include "../../toolkits/toolkits.h"
+-#include "../InputUpdateFromConstantx/InputUpdateFromConstantx.h"
+-
+-extern "C" { 
+-	int lnb_setup_( IssmDouble* LoveKr, IssmDouble* LoveKi, IssmDouble* LoveHr, IssmDouble* LoveHi, IssmDouble* LoveLr, 
+-		IssmDouble* LoveLi, IssmDouble* LoveKernelsReal, IssmDouble* LoveKernelsImag, 
+-		int* pnfreq, IssmDouble* frequencies, int* psh_nmax, int* psh_nmin, IssmDouble* pg0, 
+-		IssmDouble* pr0, IssmDouble* pmu0,bool* pallow_layer_deletion, int* pforcing_type, bool* pverbosemod,
+-		int* pnumlayers, IssmDouble* radius, IssmDouble* viscosity, IssmDouble* lame_lambda, IssmDouble* lame_mu, 
+-		IssmDouble* burgers_viscosity, IssmDouble* burgers_mu, IssmDouble* density, IssmDouble* isburgers, IssmDouble* issolid);
+-}
+-
+-void FourierLoveCorex( IssmDouble* LoveKr, IssmDouble* LoveKi, IssmDouble* LoveHr, IssmDouble* LoveHi, IssmDouble* LoveLr, 
+-		IssmDouble* LoveLi, IssmDouble* LoveKernelsReal, IssmDouble* LoveKernelsImag, 
+-		int nfreq, IssmDouble* frequencies, int sh_nmax, int sh_nmin, IssmDouble g0, 
+-		IssmDouble r0, IssmDouble mu0,bool allow_layer_deletion, int forcing_type, bool verbosemod,
+-		int numlayers, IssmDouble* radius, IssmDouble* viscosity, IssmDouble* lame_lambda, IssmDouble* lame_mu, 
+-		IssmDouble* burgers_viscosity, IssmDouble* burgers_mu, IssmDouble* density, IssmDouble* isburgers, IssmDouble* issolid){
+-
+-	/*Call fortran driver: */
+-	lnb_setup_(  LoveKr,  LoveKi,  LoveHr,  LoveHi,  LoveLr, 
+-		 LoveLi, LoveKernelsReal, LoveKernelsImag, 
+-		 &nfreq,  frequencies,  &sh_nmax,  &sh_nmin, &g0,  
+-		 &r0,  &mu0, &allow_layer_deletion, &forcing_type, &verbosemod,
+-		 &numlayers,  radius,  viscosity,  lame_lambda,  lame_mu, 
+-		 burgers_viscosity,  burgers_mu,  density,  isburgers,  issolid);
+-}
+Index: ../trunk-jpl/src/c/modules/FourierLoveCorex/lnb_param.f90
+===================================================================
+--- ../trunk-jpl/src/c/modules/FourierLoveCorex/lnb_param.f90	(revision 27145)
++++ ../trunk-jpl/src/c/modules/FourierLoveCorex/lnb_param.f90	(nonexistent)
+@@ -1,35 +0,0 @@
+-module lnb_param
+-
+- implicit none
+- 
+- public 
+-
+- !Physical Constants
+- double precision, parameter :: GG = 6.67259e-11! gravitational constant
+- double precision :: ra,rb,rc ! radii of the surface, CMB and ICB
+- double precision :: pi,ro_mean,go_surf,go_icb,go_cmb !some constants
+- ! GG --> gravitational constant
+- ! ra, rb, rc --> Surface, CMB and ICB radius
+- ! ro_mean --> mean density of the planet 
+- ! go_surf --> mean surface gravity
+- ! go_icb/cmb --> gravity at the Inner Core/Core-Mantle Boundary
+- double precision   :: mu0,go0,r0 !3 normalization constants
+-
+-!Numerical Constants
+- double precision :: epsdb, layerrap !used in detecting underflows in the lovenb integration
+- double complex     :: valini,freq ! integration constant and angular frequency being processed
+- logical :: allow_layer_del,display, benchmark_spada !do we allow deletion of layers in case of underflow, enable some prints in terminal
+-
+-!GIA problem setup
+- integer :: deg,ifmin,ifmax ! deg=SH degree, ifmin/ifmax=which kind of forcing is applied (usually we want loading)
+- logical :: incompressible !choose which mode of calculation is activated
+-
+-!Earth Model 
+- integer :: nfreq, degmax, degmin
+- integer :: nlayer! number of layers
+- double precision, dimension(:), pointer :: roc,lac,muc,vic,vic2,muc2 ! Earth layers parameters
+- double precision, dimension(:), pointer :: radius ! Earth layers parameters
+- double precision :: vicratio,mucratio !2 Burgers long-term to short-term ratios
+- logical, dimension(:), pointer :: soliddim,radbc,burgers ! is this layer solid (if not it's liquid), does it have specific boundary conditions and does it have a Burgers rheology (if not, it uses Maxwell)
+- 
+-end module lnb_param
+Index: ../trunk-jpl/src/c/modules/FourierLoveCorex/FourierLoveCorex.h
+===================================================================
+--- ../trunk-jpl/src/c/modules/FourierLoveCorex/FourierLoveCorex.h	(revision 27145)
++++ ../trunk-jpl/src/c/modules/FourierLoveCorex/FourierLoveCorex.h	(nonexistent)
+@@ -1,18 +0,0 @@
+-/*!\file:  FourierLoveCorex.h
+- * \brief header file for ...
+- */ 
+-
+-#ifndef _FOURIERLOVECOREX_H
+-#define _FOURIERLOVECOREX_H
+-
+-#include "../../classes/classes.h"
+-
+-/* local prototypes: */
+-void FourierLoveCorex( IssmDouble* LoveKr, IssmDouble* LoveKi, IssmDouble* LoveHr, IssmDouble* LoveHi, IssmDouble* LoveLr, 
+-		IssmDouble* LoveLi, IssmDouble* LoveKernelsReal, IssmDouble* LoveKernelsImag, 
+-		int nfreq, IssmDouble* frequencies, int sh_nmax, int sh_nmin, IssmDouble g0, 
+-		IssmDouble r0, IssmDouble mu0,bool allow_layer_deletion, int forcing_type, bool verbosemod, 
+-		int numlayers, IssmDouble* radius, IssmDouble* viscosity,IssmDouble* lame_lambda, IssmDouble* lame_mu, 
+-		IssmDouble* burgers_viscosity, IssmDouble* burgers_mu, IssmDouble* density,IssmDouble* isburgers, IssmDouble* issolid);
+-
+-#endif  /* _FOURIERLOVECOREX_H */
+Index: ../trunk-jpl/src/c/modules/FourierLoveCorex/lnb_param.mod
+===================================================================
+--- ../trunk-jpl/src/c/modules/FourierLoveCorex/lnb_param.mod	(revision 27145)
++++ ../trunk-jpl/src/c/modules/FourierLoveCorex/lnb_param.mod	(nonexistent)
+@@ -1,141 +0,0 @@
+-GFORTRAN module version '10' created from lnb_param.f90
+-MD5:07349d97d2b98213e660e1a97b540f41 -- If you edit this, you'll get what you deserve.
+-
+-(() () () () () () () () () () () () () () () () () () () () () () () ()
+-() () ())
+-
+-()
+-
+-()
+-
+-()
+-
+-()
+-
+-()
+-
+-(2 '__convert_r4_r8' '(intrinsic)' '' 1 ((PROCEDURE UNKNOWN-INTENT
+-UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 FUNCTION ELEMENTAL PURE) (REAL 8 0 0 0
+-REAL ()) 0 0 () () 2 () () () 0 0)
+-3 'allow_layer_del' 'lnb_param' '' 1 ((VARIABLE UNKNOWN-INTENT
+-UNKNOWN-PROC UNKNOWN IMPLICIT-SAVE 0 0) (LOGICAL 4 0 0 0 LOGICAL ()) 0 0
+-() () 0 () () () 0 0)
+-4 'benchmark_spada' 'lnb_param' '' 1 ((VARIABLE UNKNOWN-INTENT
+-UNKNOWN-PROC UNKNOWN IMPLICIT-SAVE 0 0) (LOGICAL 4 0 0 0 LOGICAL ()) 0 0
+-() () 0 () () () 0 0)
+-5 'burgers' 'lnb_param' '' 1 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC
+-UNKNOWN IMPLICIT-SAVE 0 0 DIMENSION POINTER) (LOGICAL 4 0 0 0 LOGICAL ())
+-0 0 () (1 0 DEFERRED () ()) 0 () () () 0 0)
+-6 'deg' 'lnb_param' '' 1 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN
+-IMPLICIT-SAVE 0 0) (INTEGER 4 0 0 0 INTEGER ()) 0 0 () () 0 () () () 0 0)
+-7 'degmax' 'lnb_param' '' 1 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC
+-UNKNOWN IMPLICIT-SAVE 0 0) (INTEGER 4 0 0 0 INTEGER ()) 0 0 () () 0 () ()
+-() 0 0)
+-8 'degmin' 'lnb_param' '' 1 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC
+-UNKNOWN IMPLICIT-SAVE 0 0) (INTEGER 4 0 0 0 INTEGER ()) 0 0 () () 0 () ()
+-() 0 0)
+-9 'display' 'lnb_param' '' 1 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC
+-UNKNOWN IMPLICIT-SAVE 0 0) (LOGICAL 4 0 0 0 LOGICAL ()) 0 0 () () 0 () ()
+-() 0 0)
+-10 'epsdb' 'lnb_param' '' 1 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC
+-UNKNOWN IMPLICIT-SAVE 0 0) (REAL 8 0 0 0 REAL ()) 0 0 () () 0 () () () 0
+-0)
+-11 'freq' 'lnb_param' '' 1 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC
+-UNKNOWN IMPLICIT-SAVE 0 0) (COMPLEX 8 0 0 0 COMPLEX ()) 0 0 () () 0 () ()
+-() 0 0)
+-12 'gg' 'lnb_param' '' 1 ((PARAMETER UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN
+-IMPLICIT-SAVE 0 0) (REAL 8 0 0 0 REAL ()) 0 0 () (CONSTANT (REAL 8 0 0 0
+-REAL ()) 0 '0.495dac00000000@-8') () 0 () () () 0 0)
+-13 'go0' 'lnb_param' '' 1 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN
+-IMPLICIT-SAVE 0 0) (REAL 8 0 0 0 REAL ()) 0 0 () () 0 () () () 0 0)
+-14 'go_cmb' 'lnb_param' '' 1 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC
+-UNKNOWN IMPLICIT-SAVE 0 0) (REAL 8 0 0 0 REAL ()) 0 0 () () 0 () () () 0
+-0)
+-15 'go_icb' 'lnb_param' '' 1 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC
+-UNKNOWN IMPLICIT-SAVE 0 0) (REAL 8 0 0 0 REAL ()) 0 0 () () 0 () () () 0
+-0)
+-16 'go_surf' 'lnb_param' '' 1 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC
+-UNKNOWN IMPLICIT-SAVE 0 0) (REAL 8 0 0 0 REAL ()) 0 0 () () 0 () () () 0
+-0)
+-17 'ifmax' 'lnb_param' '' 1 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC
+-UNKNOWN IMPLICIT-SAVE 0 0) (INTEGER 4 0 0 0 INTEGER ()) 0 0 () () 0 () ()
+-() 0 0)
+-18 'ifmin' 'lnb_param' '' 1 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC
+-UNKNOWN IMPLICIT-SAVE 0 0) (INTEGER 4 0 0 0 INTEGER ()) 0 0 () () 0 () ()
+-() 0 0)
+-19 'incompressible' 'lnb_param' '' 1 ((VARIABLE UNKNOWN-INTENT
+-UNKNOWN-PROC UNKNOWN IMPLICIT-SAVE 0 0) (LOGICAL 4 0 0 0 LOGICAL ()) 0 0
+-() () 0 () () () 0 0)
+-20 'lac' 'lnb_param' '' 1 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN
+-IMPLICIT-SAVE 0 0 DIMENSION POINTER) (REAL 8 0 0 0 REAL ()) 0 0 () (1 0
+-DEFERRED () ()) 0 () () () 0 0)
+-21 'layerrap' 'lnb_param' '' 1 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC
+-UNKNOWN IMPLICIT-SAVE 0 0) (REAL 8 0 0 0 REAL ()) 0 0 () () 0 () () () 0
+-0)
+-22 'lnb_param' 'lnb_param' '' 1 ((MODULE UNKNOWN-INTENT UNKNOWN-PROC
+-UNKNOWN UNKNOWN 0 0) (UNKNOWN 0 0 0 0 UNKNOWN ()) 0 0 () () 0 () () () 0
+-0)
+-23 'mu0' 'lnb_param' '' 1 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN
+-IMPLICIT-SAVE 0 0) (REAL 8 0 0 0 REAL ()) 0 0 () () 0 () () () 0 0)
+-24 'muc' 'lnb_param' '' 1 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN
+-IMPLICIT-SAVE 0 0 DIMENSION POINTER) (REAL 8 0 0 0 REAL ()) 0 0 () (1 0
+-DEFERRED () ()) 0 () () () 0 0)
+-25 'muc2' 'lnb_param' '' 1 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC
+-UNKNOWN IMPLICIT-SAVE 0 0 DIMENSION POINTER) (REAL 8 0 0 0 REAL ()) 0 0
+-() (1 0 DEFERRED () ()) 0 () () () 0 0)
+-26 'mucratio' 'lnb_param' '' 1 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC
+-UNKNOWN IMPLICIT-SAVE 0 0) (REAL 8 0 0 0 REAL ()) 0 0 () () 0 () () () 0
+-0)
+-27 'nfreq' 'lnb_param' '' 1 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC
+-UNKNOWN IMPLICIT-SAVE 0 0) (INTEGER 4 0 0 0 INTEGER ()) 0 0 () () 0 () ()
+-() 0 0)
+-28 'nlayer' 'lnb_param' '' 1 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC
+-UNKNOWN IMPLICIT-SAVE 0 0) (INTEGER 4 0 0 0 INTEGER ()) 0 0 () () 0 () ()
+-() 0 0)
+-29 'pi' 'lnb_param' '' 1 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN
+-IMPLICIT-SAVE 0 0) (REAL 8 0 0 0 REAL ()) 0 0 () () 0 () () () 0 0)
+-30 'r0' 'lnb_param' '' 1 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN
+-IMPLICIT-SAVE 0 0) (REAL 8 0 0 0 REAL ()) 0 0 () () 0 () () () 0 0)
+-31 'ra' 'lnb_param' '' 1 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN
+-IMPLICIT-SAVE 0 0) (REAL 8 0 0 0 REAL ()) 0 0 () () 0 () () () 0 0)
+-32 'radbc' 'lnb_param' '' 1 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC
+-UNKNOWN IMPLICIT-SAVE 0 0 DIMENSION POINTER) (LOGICAL 4 0 0 0 LOGICAL ())
+-0 0 () (1 0 DEFERRED () ()) 0 () () () 0 0)
+-33 'radius' 'lnb_param' '' 1 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC
+-UNKNOWN IMPLICIT-SAVE 0 0 DIMENSION POINTER) (REAL 8 0 0 0 REAL ()) 0 0
+-() (1 0 DEFERRED () ()) 0 () () () 0 0)
+-34 'rb' 'lnb_param' '' 1 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN
+-IMPLICIT-SAVE 0 0) (REAL 8 0 0 0 REAL ()) 0 0 () () 0 () () () 0 0)
+-35 'rc' 'lnb_param' '' 1 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN
+-IMPLICIT-SAVE 0 0) (REAL 8 0 0 0 REAL ()) 0 0 () () 0 () () () 0 0)
+-36 'ro_mean' 'lnb_param' '' 1 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC
+-UNKNOWN IMPLICIT-SAVE 0 0) (REAL 8 0 0 0 REAL ()) 0 0 () () 0 () () () 0
+-0)
+-37 'roc' 'lnb_param' '' 1 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN
+-IMPLICIT-SAVE 0 0 DIMENSION POINTER) (REAL 8 0 0 0 REAL ()) 0 0 () (1 0
+-DEFERRED () ()) 0 () () () 0 0)
+-38 'soliddim' 'lnb_param' '' 1 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC
+-UNKNOWN IMPLICIT-SAVE 0 0 DIMENSION POINTER) (LOGICAL 4 0 0 0 LOGICAL ())
+-0 0 () (1 0 DEFERRED () ()) 0 () () () 0 0)
+-39 'valini' 'lnb_param' '' 1 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC
+-UNKNOWN IMPLICIT-SAVE 0 0) (COMPLEX 8 0 0 0 COMPLEX ()) 0 0 () () 0 () ()
+-() 0 0)
+-40 'vic' 'lnb_param' '' 1 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN
+-IMPLICIT-SAVE 0 0 DIMENSION POINTER) (REAL 8 0 0 0 REAL ()) 0 0 () (1 0
+-DEFERRED () ()) 0 () () () 0 0)
+-41 'vic2' 'lnb_param' '' 1 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC
+-UNKNOWN IMPLICIT-SAVE 0 0 DIMENSION POINTER) (REAL 8 0 0 0 REAL ()) 0 0
+-() (1 0 DEFERRED () ()) 0 () () () 0 0)
+-42 'vicratio' 'lnb_param' '' 1 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC
+-UNKNOWN IMPLICIT-SAVE 0 0) (REAL 8 0 0 0 REAL ()) 0 0 () () 0 () () () 0
+-0)
+-)
+-
+-('__convert_r4_r8' 0 2 'allow_layer_del' 0 3 'benchmark_spada' 0 4
+-'burgers' 0 5 'deg' 0 6 'degmax' 0 7 'degmin' 0 8 'display' 0 9 'epsdb'
+-0 10 'freq' 0 11 'gg' 0 12 'go0' 0 13 'go_cmb' 0 14 'go_icb' 0 15
+-'go_surf' 0 16 'ifmax' 0 17 'ifmin' 0 18 'incompressible' 0 19 'lac' 0
+-20 'layerrap' 0 21 'lnb_param' 0 22 'mu0' 0 23 'muc' 0 24 'muc2' 0 25
+-'mucratio' 0 26 'nfreq' 0 27 'nlayer' 0 28 'pi' 0 29 'r0' 0 30 'ra' 0 31
+-'radbc' 0 32 'radius' 0 33 'rb' 0 34 'rc' 0 35 'ro_mean' 0 36 'roc' 0 37
+-'soliddim' 0 38 'valini' 0 39 'vic' 0 40 'vic2' 0 41 'vicratio' 0 42)
+Index: ../trunk-jpl/src/c/modules/FourierLoveCorex
+===================================================================
+--- ../trunk-jpl/src/c/modules/FourierLoveCorex	(revision 27145)
++++ ../trunk-jpl/src/c/modules/FourierLoveCorex	(nonexistent)
+
+Property changes on: ../trunk-jpl/src/c/modules/FourierLoveCorex
+___________________________________________________________________
+Deleted: svn:ignore
+## -1,2 +0,0 ##
+-.deps
+-.dirstamp
+Index: ../trunk-jpl/src/c/modules/modules.h
+===================================================================
+--- ../trunk-jpl/src/c/modules/modules.h	(revision 27145)
++++ ../trunk-jpl/src/c/modules/modules.h	(revision 27146)
+@@ -32,7 +32,6 @@
+ #include "./GetVectorFromInputsx/GetVectorFromInputsx.h"
+ #include "./GetVectorFromControlInputsx/GetVectorFromControlInputsx.h"
+ #include "./GiaDeflectionCorex/GiaDeflectionCorex.h"
+-#include "./FourierLoveCorex/FourierLoveCorex.h"
+ #include "./SetControlInputsFromVectorx/SetControlInputsFromVectorx.h"
+ #include "./SetActiveNodesLSMx/SetActiveNodesLSMx.h"
+ #include "./Gradjx/Gradjx.h"
Index: /issm/oecreview/Archive/27032-27229/ISSM-27146-27147.diff
===================================================================
--- /issm/oecreview/Archive/27032-27229/ISSM-27146-27147.diff	(revision 27230)
+++ /issm/oecreview/Archive/27032-27229/ISSM-27146-27147.diff	(revision 27230)
@@ -0,0 +1,41 @@
+Index: ../trunk-jpl/src/m/mesh/ComputeHessian.py
+===================================================================
+--- ../trunk-jpl/src/m/mesh/ComputeHessian.py	(revision 27146)
++++ ../trunk-jpl/src/m/mesh/ComputeHessian.py	(revision 27147)
+@@ -38,11 +38,11 @@
+     areas = GetAreas(index, x, y)
+ 
+     #compute weights that hold the volume of all the element holding the node i
+-    weights = m.sparse(line, np.ones((linesize, 1), dtype=int), np.tile(areas, (3, 1)), numberofnodes, 1)
++    weights = m.sparse(line, np.ones((linesize, 1), dtype=int), np.tile(areas, (1, 3)), numberofnodes, 1)
+ 
+     #compute field on nodes if on elements
+     if np.size(field, axis=0) == numberofelements:
+-        field = m.sparse(line, np.ones((linesize, 1), dtype=int), np.tile(areas * field, (3, 1)), numberofnodes, 1) / weights
++        field = m.sparse(line, np.ones((linesize, 1), dtype=int), np.tile(areas * field, (1, 3)), numberofnodes, 1) / weights
+ 
+     #Compute gradient for each element
+     grad_elx = np.sum(field[index - 1] * alpha, axis=1)
+@@ -49,8 +49,8 @@
+     grad_ely = np.sum(field[index - 1] * beta, axis=1)
+ 
+     #Compute gradient for each node (average of the elements around)
+-    gradx = m.sparse(line, np.ones((linesize, 1), dtype=int), np.tile((areas * grad_elx), (3, 1)), numberofnodes, 1)
+-    grady = m.sparse(line, np.ones((linesize, 1), dtype=int), np.tile((areas * grad_ely), (3, 1)), numberofnodes, 1)
++    gradx = m.sparse(line, np.ones((linesize, 1), dtype=int), np.tile((areas * grad_elx), (1, 3)), numberofnodes, 1)
++    grady = m.sparse(line, np.ones((linesize, 1), dtype=int), np.tile((areas * grad_ely), (1, 3)), numberofnodes, 1)
+     gradx = gradx / weights
+     grady = grady / weights
+ 
+@@ -59,8 +59,8 @@
+ 
+     if m.strcmpi(type, 'node'):
+         #Compute Hessian on the nodes (average of the elements around)
+-        hessian = np.hstack((m.sparse(line, np.ones((linesize, 1), dtype=int), np.tile((areas * hessian[:, 0]), (3, 1)), numberofnodes, 1) / weights,
+-                             m.sparse(line, np.ones((linesize, 1), dtype=int), np.tile((areas * hessian[:, 1]), (3, 1)), numberofnodes, 1) / weights,
+-                             m.sparse(line, np.ones((linesize, 1), dtype=int), np.tile((areas * hessian[:, 2]), (3, 1)), numberofnodes, 1) / weights))
++        hessian = np.hstack((m.sparse(line, np.ones((linesize, 1), dtype=int), np.tile((areas * hessian[:, 0]), (1, 3)), numberofnodes, 1) / weights,
++                             m.sparse(line, np.ones((linesize, 1), dtype=int), np.tile((areas * hessian[:, 1]), (1, 3)), numberofnodes, 1) / weights,
++                             m.sparse(line, np.ones((linesize, 1), dtype=int), np.tile((areas * hessian[:, 2]), (1, 3)), numberofnodes, 1) / weights))
+ 
+     return hessian
Index: /issm/oecreview/Archive/27032-27229/ISSM-27147-27148.diff
===================================================================
--- /issm/oecreview/Archive/27032-27229/ISSM-27147-27148.diff	(revision 27230)
+++ /issm/oecreview/Archive/27032-27229/ISSM-27147-27148.diff	(revision 27230)
@@ -0,0 +1,276 @@
+Index: ../trunk-jpl/packagers/mac/package-issm-mac-binaries-matlab.sh
+===================================================================
+--- ../trunk-jpl/packagers/mac/package-issm-mac-binaries-matlab.sh	(revision 27147)
++++ ../trunk-jpl/packagers/mac/package-issm-mac-binaries-matlab.sh	(revision 27148)
+@@ -144,7 +144,7 @@
+ 	${MATLAB_PATH}/bin/matlab -nojvm -nosplash -nojvm -r "try, addpath ${ISSM_DIR}/bin ${ISSM_DIR}/lib ${ISSM_DIR}/share; runme(${MATLAB_NROPTIONS}); exit; catch me,fprintf('%s',getReport(me)); exit; end" &> matlab.log
+ 
+ 	# Check that MATLAB did not exit in error
+-	matlabExitedInError=`grep -E "Activation cannot proceed|Error in matlab_run|Illegal use of reserved keyword" matlab.log | wc -l`
++	matlabExitedInError=`grep -c -E "Activation cannot proceed|Error in matlab_run|Illegal use of reserved keyword" matlab.log`
+ 
+ 	if [ ${matlabExitedInError} -ne 0 ]; then
+ 		echo "----------MATLAB exited in error!----------"
+@@ -158,10 +158,12 @@
+ 	fi
+ 
+ 	# Check that all tests passed
+-	numTestsFailed=`grep -E "FAILED|ERROR" matlab.log | wc -l`
++	sed -i '' "/FAILED TO establish the default connection to the WindowServer/d" matlab.log # First, need to remove WindowServer error message
++	numTestsFailed=`grep -c -E "FAILED|ERROR" matlab.log`
+ 
+ 	if [ ${numTestsFailed} -ne 0 ]; then
+ 		echo "One or more tests FAILED"
++		cat matlab.log
+ 		exit 1
+ 	else
+ 		echo "All tests PASSED"
+@@ -174,7 +176,7 @@
+ cd ${ISSM_DIR}
+ svn cleanup --remove-ignored --remove-unversioned test # Clean up test directory (before copying to package)
+ echo "Copying assets to package: ${PKG}"
+-cp -rf bin examples lib scripts test ${PKG}
++cp -rf bin examples lib scripts share test ${PKG}
+ mkdir ${PKG}/execution
+ cp packagers/mac/issm-executable_entitlements.plist ${PKG}/bin/entitlements.plist
+ echo "Cleaning up unneeded/unwanted files"
+Index: ../trunk-jpl/packagers/mac/package-issm-mac-binaries-python-2.sh
+===================================================================
+--- ../trunk-jpl/packagers/mac/package-issm-mac-binaries-python-2.sh	(revision 27147)
++++ ../trunk-jpl/packagers/mac/package-issm-mac-binaries-python-2.sh	(revision 27148)
+@@ -142,7 +142,7 @@
+ 
+ 	# Check that Python did not exit in error
+ 	pythonExitCode=`echo $?`
+-	pythonExitedInError=`grep -E "Error|Standard exception|Traceback|bad interpreter" python.log | wc -l`
++	pythonExitedInError=`grep -c -E "Error|Standard exception|Traceback|bad interpreter" python.log`
+ 
+ 	if [[ ${pythonExitCode} -ne 0 || ${pythonExitedInError} -ne 0 ]]; then
+ 		echo "----------Python exited in error!----------"
+@@ -156,10 +156,12 @@
+ 	fi
+ 
+ 	# Check that all tests passed
+-	numTestsFailed=`grep -E "FAILED|ERROR" python.log | wc -l`
++	sed -i '' "/FAILED TO establish the default connection to the WindowServer/d" python.log # First, need to remove WindowServer error message
++	numTestsFailed=`grep -c -E "FAILED|ERROR" python.log`
+ 
+ 	if [ ${numTestsFailed} -ne 0 ]; then
+ 		echo "One or more tests FAILED"
++		cat python.log
+ 		exit 1
+ 	else
+ 		echo "All tests PASSED"
+@@ -172,7 +174,7 @@
+ cd ${ISSM_DIR}
+ svn cleanup --remove-ignored --remove-unversioned test # Clean up test directory (before copying to package)
+ echo "Copying assets to package: ${PKG}"
+-cp -rf bin examples lib scripts test ${PKG}
++cp -rf bin examples lib scripts share test ${PKG}
+ mkdir ${PKG}/execution
+ cp packagers/mac/issm-executable_entitlements.plist ${PKG}/bin/entitlements.plist
+ ${ISSM_DIR}/scripts/py_to_pyc.sh ${PKG}/bin # Compile Python source files
+Index: ../trunk-jpl/packagers/mac/package-issm-mac-binaries-python-3.sh
+===================================================================
+--- ../trunk-jpl/packagers/mac/package-issm-mac-binaries-python-3.sh	(revision 27147)
++++ ../trunk-jpl/packagers/mac/package-issm-mac-binaries-python-3.sh	(revision 27148)
+@@ -145,7 +145,7 @@
+ 
+ 	# Check that Python did not exit in error
+ 	pythonExitCode=`echo $?`
+-	pythonExitedInError=`grep -E "Error|Standard exception|Traceback|bad interpreter" python.log | wc -l`
++	pythonExitedInError=`grep -c -E "Error|Standard exception|Traceback|bad interpreter" python.log`
+ 
+ 	if [[ ${pythonExitCode} -ne 0 || ${pythonExitedInError} -ne 0 ]]; then
+ 		echo "----------Python exited in error!----------"
+@@ -159,10 +159,12 @@
+ 	fi
+ 
+ 	# Check that all tests passed
+-	numTestsFailed=`grep -E "FAILED|ERROR" python.log | wc -l`
++	sed -i '' "/FAILED TO establish the default connection to the WindowServer/d" python.log # First, need to remove WindowServer error message
++	numTestsFailed=`grep -c -E "FAILED|ERROR" python.log`
+ 
+ 	if [ ${numTestsFailed} -ne 0 ]; then
+ 		echo "One or more tests FAILED"
++		cat python.log
+ 		exit 1
+ 	else
+ 		echo "All tests PASSED"
+@@ -175,7 +177,7 @@
+ cd ${ISSM_DIR}
+ svn cleanup --remove-ignored --remove-unversioned test # Clean up test directory (before copying to package)
+ echo "Copying assets to package: ${PKG}"
+-cp -rf bin examples lib scripts test ${PKG}
++cp -rf bin examples lib scripts share test ${PKG}
+ mkdir ${PKG}/execution
+ cp packagers/mac/issm-executable_entitlements.plist ${PKG}/bin/entitlements.plist
+ ${ISSM_DIR}/scripts/py_to_pyc.sh ${PKG}/bin # Compile Python source files
+Index: ../trunk-jpl/packagers/mac/test-issm-mac-binaries-matlab.sh
+===================================================================
+--- ../trunk-jpl/packagers/mac/test-issm-mac-binaries-matlab.sh	(revision 27147)
++++ ../trunk-jpl/packagers/mac/test-issm-mac-binaries-matlab.sh	(revision 27148)
+@@ -33,7 +33,7 @@
+ 
+ # Check that MATLAB did not exit in error
+ matlabExitCode=`echo $?`
+-matlabExitedInError=`grep -E "Activation cannot proceed|license|Error|Warning: Name is nonexistent or not a directory" matlab.log | wc -l`
++matlabExitedInError=`grep -c -E "Activation cannot proceed|license|Error|Warning: Name is nonexistent or not a directory" matlab.log`
+ 
+ if [[ ${matlabExitCode} -ne 0 || ${matlabExitedInError} -ne 0 ]]; then
+ 	echo "----------MATLAB exited in error!----------"
+@@ -44,7 +44,7 @@
+ fi
+ 
+ # Check that all tests passed
+-numTestsFailed=`cat matlab.log | grep -c -e "FAILED|ERROR"`
++numTestsFailed=`grep -c -E "FAILED|ERROR" matlab.log`
+ 
+ if [[ ${numTestsFailed} -ne 0 ]]; then
+ 	echo "One or more tests FAILED"
+Index: ../trunk-jpl/packagers/mac/test-issm-mac-binaries-python-2.sh
+===================================================================
+--- ../trunk-jpl/packagers/mac/test-issm-mac-binaries-python-2.sh	(revision 27147)
++++ ../trunk-jpl/packagers/mac/test-issm-mac-binaries-python-2.sh	(revision 27148)
+@@ -33,7 +33,7 @@
+ 
+ # Check that Python did not exit in error
+ pythonExitCode=`echo $?`
+-pythonExitedInError=`grep -E "runme.py: error" python.log | wc -l`
++pythonExitedInError=`grep -c -E "runme.py: error" python.log`
+ 
+ if [[ ${pythonExitCode} -ne 0 || ${pythonExitedInError} -ne 0 ]]; then
+ 	echo "----------Python exited in error!----------"
+@@ -43,7 +43,7 @@
+ fi
+ 
+ # Check that all tests passed
+-numTestsFailed=`cat python.log | grep -c -e "FAILED|ERROR"`
++numTestsFailed=`grep -c -E "FAILED|ERROR" python.log`
+ 
+ if [[ ${numTestsFailed} -ne 0 ]]; then
+ 	echo "One or more tests FAILED"
+Index: ../trunk-jpl/packagers/mac/test-issm-mac-binaries-python-3.sh
+===================================================================
+--- ../trunk-jpl/packagers/mac/test-issm-mac-binaries-python-3.sh	(revision 27147)
++++ ../trunk-jpl/packagers/mac/test-issm-mac-binaries-python-3.sh	(revision 27148)
+@@ -33,7 +33,7 @@
+ 
+ # Check that Python did not exit in error
+ pythonExitCode=`echo $?`
+-pythonExitedInError=`grep -E "runme.py: error" python.log | wc -l`
++pythonExitedInError=`grep -c -E "runme.py: error" python.log`
+ 
+ if [[ ${pythonExitCode} -ne 0 || ${pythonExitedInError} -ne 0 ]]; then
+ 	echo "----------Python exited in error!----------"
+@@ -43,7 +43,7 @@
+ fi
+ 
+ # Check that all tests passed
+-numTestsFailed=`cat python.log | grep -c -e "FAILED|ERROR"`
++numTestsFailed=`grep -c -E "FAILED|ERROR" python.log`
+ 
+ if [[ ${numTestsFailed} -ne 0 ]]; then
+ 	echo "One or more tests FAILED"
+Index: ../trunk-jpl/packagers/linux/package-issm-linux-binaries-matlab.sh
+===================================================================
+--- ../trunk-jpl/packagers/linux/package-issm-linux-binaries-matlab.sh	(revision 27147)
++++ ../trunk-jpl/packagers/linux/package-issm-linux-binaries-matlab.sh	(revision 27148)
+@@ -130,7 +130,7 @@
+ 	${MATLAB_PATH}/bin/matlab -nojvm -nosplash -nojvm -r "try, addpath ${ISSM_DIR}/bin ${ISSM_DIR}/lib ${ISSM_DIR}/share; runme(${MATLAB_NROPTIONS}); exit; catch me,fprintf('%s',getReport(me)); exit; end" &> matlab.log
+ 
+ 	# Check that MATLAB did not exit in error
+-	matlabExitedInError=`grep -E "Activation cannot proceed|Error in matlab_run|Illegal use of reserved keyword|Invalid MEX-file" matlab.log | wc -l`
++	matlabExitedInError=`grep -c -E "Activation cannot proceed|Error in matlab_run|Illegal use of reserved keyword|Invalid MEX-file" matlab.log`
+ 
+ 	if [ ${matlabExitedInError} -ne 0 ]; then
+ 		echo "----------MATLAB exited in error!----------"
+@@ -144,7 +144,8 @@
+ 	fi
+ 
+ 	# Check that all tests passed
+-	numTestsFailed=`grep -E "FAILED|ERROR" matlab.log | wc -l`
++	sed -i '' "/FAILED TO establish the default connection to the WindowServer/d" matlab.log # First, need to remove WindowServer error message
++	numTestsFailed=`grep -c -E "FAILED|ERROR" matlab.log`
+ 
+ 	if [ ${numTestsFailed} -ne 0 ]; then
+ 		echo "One or more tests FAILED"
+@@ -161,7 +162,7 @@
+ cd ${ISSM_DIR}
+ svn cleanup --remove-ignored --remove-unversioned test # Clean up test directory (before copying to package)
+ echo "Copying assets to package: ${PKG}"
+-cp -rf bin examples lib scripts test ${PKG}
++cp -rf bin examples lib scripts share test ${PKG}
+ mkdir ${PKG}/execution
+ echo "Cleaning up unneeded/unwanted files"
+ rm -f ${PKG}/bin/generic_static.* # Remove static versions of generic cluster classes
+Index: ../trunk-jpl/packagers/linux/package-issm-linux-binaries-python-2.sh
+===================================================================
+--- ../trunk-jpl/packagers/linux/package-issm-linux-binaries-python-2.sh	(revision 27147)
++++ ../trunk-jpl/packagers/linux/package-issm-linux-binaries-python-2.sh	(revision 27148)
+@@ -129,7 +129,7 @@
+ 
+ 	# Check that Python did not exit in error
+ 	pythonExitCode=`echo $?`
+-	pythonExitedInError=`grep -E "Error|Standard exception|Traceback|bad interpreter" python.log | wc -l`
++	pythonExitedInError=`grep -c -E "Error|Standard exception|Traceback|bad interpreter" python.log`
+ 
+ 	if [[ ${pythonExitCode} -ne 0 || ${pythonExitedInError} -ne 0 ]]; then
+ 		echo "----------Python exited in error!----------"
+@@ -143,11 +143,12 @@
+ 	fi
+ 
+ 	# Check that all tests passed
+-	numTestsFailed=`grep -E "FAILED|ERROR" python.log | wc -l`
++	sed -i '' "/FAILED TO establish the default connection to the WindowServer/d" python.log # First, need to remove WindowServer error message
++	numTestsFailed=`grep -c -E "FAILED|ERROR" python.log`
+ 
+ 	if [[ ${numTestsFailed} -ne 0 ]]; then
+-			echo "One or more tests FAILED"
+-			cat python.log
++		echo "One or more tests FAILED"
++		cat python.log
+ 		exit 1
+ 	else
+ 		echo "All tests PASSED"
+@@ -160,7 +161,7 @@
+ cd ${ISSM_DIR}
+ svn cleanup --remove-ignored --remove-unversioned test # Clean up test directory (before copying to package)
+ echo "Copying assets to package: ${PKG}"
+-cp -rf bin examples lib scripts test ${PKG}
++cp -rf bin examples lib scripts share test ${PKG}
+ mkdir ${PKG}/execution
+ ${ISSM_DIR}/scripts/py_to_pyc.sh ${PKG}/bin # Compile Python source files
+ echo "Cleaning up unneeded/unwanted files"
+Index: ../trunk-jpl/packagers/linux/package-issm-linux-binaries-python-3.sh
+===================================================================
+--- ../trunk-jpl/packagers/linux/package-issm-linux-binaries-python-3.sh	(revision 27147)
++++ ../trunk-jpl/packagers/linux/package-issm-linux-binaries-python-3.sh	(revision 27148)
+@@ -132,7 +132,7 @@
+ 
+ 	# Check that Python did not exit in error
+ 	pythonExitCode=`echo $?`
+-	pythonExitedInError=`grep -E "Error|Standard exception|Traceback|bad interpreter" python.log | wc -l`
++	pythonExitedInError=`grep -c -E "Error|Standard exception|Traceback|bad interpreter" python.log`
+ 
+ 	if [[ ${pythonExitCode} -ne 0 || ${pythonExitedInError} -ne 0 ]]; then
+ 		echo "----------Python exited in error!----------"
+@@ -146,7 +146,8 @@
+ 	fi
+ 
+ 	# Check that all tests passed
+-	numTestsFailed=`grep -E "FAILED|ERROR" python.log | wc -l`
++	sed -i '' "/FAILED TO establish the default connection to the WindowServer/d" python.log # First, need to remove WindowServer error message
++	numTestsFailed=`grep -c -E "FAILED|ERROR" python.log`
+ 
+ 	if [[ ${numTestsFailed} -ne 0 ]]; then
+ 		echo "One or more tests FAILED"
+@@ -163,7 +164,7 @@
+ cd ${ISSM_DIR}
+ svn cleanup --remove-ignored --remove-unversioned test # Clean up test directory (before copying to package)
+ echo "Copying assets to package: ${PKG}"
+-cp -rf bin examples lib scripts test ${PKG}
++cp -rf bin examples lib scripts share test ${PKG}
+ mkdir ${PKG}/execution
+ ${ISSM_DIR}/scripts/py_to_pyc.sh ${PKG}/bin # Compile Python source files
+ echo "Cleaning up unneeded/unwanted files"
Index: /issm/oecreview/Archive/27032-27229/ISSM-27148-27149.diff
===================================================================
--- /issm/oecreview/Archive/27032-27229/ISSM-27148-27149.diff	(revision 27230)
+++ /issm/oecreview/Archive/27032-27229/ISSM-27148-27149.diff	(revision 27230)
@@ -0,0 +1,131 @@
+Index: ../trunk-jpl/externalpackages/gdal/install-3-python.sh
+===================================================================
+--- ../trunk-jpl/externalpackages/gdal/install-3-python.sh	(revision 27148)
++++ ../trunk-jpl/externalpackages/gdal/install-3-python.sh	(revision 27149)
+@@ -34,8 +34,8 @@
+ 	--prefix="${PREFIX}" \
+ 	--enable-fast-install \
+ 	--with-python \
++	--with-hdf5="${HDF5_ROOT}" \
+ 	--with-libz="${ZLIB_ROOT}" \
+-	--with-hdf5="${HDF5_ROOT}" \
+ 	--with-netcdf="${NETCDF_ROOT}" \
+ 	--with-proj="${PROJ_ROOT}"
+ 
+Index: ../trunk-jpl/externalpackages/gdal/install-3.sh
+===================================================================
+--- ../trunk-jpl/externalpackages/gdal/install-3.sh	(revision 27148)
++++ ../trunk-jpl/externalpackages/gdal/install-3.sh	(revision 27149)
+@@ -29,8 +29,8 @@
+ ./configure \
+ 	--prefix="${PREFIX}" \
+ 	--enable-fast-install \
++	--with-hdf5="${HDF5_ROOT}" \
+ 	--with-libz="${ZLIB_ROOT}" \
+-	--with-hdf5="${HDF5_ROOT}" \
+ 	--with-netcdf="${NETCDF_ROOT}" \
+ 	--with-proj="${PROJ_ROOT}"
+ 
+Index: ../trunk-jpl/externalpackages/gmsh/install-4-static.sh
+===================================================================
+--- ../trunk-jpl/externalpackages/gmsh/install-4-static.sh	(revision 27148)
++++ ../trunk-jpl/externalpackages/gmsh/install-4-static.sh	(revision 27149)
+@@ -54,6 +54,7 @@
+ 	-DENABLE_MPI=1 \
+ 	-DENABLE_OCC=0 \
+ 	-DENABLE_TOUCHBAR=0 \
++	-DBLAS_LAPACK_LIBRARIES="-L${LAPACK_ROOT}/lib -lflapack -L${BLAS_ROOT}/lib -lfblas /usr/local/Cellar/gcc/11.3.0/lib/gcc/11/libgfortran.a /usr/local/Cellar/gcc/11.3.0/lib/gcc/11/libquadmath.a /usr/local/Cellar/gcc/11.3.0/lib/gcc/11/gcc/x86_64-apple-darwin15/11/libgcc.a" \
+ 	-DMETIS_ROOT="${METIS_ROOT}"
+ 
+ # Compile and install
+Index: ../trunk-jpl/externalpackages/gmsh/install-4.sh
+===================================================================
+--- ../trunk-jpl/externalpackages/gmsh/install-4.sh	(revision 27148)
++++ ../trunk-jpl/externalpackages/gmsh/install-4.sh	(revision 27149)
+@@ -52,6 +52,7 @@
+ 	-DENABLE_MPI=1 \
+ 	-DENABLE_OCC=0 \
+ 	-DENABLE_TOUCHBAR=0 \
++	-DBLAS_LAPACK_LIBRARIES="-L${LAPACK_ROOT}/lib -lflapack -L${BLAS_ROOT}/lib -lfblas" \
+ 	-DMETIS_ROOT="${METIS_ROOT}"
+ 
+ # Compile and install
+Index: ../trunk-jpl/packagers/linux/package-issm-linux-binaries-matlab.sh
+===================================================================
+--- ../trunk-jpl/packagers/linux/package-issm-linux-binaries-matlab.sh	(revision 27148)
++++ ../trunk-jpl/packagers/linux/package-issm-linux-binaries-matlab.sh	(revision 27149)
+@@ -144,7 +144,7 @@
+ 	fi
+ 
+ 	# Check that all tests passed
+-	sed -i '' "/FAILED TO establish the default connection to the WindowServer/d" matlab.log # First, need to remove WindowServer error message
++	sed -i "/FAILED TO establish the default connection to the WindowServer/d" matlab.log # First, need to remove WindowServer error message
+ 	numTestsFailed=`grep -c -E "FAILED|ERROR" matlab.log`
+ 
+ 	if [ ${numTestsFailed} -ne 0 ]; then
+Index: ../trunk-jpl/packagers/linux/package-issm-linux-binaries-python-2.sh
+===================================================================
+--- ../trunk-jpl/packagers/linux/package-issm-linux-binaries-python-2.sh	(revision 27148)
++++ ../trunk-jpl/packagers/linux/package-issm-linux-binaries-python-2.sh	(revision 27149)
+@@ -143,7 +143,7 @@
+ 	fi
+ 
+ 	# Check that all tests passed
+-	sed -i '' "/FAILED TO establish the default connection to the WindowServer/d" python.log # First, need to remove WindowServer error message
++	sed -i "/FAILED TO establish the default connection to the WindowServer/d" python.log # First, need to remove WindowServer error message
+ 	numTestsFailed=`grep -c -E "FAILED|ERROR" python.log`
+ 
+ 	if [[ ${numTestsFailed} -ne 0 ]]; then
+Index: ../trunk-jpl/packagers/linux/package-issm-linux-binaries-python-3.sh
+===================================================================
+--- ../trunk-jpl/packagers/linux/package-issm-linux-binaries-python-3.sh	(revision 27148)
++++ ../trunk-jpl/packagers/linux/package-issm-linux-binaries-python-3.sh	(revision 27149)
+@@ -146,7 +146,7 @@
+ 	fi
+ 
+ 	# Check that all tests passed
+-	sed -i '' "/FAILED TO establish the default connection to the WindowServer/d" python.log # First, need to remove WindowServer error message
++	sed -i "/FAILED TO establish the default connection to the WindowServer/d" python.log # First, need to remove WindowServer error message
+ 	numTestsFailed=`grep -c -E "FAILED|ERROR" python.log`
+ 
+ 	if [[ ${numTestsFailed} -ne 0 ]]; then
+Index: ../trunk-jpl/externalpackages/gdal/install-3-python-static.sh
+===================================================================
+--- ../trunk-jpl/externalpackages/gdal/install-3-python-static.sh	(revision 27148)
++++ ../trunk-jpl/externalpackages/gdal/install-3-python-static.sh	(revision 27149)
+@@ -42,11 +42,12 @@
+ 	--enable-static \
+ 	--with-pic \
+ 	--with-python \
++	--with-curl="${CURL_ROOT}/bin/curl-config" \
++	--with-hdf5="${HDF5_ROOT}" \
+ 	--with-libz="${ZLIB_ROOT}" \
+-	--with-hdf5="${HDF5_ROOT}" \
+ 	--with-netcdf="${NETCDF_ROOT}" \
+-	--with-proj="${PROJ_ROOT}" \
+-	--with-pg=no
++	--with-pg=no \
++	--with-proj="${PROJ_ROOT}"
+ 
+ # Compile and install
+ if [ $# -eq 0 ]; then
+Index: ../trunk-jpl/externalpackages/gdal/install-3-static.sh
+===================================================================
+--- ../trunk-jpl/externalpackages/gdal/install-3-static.sh	(revision 27148)
++++ ../trunk-jpl/externalpackages/gdal/install-3-static.sh	(revision 27149)
+@@ -41,11 +41,12 @@
+ 	--without-ld-shared \
+ 	--enable-static \
+ 	--with-pic \
++	--with-curl="${CURL_ROOT}/bin/curl-config" \
++	--with-hdf5="${HDF5_ROOT}" \
+ 	--with-libz="${ZLIB_ROOT}" \
+-	--with-hdf5="${HDF5_ROOT}" \
+ 	--with-netcdf="${NETCDF_ROOT}" \
+-	--with-proj="${PROJ_ROOT}" \
+-	--with-pg=no
++	--with-pg=no \
++	--with-proj="${PROJ_ROOT}"
+ 
+ # Compile and install
+ if [ $# -eq 0 ]; then
Index: /issm/oecreview/Archive/27032-27229/ISSM-27149-27150.diff
===================================================================
--- /issm/oecreview/Archive/27032-27229/ISSM-27149-27150.diff	(revision 27230)
+++ /issm/oecreview/Archive/27032-27229/ISSM-27149-27150.diff	(revision 27230)
@@ -0,0 +1,22 @@
+Index: ../trunk-jpl/externalpackages/dakota/install-6.2-mac.sh
+===================================================================
+--- ../trunk-jpl/externalpackages/dakota/install-6.2-mac.sh	(revision 27149)
++++ ../trunk-jpl/externalpackages/dakota/install-6.2-mac.sh	(revision 27150)
+@@ -56,6 +56,9 @@
+ cp configs/${VER}/mac/cmake/DakotaDev.cmake ${DAK_SRC}/cmake
+ cp configs/${VER}/mac/cmake/InstallDarwinDylibs.cmake ${DAK_SRC}/cmake
+ 
++#check for python 2, required by dakota
++PYTHONEXECUTIONPATH=$(which python2) || echo WARNING dakota will not compile without python2
++
+ # Configure
+ cd ${DAK_BUILD}
+ cmake \
+@@ -66,6 +69,7 @@
+ 	-DCMAKE_CXX_FLAGS="-fdelayed-template-parsing" \
+ 	-DCMAKE_Fortran_COMPILER=${MPI_HOME}/bin/mpif77 \
+ 	-DCMAKE_Fortran_FLAGS="-fallow-argument-mismatch" \
++	-DPYTHON_EXECUTABLE=$PYTHONEXECUTIONPATH \
+ 	-DBoost_NO_BOOST_CMAKE=TRUE \
+ 	-DHAVE_ACRO=OFF \
+ 	-DHAVE_JEGA=OFF \
Index: /issm/oecreview/Archive/27032-27229/ISSM-27150-27151.diff
===================================================================
--- /issm/oecreview/Archive/27032-27229/ISSM-27150-27151.diff	(revision 27230)
+++ /issm/oecreview/Archive/27032-27229/ISSM-27150-27151.diff	(revision 27230)
@@ -0,0 +1,74 @@
+Index: ../trunk-jpl/etc/environment.sh
+===================================================================
+--- ../trunk-jpl/etc/environment.sh	(revision 27150)
++++ ../trunk-jpl/etc/environment.sh	(revision 27151)
+@@ -468,11 +468,11 @@
+ NETCDF_ROOT="${ISSM_EXT_DIR}/netcdf/install"
+ if [ -d "${NETCDF_ROOT}" ]; then
+ 	export NETCDF_ROOT # Used in installation of GDAL, GMT
+-	path_append "${NETCDF_ROOT}/bin"
+-	cpath_append "${NETCDF_ROOT}/include"
+-	library_path_append "${NETCDF_ROOT}/lib"
+-	dyld_library_path_append "${NETCDF_ROOT}/lib"
+-	ld_library_path_append "${NETCDF_ROOT}/lib"
++	path_prepend "${NETCDF_ROOT}/bin"
++	cpath_prepend "${NETCDF_ROOT}/include"
++	library_path_prepend "${NETCDF_ROOT}/lib"
++	dyld_library_path_prepend "${NETCDF_ROOT}/lib"
++	ld_library_path_prepend "${NETCDF_ROOT}/lib"
+ fi
+ 
+ NETCDF_CXX_ROOT="${ISSM_EXT_DIR}/netcdf-cxx/install"
+@@ -490,8 +490,9 @@
+ CURL_ROOT="${ISSM_EXT_DIR}/curl/install"
+ if [ -d "${CURL_ROOT}" ]; then
+ 	export CURL_ROOT # Used in installation of NetCDF, GDAL, GMT
+-	ld_library_path_append "${CURL_ROOT}/lib"
+-	dyld_library_path_append "${CURL_ROOT}/lib"
++	cpath_prepend "${CURL_ROOT}/include"
++	ld_library_path_prepend "${CURL_ROOT}/lib"
++	dyld_library_path_prepend "${CURL_ROOT}/lib"
+ 	path_append "${CURL_ROOT}/bin"
+ fi
+ 
+Index: ../trunk-jpl/externalpackages/gmt/configs/6/static/cmake/modules/FindGDAL.cmake
+===================================================================
+--- ../trunk-jpl/externalpackages/gmt/configs/6/static/cmake/modules/FindGDAL.cmake	(revision 27150)
++++ ../trunk-jpl/externalpackages/gmt/configs/6/static/cmake/modules/FindGDAL.cmake	(revision 27151)
+@@ -147,6 +147,8 @@
+ 	find_library (_found_lib_${_extralib}
+ 		NAMES ${_extralib}
+ 		HINTS
++		${NETCDF_ROOT}
++		$ENV{NETCDF_ROOT}
+ 		${HDF5_ROOT}
+ 		$ENV{HDF5_ROOT}
+ 		${ZLIB_ROOT}
+Index: ../trunk-jpl/externalpackages/gmt/configs/6/static/cmake/modules/FindNETCDF.cmake
+===================================================================
+--- ../trunk-jpl/externalpackages/gmt/configs/6/static/cmake/modules/FindNETCDF.cmake	(revision 27150)
++++ ../trunk-jpl/externalpackages/gmt/configs/6/static/cmake/modules/FindNETCDF.cmake	(revision 27151)
+@@ -129,7 +129,7 @@
+ 
+ # find all manually-supplied libs
+ if (NETCDF_EXTRA_LIBS)
+-	# Ensure -l is precedeced by whitespace to not match
++	# Ensure -l is preceded by whitespace to not match
+ 	# '-l' in '-L/usr/lib/x86_64-linux-gnu/hdf5/serial'
+ 	string (REGEX MATCHALL "(^| )-l[^ ]+" _netcdf_extra_lib_dashl ${NETCDF_EXTRA_LIBS})
+ 	string (REGEX REPLACE "(^| )-l" "" _netcdf_extra_shared_lib "${_netcdf_extra_lib_dashl}")
+Index: ../trunk-jpl/externalpackages/gmt/install-6-mac-static.sh
+===================================================================
+--- ../trunk-jpl/externalpackages/gmt/install-6-mac-static.sh	(revision 27150)
++++ ../trunk-jpl/externalpackages/gmt/install-6-mac-static.sh	(revision 27151)
+@@ -19,8 +19,8 @@
+ LIBGFORTRAN_ROOT=${LIBGFORTRAN%/*}
+ LIBGCC=$(mdfind -onlyin ${LIBGFORTRAN_ROOT} -name libgcc | grep -n libgcc.a | grep -v i386 | sed "s/[0-9]*://g" | head -1)
+ 
+-GDAL_EXTRA_LIBS="-lc++" # `$GDAL_ROOT/bin/gdal-config --dep-libs` does not report need to link to libc++ (see also customized configuration file ./configs/6.0/static/cmake/modules/FindGDAL.cmake)
+-NETCDF_EXTRA_LIBS="-lsqlite3 -lpthread -ldl -liconv" # `$NETCDF_ROOT/bin/nc-config --libs` does not report certain dependencies of certain static libraries (see also customized configuration file ./configs/6.0/static/cmake/modules/FindNETCDF.cmake)
++GDAL_EXTRA_LIBS="-lc++" # `$GDAL_ROOT/bin/gdal-config --dep-libs` does not report need to link to libc++ (see also customized configuration file ./configs/6/static/cmake/modules/FindGDAL.cmake)
++NETCDF_EXTRA_LIBS="-lsqlite3 -lpthread -ldl -liconv" # `$NETCDF_ROOT/bin/nc-config --libs` does not report certain dependencies of certain static libraries (see also customized configuration file ./configs/6/static/cmake/modules/FindNETCDF.cmake)
+ 
+ # Environment
+ #
Index: /issm/oecreview/Archive/27032-27229/ISSM-27151-27152.diff
===================================================================
--- /issm/oecreview/Archive/27032-27229/ISSM-27151-27152.diff	(revision 27230)
+++ /issm/oecreview/Archive/27032-27229/ISSM-27151-27152.diff	(revision 27230)
@@ -0,0 +1,40 @@
+Index: ../trunk-jpl/externalpackages/gdal/install-3-python-static.sh
+===================================================================
+--- ../trunk-jpl/externalpackages/gdal/install-3-python-static.sh	(revision 27151)
++++ ../trunk-jpl/externalpackages/gdal/install-3-python-static.sh	(revision 27152)
+@@ -44,10 +44,14 @@
+ 	--with-python \
+ 	--with-curl="${CURL_ROOT}/bin/curl-config" \
+ 	--with-hdf5="${HDF5_ROOT}" \
++	--with-jpeg=internal \
+ 	--with-libz="${ZLIB_ROOT}" \
+ 	--with-netcdf="${NETCDF_ROOT}" \
++	--with-pcre=no \
+ 	--with-pg=no \
+-	--with-proj="${PROJ_ROOT}"
++	--with-png=internal \
++	--with-proj="${PROJ_ROOT}" \
++	--with-zstd=no
+ 
+ # Compile and install
+ if [ $# -eq 0 ]; then
+Index: ../trunk-jpl/externalpackages/gdal/install-3-static.sh
+===================================================================
+--- ../trunk-jpl/externalpackages/gdal/install-3-static.sh	(revision 27151)
++++ ../trunk-jpl/externalpackages/gdal/install-3-static.sh	(revision 27152)
+@@ -43,10 +43,14 @@
+ 	--with-pic \
+ 	--with-curl="${CURL_ROOT}/bin/curl-config" \
+ 	--with-hdf5="${HDF5_ROOT}" \
++	--with-jpeg=internal \
+ 	--with-libz="${ZLIB_ROOT}" \
+ 	--with-netcdf="${NETCDF_ROOT}" \
++	--with-pcre=no \
+ 	--with-pg=no \
+-	--with-proj="${PROJ_ROOT}"
++	--with-png=internal \
++	--with-proj="${PROJ_ROOT}" \
++	--with-zstd=no
+ 
+ # Compile and install
+ if [ $# -eq 0 ]; then
Index: /issm/oecreview/Archive/27032-27229/ISSM-27152-27153.diff
===================================================================
--- /issm/oecreview/Archive/27032-27229/ISSM-27152-27153.diff	(revision 27230)
+++ /issm/oecreview/Archive/27032-27229/ISSM-27152-27153.diff	(revision 27230)
@@ -0,0 +1,24 @@
+Index: ../trunk-jpl/externalpackages/curl/install-7-linux-static.sh
+===================================================================
+--- ../trunk-jpl/externalpackages/curl/install-7-linux-static.sh	(revision 27152)
++++ ../trunk-jpl/externalpackages/curl/install-7-linux-static.sh	(revision 27153)
+@@ -33,6 +33,7 @@
+ 	--disable-ldap \
+ 	--disable-ldaps \
+ 	--with-zlib="${ZLIB_ROOT}" \
++	--without-zstd \
+ 	--without-libidn2 \
+ 	--without-nghttp2 \
+ 	--without-brotli \
+Index: ../trunk-jpl/externalpackages/curl/install-7-mac-static.sh
+===================================================================
+--- ../trunk-jpl/externalpackages/curl/install-7-mac-static.sh	(revision 27152)
++++ ../trunk-jpl/externalpackages/curl/install-7-mac-static.sh	(revision 27153)
+@@ -37,6 +37,7 @@
+ 	--disable-ldap \
+ 	--disable-ldaps \
+ 	--with-zlib="${ZLIB_ROOT}" \
++	--without-zstd \
+ 	--without-libidn2 \
+ 	--without-nghttp2 \
+ 	--without-brotli \
Index: /issm/oecreview/Archive/27032-27229/ISSM-27153-27154.diff
===================================================================
--- /issm/oecreview/Archive/27032-27229/ISSM-27153-27154.diff	(revision 27230)
+++ /issm/oecreview/Archive/27032-27229/ISSM-27153-27154.diff	(revision 27230)
@@ -0,0 +1,2318 @@
+Index: ../trunk-jpl/m4/analyses.m4
+===================================================================
+--- ../trunk-jpl/m4/analyses.m4	(revision 27153)
++++ ../trunk-jpl/m4/analyses.m4	(revision 27154)
+@@ -10,1070 +10,592 @@
+ [
+ 
+ dnl with-HydrologyTws{{{
+-
+ AC_ARG_WITH([HydrologyTws],
+-
+ 	AS_HELP_STRING([--with-HydrologyTws = YES], [compile with HydrologyTws capabilities (default is yes)]),
+-
+ 	[HYDROLOGYTWS=$withval],[HYDROLOGYTWS=yes])
+-
+ AC_MSG_CHECKING(for HydrologyTws capability compilation)
+ 
+-
+ HAVE_HYDROLOGYTWS=no 
+-
+ if test "x$HYDROLOGYTWS" = "xyes"; then
+-
+ 	HAVE_HYDROLOGYTWS=yes
+-
+ 	AC_DEFINE([_HAVE_HYDROLOGYTWS_],[1],[with HydrologyTws capability])
+-
+ fi
+-
+ AM_CONDITIONAL([HYDROLOGYTWS], [test x$HAVE_HYDROLOGYTWS = xyes])
+-
+ AC_MSG_RESULT($HAVE_HYDROLOGYTWS)
+-
+ dnl }}}
+ dnl with-AdjointBalancethickness2{{{
+-
+ AC_ARG_WITH([AdjointBalancethickness2],
+-
+ 	AS_HELP_STRING([--with-AdjointBalancethickness2 = YES], [compile with AdjointBalancethickness2 capabilities (default is yes)]),
+-
+ 	[ADJOINTBALANCETHICKNESS2=$withval],[ADJOINTBALANCETHICKNESS2=yes])
+-
+ AC_MSG_CHECKING(for AdjointBalancethickness2 capability compilation)
+ 
+-
+ HAVE_ADJOINTBALANCETHICKNESS2=no 
+-
+ if test "x$ADJOINTBALANCETHICKNESS2" = "xyes"; then
+-
+ 	HAVE_ADJOINTBALANCETHICKNESS2=yes
+-
+ 	AC_DEFINE([_HAVE_ADJOINTBALANCETHICKNESS2_],[1],[with AdjointBalancethickness2 capability])
+-
+ fi
+-
+ AM_CONDITIONAL([ADJOINTBALANCETHICKNESS2], [test x$HAVE_ADJOINTBALANCETHICKNESS2 = xyes])
+-
+ AC_MSG_RESULT($HAVE_ADJOINTBALANCETHICKNESS2)
+-
+ dnl }}}
+ dnl with-AdjointBalancethickness{{{
+-
+ AC_ARG_WITH([AdjointBalancethickness],
+-
+ 	AS_HELP_STRING([--with-AdjointBalancethickness = YES], [compile with AdjointBalancethickness capabilities (default is yes)]),
+-
+ 	[ADJOINTBALANCETHICKNESS=$withval],[ADJOINTBALANCETHICKNESS=yes])
+-
+ AC_MSG_CHECKING(for AdjointBalancethickness capability compilation)
+ 
+-
+ HAVE_ADJOINTBALANCETHICKNESS=no 
+-
+ if test "x$ADJOINTBALANCETHICKNESS" = "xyes"; then
+-
+ 	HAVE_ADJOINTBALANCETHICKNESS=yes
+-
+ 	AC_DEFINE([_HAVE_ADJOINTBALANCETHICKNESS_],[1],[with AdjointBalancethickness capability])
+-
+ fi
+-
+ AM_CONDITIONAL([ADJOINTBALANCETHICKNESS], [test x$HAVE_ADJOINTBALANCETHICKNESS = xyes])
+-
+ AC_MSG_RESULT($HAVE_ADJOINTBALANCETHICKNESS)
+-
+ dnl }}}
+ dnl with-AdjointHoriz{{{
+-
+ AC_ARG_WITH([AdjointHoriz],
+-
+ 	AS_HELP_STRING([--with-AdjointHoriz = YES], [compile with AdjointHoriz capabilities (default is yes)]),
+-
+ 	[ADJOINTHORIZ=$withval],[ADJOINTHORIZ=yes])
+-
+ AC_MSG_CHECKING(for AdjointHoriz capability compilation)
+ 
+-
+ HAVE_ADJOINTHORIZ=no 
+-
+ if test "x$ADJOINTHORIZ" = "xyes"; then
+-
+ 	HAVE_ADJOINTHORIZ=yes
+-
+ 	AC_DEFINE([_HAVE_ADJOINTHORIZ_],[1],[with AdjointHoriz capability])
+-
+ fi
+-
+ AM_CONDITIONAL([ADJOINTHORIZ], [test x$HAVE_ADJOINTHORIZ = xyes])
+-
+ AC_MSG_RESULT($HAVE_ADJOINTHORIZ)
++dnl }}}
++dnl with-Age{{{
++AC_ARG_WITH([Age],
++	AS_HELP_STRING([--with-Age = YES], [compile with Age capabilities (default is yes)]),
++	[AGE=$withval],[AGE=yes])
++AC_MSG_CHECKING(for Age capability compilation)
+ 
++HAVE_AGE=no 
++if test "x$AGE" = "xyes"; then
++	HAVE_AGE=yes
++	AC_DEFINE([_HAVE_AGE_],[1],[with Age capability])
++fi
++AM_CONDITIONAL([AGE], [test x$HAVE_AGE = xyes])
++AC_MSG_RESULT($HAVE_AGE)
+ dnl }}}
+ dnl with-Balancethickness2{{{
+-
+ AC_ARG_WITH([Balancethickness2],
+-
+ 	AS_HELP_STRING([--with-Balancethickness2 = YES], [compile with Balancethickness2 capabilities (default is yes)]),
+-
+ 	[BALANCETHICKNESS2=$withval],[BALANCETHICKNESS2=yes])
+-
+ AC_MSG_CHECKING(for Balancethickness2 capability compilation)
+ 
+-
+ HAVE_BALANCETHICKNESS2=no 
+-
+ if test "x$BALANCETHICKNESS2" = "xyes"; then
+-
+ 	HAVE_BALANCETHICKNESS2=yes
+-
+ 	AC_DEFINE([_HAVE_BALANCETHICKNESS2_],[1],[with Balancethickness2 capability])
+-
+ fi
+-
+ AM_CONDITIONAL([BALANCETHICKNESS2], [test x$HAVE_BALANCETHICKNESS2 = xyes])
+-
+ AC_MSG_RESULT($HAVE_BALANCETHICKNESS2)
+-
+ dnl }}}
+ dnl with-Balancethickness{{{
+-
+ AC_ARG_WITH([Balancethickness],
+-
+ 	AS_HELP_STRING([--with-Balancethickness = YES], [compile with Balancethickness capabilities (default is yes)]),
+-
+ 	[BALANCETHICKNESS=$withval],[BALANCETHICKNESS=yes])
+-
+ AC_MSG_CHECKING(for Balancethickness capability compilation)
+ 
+-
+ HAVE_BALANCETHICKNESS=no 
+-
+ if test "x$BALANCETHICKNESS" = "xyes"; then
+-
+ 	HAVE_BALANCETHICKNESS=yes
+-
+ 	AC_DEFINE([_HAVE_BALANCETHICKNESS_],[1],[with Balancethickness capability])
+-
+ fi
+-
+ AM_CONDITIONAL([BALANCETHICKNESS], [test x$HAVE_BALANCETHICKNESS = xyes])
+-
+ AC_MSG_RESULT($HAVE_BALANCETHICKNESS)
+-
+ dnl }}}
+ dnl with-BalancethicknessSoft{{{
+-
+ AC_ARG_WITH([BalancethicknessSoft],
+-
+ 	AS_HELP_STRING([--with-BalancethicknessSoft = YES], [compile with BalancethicknessSoft capabilities (default is yes)]),
+-
+ 	[BALANCETHICKNESSSOFT=$withval],[BALANCETHICKNESSSOFT=yes])
+-
+ AC_MSG_CHECKING(for BalancethicknessSoft capability compilation)
+ 
+-
+ HAVE_BALANCETHICKNESSSOFT=no 
+-
+ if test "x$BALANCETHICKNESSSOFT" = "xyes"; then
+-
+ 	HAVE_BALANCETHICKNESSSOFT=yes
+-
+ 	AC_DEFINE([_HAVE_BALANCETHICKNESSSOFT_],[1],[with BalancethicknessSoft capability])
+-
+ fi
+-
+ AM_CONDITIONAL([BALANCETHICKNESSSOFT], [test x$HAVE_BALANCETHICKNESSSOFT = xyes])
+-
+ AC_MSG_RESULT($HAVE_BALANCETHICKNESSSOFT)
+-
+ dnl }}}
+ dnl with-Balancevelocity{{{
+-
+ AC_ARG_WITH([Balancevelocity],
+-
+ 	AS_HELP_STRING([--with-Balancevelocity = YES], [compile with Balancevelocity capabilities (default is yes)]),
+-
+ 	[BALANCEVELOCITY=$withval],[BALANCEVELOCITY=yes])
+-
+ AC_MSG_CHECKING(for Balancevelocity capability compilation)
+ 
+-
+ HAVE_BALANCEVELOCITY=no 
+-
+ if test "x$BALANCEVELOCITY" = "xyes"; then
+-
+ 	HAVE_BALANCEVELOCITY=yes
+-
+ 	AC_DEFINE([_HAVE_BALANCEVELOCITY_],[1],[with Balancevelocity capability])
+-
+ fi
+-
+ AM_CONDITIONAL([BALANCEVELOCITY], [test x$HAVE_BALANCEVELOCITY = xyes])
+-
+ AC_MSG_RESULT($HAVE_BALANCEVELOCITY)
+-
+ dnl }}}
+ dnl with-DamageEvolution{{{
+-
+ AC_ARG_WITH([DamageEvolution],
+-
+ 	AS_HELP_STRING([--with-DamageEvolution = YES], [compile with DamageEvolution capabilities (default is yes)]),
+-
+ 	[DAMAGEEVOLUTION=$withval],[DAMAGEEVOLUTION=yes])
+-
+ AC_MSG_CHECKING(for DamageEvolution capability compilation)
+ 
+-
+ HAVE_DAMAGEEVOLUTION=no 
+-
+ if test "x$DAMAGEEVOLUTION" = "xyes"; then
+-
+ 	HAVE_DAMAGEEVOLUTION=yes
+-
+ 	AC_DEFINE([_HAVE_DAMAGEEVOLUTION_],[1],[with DamageEvolution capability])
+-
+ fi
+-
+ AM_CONDITIONAL([DAMAGEEVOLUTION], [test x$HAVE_DAMAGEEVOLUTION = xyes])
+-
+ AC_MSG_RESULT($HAVE_DAMAGEEVOLUTION)
+-
+ dnl }}}
+ dnl with-DepthAverage{{{
+-
+ AC_ARG_WITH([DepthAverage],
+-
+ 	AS_HELP_STRING([--with-DepthAverage = YES], [compile with DepthAverage capabilities (default is yes)]),
+-
+ 	[DEPTHAVERAGE=$withval],[DEPTHAVERAGE=yes])
+-
+ AC_MSG_CHECKING(for DepthAverage capability compilation)
+ 
+-
+ HAVE_DEPTHAVERAGE=no 
+-
+ if test "x$DEPTHAVERAGE" = "xyes"; then
+-
+ 	HAVE_DEPTHAVERAGE=yes
+-
+ 	AC_DEFINE([_HAVE_DEPTHAVERAGE_],[1],[with DepthAverage capability])
+-
+ fi
+-
+ AM_CONDITIONAL([DEPTHAVERAGE], [test x$HAVE_DEPTHAVERAGE = xyes])
+-
+ AC_MSG_RESULT($HAVE_DEPTHAVERAGE)
+-
+ dnl }}}
+ dnl with-Enthalpy{{{
+-
+ AC_ARG_WITH([Enthalpy],
+-
+ 	AS_HELP_STRING([--with-Enthalpy = YES], [compile with Enthalpy capabilities (default is yes)]),
+-
+ 	[ENTHALPY=$withval],[ENTHALPY=yes])
+-
+ AC_MSG_CHECKING(for Enthalpy capability compilation)
+ 
+-
+ HAVE_ENTHALPY=no 
+-
+ if test "x$ENTHALPY" = "xyes"; then
+-
+ 	HAVE_ENTHALPY=yes
+-
+ 	AC_DEFINE([_HAVE_ENTHALPY_],[1],[with Enthalpy capability])
+-
+ fi
+-
+ AM_CONDITIONAL([ENTHALPY], [test x$HAVE_ENTHALPY = xyes])
+-
+ AC_MSG_RESULT($HAVE_ENTHALPY)
+-
+ dnl }}}
+ dnl with-Esa{{{
+-
+ AC_ARG_WITH([Esa],
+-
+ 	AS_HELP_STRING([--with-Esa = YES], [compile with Esa capabilities (default is yes)]),
+-
+ 	[ESA=$withval],[ESA=yes])
+-
+ AC_MSG_CHECKING(for Esa capability compilation)
+ 
+-
+ HAVE_ESA=no 
+-
+ if test "x$ESA" = "xyes"; then
+-
+ 	HAVE_ESA=yes
+-
+ 	AC_DEFINE([_HAVE_ESA_],[1],[with Esa capability])
+-
+ fi
+-
+ AM_CONDITIONAL([ESA], [test x$HAVE_ESA = xyes])
+-
+ AC_MSG_RESULT($HAVE_ESA)
+-
+ dnl }}}
+ dnl with-Extrapolation{{{
+-
+ AC_ARG_WITH([Extrapolation],
+-
+ 	AS_HELP_STRING([--with-Extrapolation = YES], [compile with Extrapolation capabilities (default is yes)]),
+-
+ 	[EXTRAPOLATION=$withval],[EXTRAPOLATION=yes])
+-
+ AC_MSG_CHECKING(for Extrapolation capability compilation)
+ 
+-
+ HAVE_EXTRAPOLATION=no 
+-
+ if test "x$EXTRAPOLATION" = "xyes"; then
+-
+ 	HAVE_EXTRAPOLATION=yes
+-
+ 	AC_DEFINE([_HAVE_EXTRAPOLATION_],[1],[with Extrapolation capability])
+-
+ fi
+-
+ AM_CONDITIONAL([EXTRAPOLATION], [test x$HAVE_EXTRAPOLATION = xyes])
+-
+ AC_MSG_RESULT($HAVE_EXTRAPOLATION)
+-
+ dnl }}}
+ dnl with-ExtrudeFromBase{{{
+-
+ AC_ARG_WITH([ExtrudeFromBase],
+-
+ 	AS_HELP_STRING([--with-ExtrudeFromBase = YES], [compile with ExtrudeFromBase capabilities (default is yes)]),
+-
+ 	[EXTRUDEFROMBASE=$withval],[EXTRUDEFROMBASE=yes])
+-
+ AC_MSG_CHECKING(for ExtrudeFromBase capability compilation)
+ 
+-
+ HAVE_EXTRUDEFROMBASE=no 
+-
+ if test "x$EXTRUDEFROMBASE" = "xyes"; then
+-
+ 	HAVE_EXTRUDEFROMBASE=yes
+-
+ 	AC_DEFINE([_HAVE_EXTRUDEFROMBASE_],[1],[with ExtrudeFromBase capability])
+-
+ fi
+-
+ AM_CONDITIONAL([EXTRUDEFROMBASE], [test x$HAVE_EXTRUDEFROMBASE = xyes])
+-
+ AC_MSG_RESULT($HAVE_EXTRUDEFROMBASE)
+-
+ dnl }}}
+ dnl with-ExtrudeFromTop{{{
+-
+ AC_ARG_WITH([ExtrudeFromTop],
+-
+ 	AS_HELP_STRING([--with-ExtrudeFromTop = YES], [compile with ExtrudeFromTop capabilities (default is yes)]),
+-
+ 	[EXTRUDEFROMTOP=$withval],[EXTRUDEFROMTOP=yes])
+-
+ AC_MSG_CHECKING(for ExtrudeFromTop capability compilation)
+ 
+-
+ HAVE_EXTRUDEFROMTOP=no 
+-
+ if test "x$EXTRUDEFROMTOP" = "xyes"; then
+-
+ 	HAVE_EXTRUDEFROMTOP=yes
+-
+ 	AC_DEFINE([_HAVE_EXTRUDEFROMTOP_],[1],[with ExtrudeFromTop capability])
+-
+ fi
+-
+ AM_CONDITIONAL([EXTRUDEFROMTOP], [test x$HAVE_EXTRUDEFROMTOP = xyes])
+-
+ AC_MSG_RESULT($HAVE_EXTRUDEFROMTOP)
+-
+ dnl }}}
+ dnl with-FreeSurfaceBase{{{
+-
+ AC_ARG_WITH([FreeSurfaceBase],
+-
+ 	AS_HELP_STRING([--with-FreeSurfaceBase = YES], [compile with FreeSurfaceBase capabilities (default is yes)]),
+-
+ 	[FREESURFACEBASE=$withval],[FREESURFACEBASE=yes])
+-
+ AC_MSG_CHECKING(for FreeSurfaceBase capability compilation)
+ 
+-
+ HAVE_FREESURFACEBASE=no 
+-
+ if test "x$FREESURFACEBASE" = "xyes"; then
+-
+ 	HAVE_FREESURFACEBASE=yes
+-
+ 	AC_DEFINE([_HAVE_FREESURFACEBASE_],[1],[with FreeSurfaceBase capability])
+-
+ fi
+-
+ AM_CONDITIONAL([FREESURFACEBASE], [test x$HAVE_FREESURFACEBASE = xyes])
+-
+ AC_MSG_RESULT($HAVE_FREESURFACEBASE)
+-
+ dnl }}}
+ dnl with-FreeSurfaceTop{{{
+-
+ AC_ARG_WITH([FreeSurfaceTop],
+-
+ 	AS_HELP_STRING([--with-FreeSurfaceTop = YES], [compile with FreeSurfaceTop capabilities (default is yes)]),
+-
+ 	[FREESURFACETOP=$withval],[FREESURFACETOP=yes])
+-
+ AC_MSG_CHECKING(for FreeSurfaceTop capability compilation)
+ 
+-
+ HAVE_FREESURFACETOP=no 
+-
+ if test "x$FREESURFACETOP" = "xyes"; then
+-
+ 	HAVE_FREESURFACETOP=yes
+-
+ 	AC_DEFINE([_HAVE_FREESURFACETOP_],[1],[with FreeSurfaceTop capability])
+-
+ fi
+-
+ AM_CONDITIONAL([FREESURFACETOP], [test x$HAVE_FREESURFACETOP = xyes])
+-
+ AC_MSG_RESULT($HAVE_FREESURFACETOP)
+-
+ dnl }}}
+ dnl with-GLheightadvection{{{
+-
+ AC_ARG_WITH([GLheightadvection],
+-
+ 	AS_HELP_STRING([--with-GLheightadvection = YES], [compile with GLheightadvection capabilities (default is yes)]),
+-
+ 	[GLHEIGHTADVECTION=$withval],[GLHEIGHTADVECTION=yes])
+-
+ AC_MSG_CHECKING(for GLheightadvection capability compilation)
+ 
+-
+ HAVE_GLHEIGHTADVECTION=no 
+-
+ if test "x$GLHEIGHTADVECTION" = "xyes"; then
+-
+ 	HAVE_GLHEIGHTADVECTION=yes
+-
+ 	AC_DEFINE([_HAVE_GLHEIGHTADVECTION_],[1],[with GLheightadvection capability])
+-
+ fi
+-
+ AM_CONDITIONAL([GLHEIGHTADVECTION], [test x$HAVE_GLHEIGHTADVECTION = xyes])
+-
+ AC_MSG_RESULT($HAVE_GLHEIGHTADVECTION)
+-
+ dnl }}}
+ dnl with-HydrologyDCEfficient{{{
+-
+ AC_ARG_WITH([HydrologyDCEfficient],
+-
+ 	AS_HELP_STRING([--with-HydrologyDCEfficient = YES], [compile with HydrologyDCEfficient capabilities (default is yes)]),
+-
+ 	[HYDROLOGYDCEFFICIENT=$withval],[HYDROLOGYDCEFFICIENT=yes])
+-
+ AC_MSG_CHECKING(for HydrologyDCEfficient capability compilation)
+ 
+-
+ HAVE_HYDROLOGYDCEFFICIENT=no 
+-
+ if test "x$HYDROLOGYDCEFFICIENT" = "xyes"; then
+-
+ 	HAVE_HYDROLOGYDCEFFICIENT=yes
+-
+ 	AC_DEFINE([_HAVE_HYDROLOGYDCEFFICIENT_],[1],[with HydrologyDCEfficient capability])
+-
+ fi
+-
+ AM_CONDITIONAL([HYDROLOGYDCEFFICIENT], [test x$HAVE_HYDROLOGYDCEFFICIENT = xyes])
+-
+ AC_MSG_RESULT($HAVE_HYDROLOGYDCEFFICIENT)
+-
+ dnl }}}
+ dnl with-HydrologyDCInefficient{{{
+-
+ AC_ARG_WITH([HydrologyDCInefficient],
+-
+ 	AS_HELP_STRING([--with-HydrologyDCInefficient = YES], [compile with HydrologyDCInefficient capabilities (default is yes)]),
+-
+ 	[HYDROLOGYDCINEFFICIENT=$withval],[HYDROLOGYDCINEFFICIENT=yes])
+-
+ AC_MSG_CHECKING(for HydrologyDCInefficient capability compilation)
+ 
+-
+ HAVE_HYDROLOGYDCINEFFICIENT=no 
+-
+ if test "x$HYDROLOGYDCINEFFICIENT" = "xyes"; then
+-
+ 	HAVE_HYDROLOGYDCINEFFICIENT=yes
+-
+ 	AC_DEFINE([_HAVE_HYDROLOGYDCINEFFICIENT_],[1],[with HydrologyDCInefficient capability])
+-
+ fi
+-
+ AM_CONDITIONAL([HYDROLOGYDCINEFFICIENT], [test x$HAVE_HYDROLOGYDCINEFFICIENT = xyes])
+-
+ AC_MSG_RESULT($HAVE_HYDROLOGYDCINEFFICIENT)
+-
+ dnl }}}
+ dnl with-HydrologyGlaDS{{{
+-
+ AC_ARG_WITH([HydrologyGlaDS],
+-
+ 	AS_HELP_STRING([--with-HydrologyGlaDS = YES], [compile with HydrologyGlaDS capabilities (default is yes)]),
+-
+ 	[HYDROLOGYGLADS=$withval],[HYDROLOGYGLADS=yes])
+-
+ AC_MSG_CHECKING(for HydrologyGlaDS capability compilation)
+ 
+-
+ HAVE_HYDROLOGYGLADS=no 
+-
+ if test "x$HYDROLOGYGLADS" = "xyes"; then
+-
+ 	HAVE_HYDROLOGYGLADS=yes
+-
+ 	AC_DEFINE([_HAVE_HYDROLOGYGLADS_],[1],[with HydrologyGlaDS capability])
+-
+ fi
+-
+ AM_CONDITIONAL([HYDROLOGYGLADS], [test x$HAVE_HYDROLOGYGLADS = xyes])
+-
+ AC_MSG_RESULT($HAVE_HYDROLOGYGLADS)
+-
+ dnl }}}
+ dnl with-HydrologyPism{{{
+-
+ AC_ARG_WITH([HydrologyPism],
+-
+ 	AS_HELP_STRING([--with-HydrologyPism = YES], [compile with HydrologyPism capabilities (default is yes)]),
+-
+ 	[HYDROLOGYPISM=$withval],[HYDROLOGYPISM=yes])
+-
+ AC_MSG_CHECKING(for HydrologyPism capability compilation)
+ 
+-
+ HAVE_HYDROLOGYPISM=no 
+-
+ if test "x$HYDROLOGYPISM" = "xyes"; then
+-
+ 	HAVE_HYDROLOGYPISM=yes
+-
+ 	AC_DEFINE([_HAVE_HYDROLOGYPISM_],[1],[with HydrologyPism capability])
+-
+ fi
+-
+ AM_CONDITIONAL([HYDROLOGYPISM], [test x$HAVE_HYDROLOGYPISM = xyes])
+-
+ AC_MSG_RESULT($HAVE_HYDROLOGYPISM)
+-
+ dnl }}}
+ dnl with-HydrologyShakti{{{
+-
+ AC_ARG_WITH([HydrologyShakti],
+-
+ 	AS_HELP_STRING([--with-HydrologyShakti = YES], [compile with HydrologyShakti capabilities (default is yes)]),
+-
+ 	[HYDROLOGYSHAKTI=$withval],[HYDROLOGYSHAKTI=yes])
+-
+ AC_MSG_CHECKING(for HydrologyShakti capability compilation)
+ 
+-
+ HAVE_HYDROLOGYSHAKTI=no 
+-
+ if test "x$HYDROLOGYSHAKTI" = "xyes"; then
+-
+ 	HAVE_HYDROLOGYSHAKTI=yes
+-
+ 	AC_DEFINE([_HAVE_HYDROLOGYSHAKTI_],[1],[with HydrologyShakti capability])
+-
+ fi
+-
+ AM_CONDITIONAL([HYDROLOGYSHAKTI], [test x$HAVE_HYDROLOGYSHAKTI = xyes])
+-
+ AC_MSG_RESULT($HAVE_HYDROLOGYSHAKTI)
+-
+ dnl }}}
+ dnl with-HydrologyShreve{{{
+-
+ AC_ARG_WITH([HydrologyShreve],
+-
+ 	AS_HELP_STRING([--with-HydrologyShreve = YES], [compile with HydrologyShreve capabilities (default is yes)]),
+-
+ 	[HYDROLOGYSHREVE=$withval],[HYDROLOGYSHREVE=yes])
+-
+ AC_MSG_CHECKING(for HydrologyShreve capability compilation)
+ 
+-
+ HAVE_HYDROLOGYSHREVE=no 
+-
+ if test "x$HYDROLOGYSHREVE" = "xyes"; then
+-
+ 	HAVE_HYDROLOGYSHREVE=yes
+-
+ 	AC_DEFINE([_HAVE_HYDROLOGYSHREVE_],[1],[with HydrologyShreve capability])
+-
+ fi
+-
+ AM_CONDITIONAL([HYDROLOGYSHREVE], [test x$HAVE_HYDROLOGYSHREVE = xyes])
+-
+ AC_MSG_RESULT($HAVE_HYDROLOGYSHREVE)
+-
+ dnl }}}
+ dnl with-L2ProjectionBase{{{
+-
+ AC_ARG_WITH([L2ProjectionBase],
+-
+ 	AS_HELP_STRING([--with-L2ProjectionBase = YES], [compile with L2ProjectionBase capabilities (default is yes)]),
+-
+ 	[L2PROJECTIONBASE=$withval],[L2PROJECTIONBASE=yes])
+-
+ AC_MSG_CHECKING(for L2ProjectionBase capability compilation)
+ 
+-
+ HAVE_L2PROJECTIONBASE=no 
+-
+ if test "x$L2PROJECTIONBASE" = "xyes"; then
+-
+ 	HAVE_L2PROJECTIONBASE=yes
+-
+ 	AC_DEFINE([_HAVE_L2PROJECTIONBASE_],[1],[with L2ProjectionBase capability])
+-
+ fi
+-
+ AM_CONDITIONAL([L2PROJECTIONBASE], [test x$HAVE_L2PROJECTIONBASE = xyes])
+-
+ AC_MSG_RESULT($HAVE_L2PROJECTIONBASE)
+-
+ dnl }}}
+ dnl with-L2ProjectionEPL{{{
+-
+ AC_ARG_WITH([L2ProjectionEPL],
+-
+ 	AS_HELP_STRING([--with-L2ProjectionEPL = YES], [compile with L2ProjectionEPL capabilities (default is yes)]),
+-
+ 	[L2PROJECTIONEPL=$withval],[L2PROJECTIONEPL=yes])
+-
+ AC_MSG_CHECKING(for L2ProjectionEPL capability compilation)
+ 
+-
+ HAVE_L2PROJECTIONEPL=no 
+-
+ if test "x$L2PROJECTIONEPL" = "xyes"; then
+-
+ 	HAVE_L2PROJECTIONEPL=yes
+-
+ 	AC_DEFINE([_HAVE_L2PROJECTIONEPL_],[1],[with L2ProjectionEPL capability])
+-
+ fi
+-
+ AM_CONDITIONAL([L2PROJECTIONEPL], [test x$HAVE_L2PROJECTIONEPL = xyes])
+-
+ AC_MSG_RESULT($HAVE_L2PROJECTIONEPL)
+-
+ dnl }}}
+ dnl with-Levelset{{{
+-
+ AC_ARG_WITH([Levelset],
+-
+ 	AS_HELP_STRING([--with-Levelset = YES], [compile with Levelset capabilities (default is yes)]),
+-
+ 	[LEVELSET=$withval],[LEVELSET=yes])
+-
+ AC_MSG_CHECKING(for Levelset capability compilation)
+ 
+-
+ HAVE_LEVELSET=no 
+-
+ if test "x$LEVELSET" = "xyes"; then
+-
+ 	HAVE_LEVELSET=yes
+-
+ 	AC_DEFINE([_HAVE_LEVELSET_],[1],[with Levelset capability])
+-
+ fi
+-
+ AM_CONDITIONAL([LEVELSET], [test x$HAVE_LEVELSET = xyes])
+-
+ AC_MSG_RESULT($HAVE_LEVELSET)
+-
+ dnl }}}
+ dnl with-Love{{{
+-
+ AC_ARG_WITH([Love],
+-
+ 	AS_HELP_STRING([--with-Love = YES], [compile with Love capabilities (default is yes)]),
+-
+ 	[LOVE=$withval],[LOVE=yes])
+-
+ AC_MSG_CHECKING(for Love capability compilation)
+ 
+-
+ HAVE_LOVE=no 
+-
+ if test "x$LOVE" = "xyes"; then
+-
+ 	HAVE_LOVE=yes
+-
+ 	AC_DEFINE([_HAVE_LOVE_],[1],[with Love capability])
+-
+ fi
+-
+ AM_CONDITIONAL([LOVE], [test x$HAVE_LOVE = xyes])
+-
+ AC_MSG_RESULT($HAVE_LOVE)
+-
+ dnl }}}
+ dnl with-Masstransport{{{
+-
+ AC_ARG_WITH([Masstransport],
+-
+ 	AS_HELP_STRING([--with-Masstransport = YES], [compile with Masstransport capabilities (default is yes)]),
+-
+ 	[MASSTRANSPORT=$withval],[MASSTRANSPORT=yes])
+-
+ AC_MSG_CHECKING(for Masstransport capability compilation)
+ 
+-
+ HAVE_MASSTRANSPORT=no 
+-
+ if test "x$MASSTRANSPORT" = "xyes"; then
+-
+ 	HAVE_MASSTRANSPORT=yes
+-
+ 	AC_DEFINE([_HAVE_MASSTRANSPORT_],[1],[with Masstransport capability])
+-
+ fi
+-
+ AM_CONDITIONAL([MASSTRANSPORT], [test x$HAVE_MASSTRANSPORT = xyes])
+-
+ AC_MSG_RESULT($HAVE_MASSTRANSPORT)
+-
+ dnl }}}
+ dnl with-Melting{{{
+-
+ AC_ARG_WITH([Melting],
+-
+ 	AS_HELP_STRING([--with-Melting = YES], [compile with Melting capabilities (default is yes)]),
+-
+ 	[MELTING=$withval],[MELTING=yes])
+-
+ AC_MSG_CHECKING(for Melting capability compilation)
+ 
+-
+ HAVE_MELTING=no 
+-
+ if test "x$MELTING" = "xyes"; then
+-
+ 	HAVE_MELTING=yes
+-
+ 	AC_DEFINE([_HAVE_MELTING_],[1],[with Melting capability])
+-
+ fi
+-
+ AM_CONDITIONAL([MELTING], [test x$HAVE_MELTING = xyes])
+-
+ AC_MSG_RESULT($HAVE_MELTING)
+-
+ dnl }}}
+ dnl with-Oceantransport{{{
+-
+ AC_ARG_WITH([Oceantransport],
+-
+ 	AS_HELP_STRING([--with-Oceantransport = YES], [compile with Oceantransport capabilities (default is yes)]),
+-
+ 	[OCEANTRANSPORT=$withval],[OCEANTRANSPORT=yes])
+-
+ AC_MSG_CHECKING(for Oceantransport capability compilation)
+ 
+-
+ HAVE_OCEANTRANSPORT=no 
+-
+ if test "x$OCEANTRANSPORT" = "xyes"; then
+-
+ 	HAVE_OCEANTRANSPORT=yes
+-
+ 	AC_DEFINE([_HAVE_OCEANTRANSPORT_],[1],[with Oceantransport capability])
+-
+ fi
+-
+ AM_CONDITIONAL([OCEANTRANSPORT], [test x$HAVE_OCEANTRANSPORT = xyes])
+-
+ AC_MSG_RESULT($HAVE_OCEANTRANSPORT)
+-
+ dnl }}}
+ dnl with-Recovery{{{
+-
+ AC_ARG_WITH([Recovery],
+-
+ 	AS_HELP_STRING([--with-Recovery = YES], [compile with Recovery capabilities (default is yes)]),
+-
+ 	[RECOVERY=$withval],[RECOVERY=yes])
+-
+ AC_MSG_CHECKING(for Recovery capability compilation)
+ 
+-
+ HAVE_RECOVERY=no 
+-
+ if test "x$RECOVERY" = "xyes"; then
+-
+ 	HAVE_RECOVERY=yes
+-
+ 	AC_DEFINE([_HAVE_RECOVERY_],[1],[with Recovery capability])
+-
+ fi
+-
+ AM_CONDITIONAL([RECOVERY], [test x$HAVE_RECOVERY = xyes])
+-
+ AC_MSG_RESULT($HAVE_RECOVERY)
+-
+ dnl }}}
+ dnl with-Sampling{{{
+-
+ AC_ARG_WITH([Sampling],
+-
+ 	AS_HELP_STRING([--with-Sampling = YES], [compile with Sampling capabilities (default is yes)]),
+-
+ 	[SAMPLING=$withval],[SAMPLING=yes])
+-
+ AC_MSG_CHECKING(for Sampling capability compilation)
+ 
+-
+ HAVE_SAMPLING=no 
+-
+ if test "x$SAMPLING" = "xyes"; then
+-
+ 	HAVE_SAMPLING=yes
+-
+ 	AC_DEFINE([_HAVE_SAMPLING_],[1],[with Sampling capability])
+-
+ fi
+-
+ AM_CONDITIONAL([SAMPLING], [test x$HAVE_SAMPLING = xyes])
+-
+ AC_MSG_RESULT($HAVE_SAMPLING)
+-
+ dnl }}}
+ dnl with-Sealevelchange{{{
+-
+ AC_ARG_WITH([Sealevelchange],
+-
+ 	AS_HELP_STRING([--with-Sealevelchange = YES], [compile with Sealevelchange capabilities (default is yes)]),
+-
+ 	[SEALEVELCHANGE=$withval],[SEALEVELCHANGE=yes])
+-
+ AC_MSG_CHECKING(for Sealevelchange capability compilation)
+ 
+-
+ HAVE_SEALEVELCHANGE=no 
+-
+ if test "x$SEALEVELCHANGE" = "xyes"; then
+-
+ 	HAVE_SEALEVELCHANGE=yes
+-
+ 	AC_DEFINE([_HAVE_SEALEVELCHANGE_],[1],[with Sealevelchange capability])
+-
+ fi
+-
+ AM_CONDITIONAL([SEALEVELCHANGE], [test x$HAVE_SEALEVELCHANGE = xyes])
+-
+ AC_MSG_RESULT($HAVE_SEALEVELCHANGE)
+-
+ dnl }}}
+ dnl with-Smb{{{
+-
+ AC_ARG_WITH([Smb],
+-
+ 	AS_HELP_STRING([--with-Smb = YES], [compile with Smb capabilities (default is yes)]),
+-
+ 	[SMB=$withval],[SMB=yes])
+-
+ AC_MSG_CHECKING(for Smb capability compilation)
+ 
+-
+ HAVE_SMB=no 
+-
+ if test "x$SMB" = "xyes"; then
+-
+ 	HAVE_SMB=yes
+-
+ 	AC_DEFINE([_HAVE_SMB_],[1],[with Smb capability])
+-
+ fi
+-
+ AM_CONDITIONAL([SMB], [test x$HAVE_SMB = xyes])
+-
+ AC_MSG_RESULT($HAVE_SMB)
+-
+ dnl }}}
+ dnl with-Smooth{{{
+-
+ AC_ARG_WITH([Smooth],
+-
+ 	AS_HELP_STRING([--with-Smooth = YES], [compile with Smooth capabilities (default is yes)]),
+-
+ 	[SMOOTH=$withval],[SMOOTH=yes])
+-
+ AC_MSG_CHECKING(for Smooth capability compilation)
+ 
+-
+ HAVE_SMOOTH=no 
+-
+ if test "x$SMOOTH" = "xyes"; then
+-
+ 	HAVE_SMOOTH=yes
+-
+ 	AC_DEFINE([_HAVE_SMOOTH_],[1],[with Smooth capability])
+-
+ fi
+-
+ AM_CONDITIONAL([SMOOTH], [test x$HAVE_SMOOTH = xyes])
+-
+ AC_MSG_RESULT($HAVE_SMOOTH)
+-
+ dnl }}}
+ dnl with-Stressbalance{{{
+-
+ AC_ARG_WITH([Stressbalance],
+-
+ 	AS_HELP_STRING([--with-Stressbalance = YES], [compile with Stressbalance capabilities (default is yes)]),
+-
+ 	[STRESSBALANCE=$withval],[STRESSBALANCE=yes])
+-
+ AC_MSG_CHECKING(for Stressbalance capability compilation)
+ 
+-
+ HAVE_STRESSBALANCE=no 
+-
+ if test "x$STRESSBALANCE" = "xyes"; then
+-
+ 	HAVE_STRESSBALANCE=yes
+-
+ 	AC_DEFINE([_HAVE_STRESSBALANCE_],[1],[with Stressbalance capability])
+-
+ fi
+-
+ AM_CONDITIONAL([STRESSBALANCE], [test x$HAVE_STRESSBALANCE = xyes])
+-
+ AC_MSG_RESULT($HAVE_STRESSBALANCE)
+-
+ dnl }}}
+ dnl with-StressbalanceSIA{{{
+-
+ AC_ARG_WITH([StressbalanceSIA],
+-
+ 	AS_HELP_STRING([--with-StressbalanceSIA = YES], [compile with StressbalanceSIA capabilities (default is yes)]),
+-
+ 	[STRESSBALANCESIA=$withval],[STRESSBALANCESIA=yes])
+-
+ AC_MSG_CHECKING(for StressbalanceSIA capability compilation)
+ 
+-
+ HAVE_STRESSBALANCESIA=no 
+-
+ if test "x$STRESSBALANCESIA" = "xyes"; then
+-
+ 	HAVE_STRESSBALANCESIA=yes
+-
+ 	AC_DEFINE([_HAVE_STRESSBALANCESIA_],[1],[with StressbalanceSIA capability])
+-
+ fi
+-
+ AM_CONDITIONAL([STRESSBALANCESIA], [test x$HAVE_STRESSBALANCESIA = xyes])
+-
+ AC_MSG_RESULT($HAVE_STRESSBALANCESIA)
+-
+ dnl }}}
+ dnl with-StressbalanceVertical{{{
+-
+ AC_ARG_WITH([StressbalanceVertical],
+-
+ 	AS_HELP_STRING([--with-StressbalanceVertical = YES], [compile with StressbalanceVertical capabilities (default is yes)]),
+-
+ 	[STRESSBALANCEVERTICAL=$withval],[STRESSBALANCEVERTICAL=yes])
+-
+ AC_MSG_CHECKING(for StressbalanceVertical capability compilation)
+ 
+-
+ HAVE_STRESSBALANCEVERTICAL=no 
+-
+ if test "x$STRESSBALANCEVERTICAL" = "xyes"; then
+-
+ 	HAVE_STRESSBALANCEVERTICAL=yes
+-
+ 	AC_DEFINE([_HAVE_STRESSBALANCEVERTICAL_],[1],[with StressbalanceVertical capability])
+-
+ fi
+-
+ AM_CONDITIONAL([STRESSBALANCEVERTICAL], [test x$HAVE_STRESSBALANCEVERTICAL = xyes])
+-
+ AC_MSG_RESULT($HAVE_STRESSBALANCEVERTICAL)
+-
+ dnl }}}
+ dnl with-Thermal{{{
+-
+ AC_ARG_WITH([Thermal],
+-
+ 	AS_HELP_STRING([--with-Thermal = YES], [compile with Thermal capabilities (default is yes)]),
+-
+ 	[THERMAL=$withval],[THERMAL=yes])
+-
+ AC_MSG_CHECKING(for Thermal capability compilation)
+ 
+-
+ HAVE_THERMAL=no 
+-
+ if test "x$THERMAL" = "xyes"; then
+-
+ 	HAVE_THERMAL=yes
+-
+ 	AC_DEFINE([_HAVE_THERMAL_],[1],[with Thermal capability])
+-
+ fi
+-
+ AM_CONDITIONAL([THERMAL], [test x$HAVE_THERMAL = xyes])
+-
+ AC_MSG_RESULT($HAVE_THERMAL)
+-
+ dnl }}}
+ dnl with-UzawaPressure{{{
+-
+ AC_ARG_WITH([UzawaPressure],
+-
+ 	AS_HELP_STRING([--with-UzawaPressure = YES], [compile with UzawaPressure capabilities (default is yes)]),
+-
+ 	[UZAWAPRESSURE=$withval],[UZAWAPRESSURE=yes])
+-
+ AC_MSG_CHECKING(for UzawaPressure capability compilation)
+ 
+-
+ HAVE_UZAWAPRESSURE=no 
+-
+ if test "x$UZAWAPRESSURE" = "xyes"; then
+-
+ 	HAVE_UZAWAPRESSURE=yes
+-
+ 	AC_DEFINE([_HAVE_UZAWAPRESSURE_],[1],[with UzawaPressure capability])
+-
+ fi
+-
+ AM_CONDITIONAL([UZAWAPRESSURE], [test x$HAVE_UZAWAPRESSURE = xyes])
+-
+ AC_MSG_RESULT($HAVE_UZAWAPRESSURE)
+-
+ dnl }}}
+ 
+ ])
+Index: ../trunk-jpl/src/c/Makefile.am
+===================================================================
+--- ../trunk-jpl/src/c/Makefile.am	(revision 27153)
++++ ../trunk-jpl/src/c/Makefile.am	(revision 27154)
+@@ -400,7 +400,7 @@
+ issm_sources += ./toolkits/mumps/MumpsSolve.cpp
+ endif
+ #}}}
+-#GSL sources {{{
++# GSL sources {{{
+ if GSL
+ issm_sources += ./toolkits/gsl/DenseGslSolve.cpp
+ endif
+@@ -420,6 +420,9 @@
+ if ADJOINTHORIZ
+ issm_sources += ./analyses/AdjointHorizAnalysis.cpp
+ endif
++if AGE
++issm_sources += ./analyses/AgeAnalysis.cpp
++endif
+ if BALANCETHICKNESS
+ issm_sources += ./analyses/BalancethicknessAnalysis.cpp
+ endif
+Index: ../trunk-jpl/src/c/analyses/AgeAnalysis.cpp
+===================================================================
+--- ../trunk-jpl/src/c/analyses/AgeAnalysis.cpp	(nonexistent)
++++ ../trunk-jpl/src/c/analyses/AgeAnalysis.cpp	(revision 27154)
+@@ -0,0 +1,537 @@
++#include "./AgeAnalysis.h"
++#include "../toolkits/toolkits.h"
++#include "../classes/classes.h"
++#include "../shared/shared.h"
++#include "../modules/modules.h"
++
++/*Model processing*/
++void AgeAnalysis::CreateConstraints(Constraints* constraints,IoModel* iomodel){/*{{{*/
++
++	IoModelToConstraintsx(constraints,iomodel,"md.age.spcage",AgeAnalysisEnum,P1Enum);
++
++}/*}}}*/
++void AgeAnalysis::CreateLoads(Loads* loads, IoModel* iomodel){/*{{{*/
++
++	if(iomodel->domaintype==Domain2DhorizontalEnum) _error_("2d meshes not supported yet");
++
++}/*}}}*/
++void AgeAnalysis::CreateNodes(Nodes* nodes,IoModel* iomodel,bool isamr){/*{{{*/
++
++	int finiteelement = P1Enum;
++
++	if(iomodel->domaintype==Domain3DEnum) iomodel->FetchData(2,"md.mesh.vertexonbase","md.mesh.vertexonsurface");
++	::CreateNodes(nodes,iomodel,AgeAnalysisEnum,finiteelement);
++	iomodel->DeleteData(2,"md.mesh.vertexonbase","md.mesh.vertexonsurface");
++}/*}}}*/
++int  AgeAnalysis::DofsPerNode(int** doflist,int domaintype,int approximation){/*{{{*/
++	return 1;
++}/*}}}*/
++void AgeAnalysis::UpdateElements(Elements* elements,Inputs* inputs,IoModel* iomodel,int analysis_counter,int analysis_type){/*{{{*/
++
++	/*Now, is the model 3d? otherwise, do nothing: */
++	if(iomodel->domaintype==Domain2DhorizontalEnum)return;
++
++	/*Update elements: */
++	int finiteelement = P1Enum;
++	int counter=0;
++	for(int i=0;i<iomodel->numberofelements;i++){
++		if(iomodel->my_elements[i]){
++			Element* element=(Element*)elements->GetObjectByOffset(counter);
++			element->Update(inputs,i,iomodel,analysis_counter,analysis_type,finiteelement);
++			counter++;
++		}
++	}
++
++	bool dakota_analysis, ismovingfront;
++	iomodel->FetchDataToInput(inputs,elements,"md.geometry.thickness",ThicknessEnum);
++	iomodel->FetchDataToInput(inputs,elements,"md.geometry.surface",SurfaceEnum);
++	iomodel->FetchDataToInput(inputs,elements,"md.geometry.base",BaseEnum);
++	iomodel->FetchDataToInput(inputs,elements,"md.mask.ice_levelset",MaskIceLevelsetEnum);
++	iomodel->FetchDataToInput(inputs,elements,"md.mask.ocean_levelset",MaskOceanLevelsetEnum);
++	if(iomodel->domaintype!=Domain2DhorizontalEnum){
++		iomodel->FetchDataToInput(inputs,elements,"md.mesh.vertexonbase",MeshVertexonbaseEnum);
++		iomodel->FetchDataToInput(inputs,elements,"md.mesh.vertexonsurface",MeshVertexonsurfaceEnum);
++	}
++	iomodel->FetchDataToInput(inputs,elements,"md.mesh.vertexonbase",MeshVertexonbaseEnum);
++	iomodel->FetchDataToInput(inputs,elements,"md.mesh.vertexonsurface",MeshVertexonsurfaceEnum);
++	iomodel->FetchDataToInput(inputs,elements,"md.initialization.age",AgeEnum);
++	iomodel->FetchDataToInput(inputs,elements,"md.initialization.vx",VxEnum);
++	iomodel->FetchDataToInput(inputs,elements,"md.initialization.vy",VyEnum);
++	iomodel->FetchDataToInput(inputs,elements,"md.initialization.vz",VzEnum);
++	InputUpdateFromConstantx(inputs,elements,0.,VxMeshEnum);
++	InputUpdateFromConstantx(inputs,elements,0.,VyMeshEnum);
++	InputUpdateFromConstantx(inputs,elements,0.,VzMeshEnum);
++}/*}}}*/
++void AgeAnalysis::UpdateParameters(Parameters* parameters,IoModel* iomodel,int solution_enum,int analysis_enum){/*{{{*/
++
++	int     numoutputs;
++	char**  requestedoutputs = NULL;
++
++	parameters->AddObject(iomodel->CopyConstantObject("md.age.stabilization",AgeStabilizationEnum));
++
++	iomodel->FindConstant(&requestedoutputs,&numoutputs,"md.age.requested_outputs");
++	parameters->AddObject(new IntParam(AgeNumRequestedOutputsEnum,numoutputs));
++	if(numoutputs)parameters->AddObject(new StringArrayParam(AgeRequestedOutputsEnum,requestedoutputs,numoutputs));
++	iomodel->DeleteData(&requestedoutputs,numoutputs,"md.age.requested_outputs");
++
++}/*}}}*/
++
++/*Finite Element Analysis*/
++void           AgeAnalysis::Core(FemModel* femmodel){/*{{{*/
++	_error_("not implemented");
++}/*}}}*/
++void           AgeAnalysis::PreCore(FemModel* femmodel){/*{{{*/
++	_error_("not implemented");
++}/*}}}*/
++ElementVector* AgeAnalysis::CreateDVector(Element* element){/*{{{*/
++	/*Default, return NULL*/
++	return NULL;
++}/*}}}*/
++ElementMatrix* AgeAnalysis::CreateJacobianMatrix(Element* element){/*{{{*/
++_error_("Not implemented");
++}/*}}}*/
++ElementMatrix* AgeAnalysis::CreateKMatrix(Element* element){/*{{{*/
++
++	_error_("STOP");
++	/* Check if ice in element */
++	if(!element->IsIceInElement()) return NULL;
++
++	/*compute all stiffness matrices for this element*/
++	ElementMatrix* Ke1=CreateKMatrixVolume(element);
++	ElementMatrix* Ke2=CreateKMatrixShelf(element);
++	ElementMatrix* Ke =new ElementMatrix(Ke1,Ke2);
++
++	/*clean-up and return*/
++	delete Ke1;
++	delete Ke2;
++	return Ke;
++}/*}}}*/
++ElementMatrix* AgeAnalysis::CreateKMatrixShelf(Element* element){/*{{{*/
++
++	/* Check if ice in element */
++	if(!element->IsIceInElement()) return NULL;
++
++	/*Initialize Element matrix and return if necessary*/
++	if(!element->IsOnBase() || !element->IsAllFloating()) return NULL;
++
++	IssmDouble  dt,Jdet,D;
++	IssmDouble *xyz_list_base = NULL;
++
++	/*Get basal element*/
++	if(!element->IsOnBase() || !element->IsAllFloating()) return NULL;
++
++	/*Fetch number of nodes for this finite element*/
++	int numnodes = element->GetNumberOfNodes();
++
++	/*Initialize vectors*/
++	ElementMatrix* Ke    = element->NewElementMatrix();
++	IssmDouble*    basis = xNew<IssmDouble>(numnodes);
++
++	/*Retrieve all inputs and parameters*/
++	element->GetVerticesCoordinatesBase(&xyz_list_base);
++	element->FindParam(&dt,TimesteppingTimeStepEnum);
++	IssmDouble gravity             = element->FindParam(ConstantsGEnum);
++	IssmDouble rho_water           = element->FindParam(MaterialsRhoSeawaterEnum);
++	IssmDouble rho_ice             = element->FindParam(MaterialsRhoIceEnum);
++	IssmDouble heatcapacity        = element->FindParam(MaterialsHeatcapacityEnum);
++	IssmDouble mixed_layer_capacity= element->FindParam(MaterialsMixedLayerCapacityEnum);
++
++	/* Start  looping on the number of gaussian points: */
++	Gauss* gauss=element->NewGaussBase(4);
++	while(gauss->next()){
++
++		element->JacobianDeterminantBase(&Jdet,xyz_list_base,gauss);
++		element->NodalFunctions(basis,gauss);
++
++		D=gauss->weight*Jdet*rho_water*mixed_layer_capacity/(heatcapacity*rho_ice);
++		if(reCast<bool,IssmDouble>(dt)) D=dt*D;
++		for(int i=0;i<numnodes;i++) for(int j=0;j<numnodes;j++) Ke->values[i*numnodes+j] += D*basis[i]*basis[j];
++	}
++
++	/*Clean up and return*/
++	delete gauss;
++	xDelete<IssmDouble>(basis);
++	xDelete<IssmDouble>(xyz_list_base);
++	return Ke;
++}/*}}}*/
++ElementMatrix* AgeAnalysis::CreateKMatrixVolume(Element* element){/*{{{*/
++
++	/* Check if ice in element */
++	if(!element->IsIceInElement()) return NULL;
++
++	/*Intermediaries */
++	int         stabilization;
++	IssmDouble  Jdet,dt,u,v,w,um,vm,wm,vel;
++	IssmDouble  h,hx,hy,hz,vx,vy,vz,D_scalar;
++	IssmDouble  tau_parameter,diameter;
++	IssmDouble  tau_parameter_anisotropic[2],tau_parameter_hor,tau_parameter_ver;	
++	IssmDouble* xyz_list = NULL;
++
++	/*Fetch number of nodes and dof for this finite element*/
++	int numnodes = element->GetNumberOfNodes();
++
++	/*Initialize Element vector and other vectors*/
++	ElementMatrix* Ke     = element->NewElementMatrix();
++	IssmDouble*    basis  = xNew<IssmDouble>(numnodes);
++	IssmDouble*    dbasis = xNew<IssmDouble>(3*numnodes);
++	IssmDouble     K[3][3];
++
++	/*Retrieve all inputs and parameters*/
++	element->GetVerticesCoordinates(&xyz_list);
++	element->FindParam(&dt,TimesteppingTimeStepEnum);
++	element->FindParam(&stabilization,AgeStabilizationEnum);
++	IssmDouble  rho_water           = element->FindParam(MaterialsRhoSeawaterEnum);
++	IssmDouble  rho_ice             = element->FindParam(MaterialsRhoIceEnum);
++	IssmDouble  gravity             = element->FindParam(ConstantsGEnum);
++	IssmDouble  heatcapacity        = element->FindParam(MaterialsHeatcapacityEnum);
++	IssmDouble  thermalconductivity = 1.;
++	IssmDouble  kappa = thermalconductivity/(rho_ice*heatcapacity);
++	Input* vx_input  = element->GetInput(VxEnum);     _assert_(vx_input);
++	Input* vy_input  = element->GetInput(VyEnum);     _assert_(vy_input);
++	Input* vz_input  = element->GetInput(VzEnum);     _assert_(vz_input);
++	Input* vxm_input = element->GetInput(VxMeshEnum); _assert_(vxm_input);
++	Input* vym_input = element->GetInput(VyMeshEnum); _assert_(vym_input);
++	Input* vzm_input = element->GetInput(VzMeshEnum); _assert_(vzm_input);
++
++	/* Start  looping on the number of gaussian points: */
++	Gauss* gauss=element->NewGauss(4);
++	while(gauss->next()){
++
++		element->JacobianDeterminant(&Jdet,xyz_list,gauss);
++		element->NodalFunctions(basis,gauss);
++		element->NodalFunctionsDerivatives(dbasis,xyz_list,gauss);
++
++		D_scalar=gauss->weight*Jdet;
++		if(dt!=0.) D_scalar=D_scalar*dt;
++
++		/*Conduction: */
++		for(int i=0;i<numnodes;i++){
++			for(int j=0;j<numnodes;j++){
++				Ke->values[i*numnodes+j] += D_scalar*kappa*(
++							dbasis[0*numnodes+j]*dbasis[0*numnodes+i] + dbasis[1*numnodes+j]*dbasis[1*numnodes+i] + dbasis[2*numnodes+j]*dbasis[2*numnodes+i]
++							);
++			}
++		}
++
++		/*Advection: */
++		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;
++		for(int i=0;i<numnodes;i++){
++			for(int j=0;j<numnodes;j++){
++				Ke->values[i*numnodes+j] += D_scalar*(
++							vx*dbasis[0*numnodes+j]*basis[i] + vy*dbasis[1*numnodes+j]*basis[i] +vz*dbasis[2*numnodes+j]*basis[i]
++							);
++			}
++		}
++
++		/*Transient: */
++		if(dt!=0.){
++			D_scalar=gauss->weight*Jdet;
++			for(int i=0;i<numnodes;i++) for(int j=0;j<numnodes;j++) Ke->values[i*numnodes+j] += D_scalar*basis[j]*basis[i];
++			D_scalar=D_scalar*dt;
++		}
++
++		/*Artifficial diffusivity*/
++		if(stabilization==1){
++			element->ElementSizes(&hx,&hy,&hz);
++			vel=sqrt(vx*vx + vy*vy + vz*vz)+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)*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);
++			for(int i=0;i<3;i++) for(int j=0;j<3;j++) K[i][j] = D_scalar*K[i][j];
++
++			for(int i=0;i<numnodes;i++){
++				for(int j=0;j<numnodes;j++){
++					Ke->values[i*numnodes+j] += (
++								dbasis[0*numnodes+i] *(K[0][0]*dbasis[0*numnodes+j] + K[0][1]*dbasis[1*numnodes+j]+ K[0][2]*dbasis[2*numnodes+j]) +
++								dbasis[1*numnodes+i] *(K[1][0]*dbasis[0*numnodes+j] + K[1][1]*dbasis[1*numnodes+j]+ K[1][2]*dbasis[2*numnodes+j]) +
++								dbasis[2*numnodes+i] *(K[2][0]*dbasis[0*numnodes+j] + K[2][1]*dbasis[1*numnodes+j]+ K[2][2]*dbasis[2*numnodes+j]) 
++								);
++				}
++			}
++		}
++		else if(stabilization==2){
++			diameter=element->MinEdgeLength(xyz_list);
++			tau_parameter=element->StabilizationParameter(u-um,v-vm,w-wm,diameter,kappa);
++			for(int i=0;i<numnodes;i++){
++				for(int j=0;j<numnodes;j++){
++					Ke->values[i*numnodes+j]+=tau_parameter*D_scalar*
++					  ((u-um)*dbasis[0*numnodes+i]+(v-vm)*dbasis[1*numnodes+i]+(w-wm)*dbasis[2*numnodes+i])*
++					  ((u-um)*dbasis[0*numnodes+j]+(v-vm)*dbasis[1*numnodes+j]+(w-wm)*dbasis[2*numnodes+j]);
++				}
++			}
++			if(dt!=0.){
++				D_scalar=gauss->weight*Jdet;
++				for(int i=0;i<numnodes;i++){
++					for(int j=0;j<numnodes;j++){
++						Ke->values[i*numnodes+j]+=tau_parameter*D_scalar*basis[j]*((u-um)*dbasis[0*numnodes+i]+(v-vm)*dbasis[1*numnodes+i]+(w-wm)*dbasis[2*numnodes+i]);
++					}
++				}
++			}
++		}
++		/*anisotropic SUPG*/
++		else if(stabilization==3){
++			element->NodalFunctionsDerivatives(dbasis,xyz_list,gauss);
++			element->ElementSizes(&hx,&hy,&hz);
++			element->StabilizationParameterAnisotropic(&tau_parameter_anisotropic[0],u-um,v-vm,w-wm,hx,hy,hz,kappa);
++			tau_parameter_hor=tau_parameter_anisotropic[0];
++			tau_parameter_ver=tau_parameter_anisotropic[1];
++			for(int i=0;i<numnodes;i++){
++				for(int j=0;j<numnodes;j++){
++					Ke->values[i*numnodes+j]+=D_scalar*
++						(sqrt(tau_parameter_hor)*(u-um)*dbasis[0*numnodes+i]+sqrt(tau_parameter_hor)*(v-vm)*dbasis[1*numnodes+i]+sqrt(tau_parameter_ver)*(w-wm)*dbasis[2*numnodes+i])*
++						(sqrt(tau_parameter_hor)*(u-um)*dbasis[0*numnodes+j]+sqrt(tau_parameter_hor)*(v-vm)*dbasis[1*numnodes+j]+sqrt(tau_parameter_ver)*(w-wm)*dbasis[2*numnodes+j]);
++				}
++			}
++		}
++	}
++
++	/*Clean up and return*/
++	xDelete<IssmDouble>(xyz_list);
++	xDelete<IssmDouble>(basis);
++	xDelete<IssmDouble>(dbasis);
++	delete gauss;
++	return Ke;
++}/*}}}*/
++ElementVector* AgeAnalysis::CreatePVector(Element* element){/*{{{*/
++
++	_error_("STOP");
++
++	/* Check if ice in element */
++	if(!element->IsIceInElement()) return NULL;
++
++	/*compute all load vectors for this element*/
++	ElementVector* pe1=CreatePVectorVolume(element);
++	ElementVector* pe2=CreatePVectorSheet(element);
++	ElementVector* pe3=CreatePVectorShelf(element);
++	ElementVector* pe =new ElementVector(pe1,pe2,pe3);
++
++	/*clean-up and return*/
++	delete pe1;
++	delete pe2;
++	delete pe3;
++	return pe;
++}/*}}}*/
++ElementVector* AgeAnalysis::CreatePVectorSheet(Element* element){/*{{{*/
++
++	/* Check if ice in element */
++	if(!element->IsIceInElement()) return NULL;
++
++	/* Geothermal flux on ice sheet base and basal friction */
++	if(!element->IsOnBase() || element->IsAllFloating()) return NULL;
++
++	IssmDouble  dt,Jdet,geothermalflux,vx,vy,vz;
++	IssmDouble  alpha2,scalar,basalfriction,heatflux;
++	IssmDouble *xyz_list_base = NULL;
++
++	/*Fetch number of nodes for this finite element*/
++	int numnodes = element->GetNumberOfNodes();
++
++	/*Initialize vectors*/
++	ElementVector* pe    = element->NewElementVector();
++	IssmDouble*    basis = xNew<IssmDouble>(numnodes);
++
++	/*Retrieve all inputs and parameters*/
++	element->GetVerticesCoordinatesBase(&xyz_list_base);
++	element->FindParam(&dt,TimesteppingTimeStepEnum);
++	Input* vx_input             = element->GetInput(VxEnum);                          _assert_(vx_input);
++	Input* vy_input             = element->GetInput(VyEnum);                          _assert_(vy_input);
++	Input* vz_input             = element->GetInput(VzEnum);                          _assert_(vz_input);
++	Input* geothermalflux_input = element->GetInput(BasalforcingsGeothermalfluxEnum); _assert_(geothermalflux_input);
++	IssmDouble  rho_ice             = element->FindParam(MaterialsRhoIceEnum);
++	IssmDouble  heatcapacity        = element->FindParam(MaterialsHeatcapacityEnum);
++
++	/*Build friction element, needed later: */
++	Friction* friction=new Friction(element,3);
++
++	/* Start  looping on the number of gaussian points: */
++	Gauss* gauss   = element->NewGaussBase(4);
++	while(gauss->next()){
++
++		element->JacobianDeterminantBase(&Jdet,xyz_list_base,gauss);
++		element->NodalFunctions(basis,gauss);
++
++		geothermalflux_input->GetInputValue(&geothermalflux,gauss);
++		friction->GetAlpha2(&alpha2,gauss);
++		vx_input->GetInputValue(&vx,gauss);
++		vy_input->GetInputValue(&vy,gauss);
++		vz_input->GetInputValue(&vz,gauss);
++		vz = 0.;//FIXME
++		basalfriction = alpha2*(vx*vx + vy*vy + vz*vz);
++		heatflux      = (basalfriction+geothermalflux)/(rho_ice*heatcapacity);
++
++		scalar = gauss->weight*Jdet*heatflux;
++		if(dt!=0.) scalar=dt*scalar;
++
++		for(int i=0;i<numnodes;i++) pe->values[i]+=scalar*basis[i];
++	}
++
++	/*Clean up and return*/
++	delete gauss;
++	delete friction;
++	xDelete<IssmDouble>(basis);
++	xDelete<IssmDouble>(xyz_list_base);
++	return pe;
++}/*}}}*/
++ElementVector* AgeAnalysis::CreatePVectorShelf(Element* element){/*{{{*/
++
++	/* Check if ice in element */
++	if(!element->IsIceInElement()) return NULL;
++
++	IssmDouble  t_pmp,dt,Jdet,scalar_ocean,pressure;
++	IssmDouble *xyz_list_base = NULL;
++
++	/*Get basal element*/
++	if(!element->IsOnBase() || !element->IsAllFloating()) return NULL;
++
++	/*Fetch number of nodes for this finite element*/
++	int numnodes = element->GetNumberOfNodes();
++
++	/*Initialize vectors*/
++	ElementVector* pe    = element->NewElementVector();
++	IssmDouble*    basis = xNew<IssmDouble>(numnodes);
++
++	/*Retrieve all inputs and parameters*/
++	element->GetVerticesCoordinatesBase(&xyz_list_base);
++	element->FindParam(&dt,TimesteppingTimeStepEnum);
++	Input*      pressure_input=element->GetInput(PressureEnum); _assert_(pressure_input);
++	IssmDouble  gravity             = element->FindParam(ConstantsGEnum);
++	IssmDouble  rho_water           = element->FindParam(MaterialsRhoSeawaterEnum);
++	IssmDouble  rho_ice             = element->FindParam(MaterialsRhoIceEnum);
++	IssmDouble  heatcapacity        = element->FindParam(MaterialsHeatcapacityEnum);
++	IssmDouble  mixed_layer_capacity= element->FindParam(MaterialsMixedLayerCapacityEnum);
++
++	/* Start  looping on the number of gaussian points: */
++	Gauss* gauss=element->NewGaussBase(4);
++	while(gauss->next()){
++
++		element->JacobianDeterminantBase(&Jdet,xyz_list_base,gauss);
++		element->NodalFunctions(basis,gauss);
++
++		pressure_input->GetInputValue(&pressure,gauss);
++		t_pmp=element->TMeltingPoint(pressure);
++
++		scalar_ocean=gauss->weight*Jdet*rho_water*mixed_layer_capacity*(t_pmp)/(heatcapacity*rho_ice);
++		if(reCast<bool,IssmDouble>(dt)) scalar_ocean=dt*scalar_ocean;
++
++		for(int i=0;i<numnodes;i++) pe->values[i]+=scalar_ocean*basis[i];
++	}
++
++	/*Clean up and return*/
++	delete gauss;
++	xDelete<IssmDouble>(basis);
++	xDelete<IssmDouble>(xyz_list_base);
++	return pe;
++}/*}}}*/
++ElementVector* AgeAnalysis::CreatePVectorVolume(Element* element){/*{{{*/
++
++	/* Check if ice in element */
++	if(!element->IsIceInElement()) return NULL;
++
++	/*Intermediaries*/
++	int         stabilization;
++	IssmDouble  Jdet,phi,dt;
++	IssmDouble  temperature;
++	IssmDouble  tau_parameter,diameter,hx,hy,hz;
++	IssmDouble  tau_parameter_anisotropic[2],tau_parameter_hor,tau_parameter_ver;
++	IssmDouble  u,v,w;
++	IssmDouble  scalar_def,scalar_transient;
++	IssmDouble* xyz_list = NULL;
++
++	/*Fetch number of nodes and dof for this finite element*/
++	int numnodes = element->GetNumberOfNodes();
++
++	/*Initialize Element vector*/
++	ElementVector* pe     = element->NewElementVector();
++	IssmDouble*    basis  = xNew<IssmDouble>(numnodes);
++	IssmDouble*    dbasis = xNew<IssmDouble>(3*numnodes);
++
++	/*Retrieve all inputs and parameters*/
++	element->GetVerticesCoordinates(&xyz_list);
++	IssmDouble  rho_ice             = element->FindParam(MaterialsRhoIceEnum);
++	IssmDouble  heatcapacity        = element->FindParam(MaterialsHeatcapacityEnum);
++	IssmDouble  thermalconductivity = 1.;
++	IssmDouble  kappa = thermalconductivity/(rho_ice*heatcapacity);
++	element->FindParam(&dt,TimesteppingTimeStepEnum);
++	element->FindParam(&stabilization,AgeStabilizationEnum);
++	Input* vx_input=element->GetInput(VxEnum); _assert_(vx_input);
++	Input* vy_input=element->GetInput(VyEnum); _assert_(vy_input);
++	Input* vz_input=element->GetInput(VzEnum); _assert_(vz_input);
++	Input* temperature_input = NULL;
++	if(reCast<bool,IssmDouble>(dt)){temperature_input = element->GetInput(TemperatureEnum); _assert_(temperature_input);}
++
++	/* Start  looping on the number of gaussian points: */
++	Gauss* gauss=element->NewGauss(4);
++	while(gauss->next()){
++
++		element->JacobianDeterminant(&Jdet,xyz_list,gauss);
++		element->NodalFunctions(basis,gauss);
++		element->ViscousHeating(&phi,xyz_list,gauss,vx_input,vy_input,vz_input);
++
++		scalar_def=phi/(rho_ice*heatcapacity)*Jdet*gauss->weight;
++		if(reCast<bool,IssmDouble>(dt)) scalar_def=scalar_def*dt;
++
++		for(int i=0;i<numnodes;i++) pe->values[i]+=scalar_def*basis[i];
++
++		/* Build transient now */
++		if(reCast<bool,IssmDouble>(dt)){
++			temperature_input->GetInputValue(&temperature, gauss);
++			scalar_transient=temperature*Jdet*gauss->weight;
++			for(int i=0;i<numnodes;i++) pe->values[i]+=scalar_transient*basis[i];
++		}
++
++		if(stabilization==2){
++			element->NodalFunctionsDerivatives(dbasis,xyz_list,gauss);
++			diameter=element->MinEdgeLength(xyz_list);
++			vx_input->GetInputValue(&u,gauss);
++			vy_input->GetInputValue(&v,gauss);
++			vz_input->GetInputValue(&w,gauss);
++
++			tau_parameter=element->StabilizationParameter(u,v,w,diameter,kappa);
++
++			for(int i=0;i<numnodes;i++) pe->values[i]+=tau_parameter*scalar_def*(u*dbasis[0*numnodes+i]+v*dbasis[1*numnodes+i]+w*dbasis[2*numnodes+i]);
++			if(reCast<bool,IssmDouble>(dt)){
++				for(int i=0;i<numnodes;i++) pe->values[i]+=tau_parameter*scalar_transient*(u*dbasis[0*numnodes+i]+v*dbasis[1*numnodes+i]+w*dbasis[2*numnodes+i]);
++			}
++		}
++		/* anisotropic SUPG */
++		else if(stabilization==3){
++			element->NodalFunctionsDerivatives(dbasis,xyz_list,gauss);
++			element->ElementSizes(&hx,&hy,&hz);
++			vx_input->GetInputValue(&u,gauss);
++			vy_input->GetInputValue(&v,gauss);
++			vz_input->GetInputValue(&w,gauss);
++			element->StabilizationParameterAnisotropic(&tau_parameter_anisotropic[0],u,v,w,hx,hy,hz,kappa);
++			tau_parameter_hor=tau_parameter_anisotropic[0];
++			tau_parameter_ver=tau_parameter_anisotropic[1];
++
++			for(int i=0;i<numnodes;i++) pe->values[i]+=scalar_def*(tau_parameter_hor*u*dbasis[0*numnodes+i]+tau_parameter_hor*v*dbasis[1*numnodes+i]+tau_parameter_ver*w*dbasis[2*numnodes+i]);
++		}
++	}
++
++	/*Clean up and return*/
++	xDelete<IssmDouble>(basis);
++	xDelete<IssmDouble>(dbasis);
++	xDelete<IssmDouble>(xyz_list);
++	delete gauss;
++	return pe;
++
++}/*}}}*/
++void           AgeAnalysis::GetSolutionFromInputs(Vector<IssmDouble>* solution,Element* element){/*{{{*/
++	element->GetSolutionFromInputsOneDof(solution,AgeEnum);
++}/*}}}*/
++void           AgeAnalysis::GradientJ(Vector<IssmDouble>* gradient,Element*  element,int control_type,int control_interp,int control_index){/*{{{*/
++	_error_("Not implemented yet");
++}/*}}}*/
++void           AgeAnalysis::InputUpdateFromSolution(IssmDouble* solution,Element* element){/*{{{*/
++
++	element->InputUpdateFromSolutionOneDof(solution,AgeEnum);
++
++}/*}}}*/
++void           AgeAnalysis::UpdateConstraints(FemModel* femmodel){/*{{{*/
++	SetActiveNodesLSMx(femmodel);
++
++	_error_("Should also automatically constrain surface/basal nodes where we have inflow");
++}/*}}}*/
+Index: ../trunk-jpl/src/c/analyses/AgeAnalysis.h
+===================================================================
+--- ../trunk-jpl/src/c/analyses/AgeAnalysis.h	(nonexistent)
++++ ../trunk-jpl/src/c/analyses/AgeAnalysis.h	(revision 27154)
+@@ -0,0 +1,39 @@
++/*! \file AgeAnalysis.h 
++ *  \brief: header file for generic external result object
++ */
++
++#ifndef _AGEANALYSIS_
++#define _AGEANALYSIS_
++
++/*Headers*/
++#include "./Analysis.h"
++
++class AgeAnalysis: public Analysis{
++
++	public:
++		/*Model processing*/
++		void CreateConstraints(Constraints* constraints,IoModel* iomodel);
++		void CreateLoads(Loads* loads, IoModel* iomodel);
++		void CreateNodes(Nodes* nodes,IoModel* iomodel,bool isamr=false);
++		int  DofsPerNode(int** doflist,int domaintype,int approximation);
++		void UpdateElements(Elements* elements,Inputs* inputs,IoModel* iomodel,int analysis_counter,int analysis_type);
++		void UpdateParameters(Parameters* parameters,IoModel* iomodel,int solution_enum,int analysis_enum);
++
++		/*Finite element Analysis*/
++		void           Core(FemModel* femmodel);
++		void           PreCore(FemModel* femmodel);
++		ElementVector* CreateDVector(Element* element);
++		ElementMatrix* CreateJacobianMatrix(Element* element);
++		ElementMatrix* CreateKMatrix(Element* element);
++		ElementMatrix* CreateKMatrixShelf(Element* element);
++		ElementMatrix* CreateKMatrixVolume(Element* element);
++		ElementVector* CreatePVector(Element* element);
++		ElementVector* CreatePVectorSheet(Element* element);
++		ElementVector* CreatePVectorShelf(Element* element);
++		ElementVector* CreatePVectorVolume(Element* element);
++		void           GetSolutionFromInputs(Vector<IssmDouble>* solution,Element* element);
++		void           GradientJ(Vector<IssmDouble>* gradient,Element*  element,int control_type,int control_interp,int control_index);
++		void           InputUpdateFromSolution(IssmDouble* solution,Element* element);
++		void           UpdateConstraints(FemModel* femmodel);
++};
++#endif
+Index: ../trunk-jpl/src/c/analyses/EnumToAnalysis.cpp
+===================================================================
+--- ../trunk-jpl/src/c/analyses/EnumToAnalysis.cpp	(revision 27153)
++++ ../trunk-jpl/src/c/analyses/EnumToAnalysis.cpp	(revision 27154)
+@@ -25,6 +25,9 @@
+ 		#ifdef _HAVE_ADJOINTHORIZ_
+ 		case AdjointHorizAnalysisEnum : return new AdjointHorizAnalysis();
+ 		#endif
++		#ifdef _HAVE_AGE_
++		case AgeAnalysisEnum : return new AgeAnalysis();
++		#endif
+ 		#ifdef _HAVE_BALANCETHICKNESS2_
+ 		case Balancethickness2AnalysisEnum : return new Balancethickness2Analysis();
+ 		#endif
+Index: ../trunk-jpl/src/c/analyses/analyses.h
+===================================================================
+--- ../trunk-jpl/src/c/analyses/analyses.h	(revision 27153)
++++ ../trunk-jpl/src/c/analyses/analyses.h	(revision 27154)
+@@ -10,6 +10,7 @@
+ #include "./AdjointBalancethicknessAnalysis.h"
+ #include "./AdjointBalancethickness2Analysis.h"
+ #include "./AdjointHorizAnalysis.h"
++#include "./AgeAnalysis.h"
+ #include "./BalancethicknessAnalysis.h"
+ #include "./Balancethickness2Analysis.h"
+ #include "./BalancethicknessSoftAnalysis.h"
+Index: ../trunk-jpl/src/c/cores/transient_core.cpp
+===================================================================
+--- ../trunk-jpl/src/c/cores/transient_core.cpp	(revision 27153)
++++ ../trunk-jpl/src/c/cores/transient_core.cpp	(revision 27154)
+@@ -129,7 +129,7 @@
+ void transient_step(FemModel* femmodel){/*{{{*/
+ 
+ 	/*parameters: */
+-	bool isstressbalance,ismasstransport,isoceantransport,issmb,isthermal,isgroundingline,isesa,issampling;;
++	bool isstressbalance,ismasstransport,isage,isoceantransport,issmb,isthermal,isgroundingline,isesa,issampling;
+ 	bool isslc,ismovingfront,isdamageevolution,ishydrology,isoceancoupling,isstochasticforcing,save_results;
+ 	int  step,sb_coupling_frequency;
+ 	int  domaintype,numoutputs;
+@@ -141,6 +141,7 @@
+ 	femmodel->parameters->FindParam(&sb_coupling_frequency,SettingsSbCouplingFrequencyEnum);
+ 	femmodel->parameters->FindParam(&isstressbalance,TransientIsstressbalanceEnum);
+ 	femmodel->parameters->FindParam(&ismasstransport,TransientIsmasstransportEnum);
++	femmodel->parameters->FindParam(&isage,TransientIsageEnum);
+ 	femmodel->parameters->FindParam(&isoceantransport,TransientIsoceantransportEnum);
+ 	femmodel->parameters->FindParam(&issmb,TransientIssmbEnum);
+ 	femmodel->parameters->FindParam(&isthermal,TransientIsthermalEnum);
+Index: ../trunk-jpl/src/c/shared/Enum/Enum.vim
+===================================================================
+--- ../trunk-jpl/src/c/shared/Enum/Enum.vim	(revision 27153)
++++ ../trunk-jpl/src/c/shared/Enum/Enum.vim	(revision 27154)
+@@ -16,6 +16,9 @@
+ "ISSM Enums
+ syn keyword cConstant ParametersSTARTEnum
+ syn keyword cConstant AdolcParamEnum
++syn keyword cConstant AgeStabilizationEnum
++syn keyword cConstant AgeNumRequestedOutputsEnum
++syn keyword cConstant AgeRequestedOutputsEnum
+ syn keyword cConstant AmrDeviatoricErrorGroupThresholdEnum
+ syn keyword cConstant AmrDeviatoricErrorMaximumEnum
+ syn keyword cConstant AmrDeviatoricErrorResolutionEnum
+@@ -289,6 +292,7 @@
+ syn keyword cConstant LoveInnerCoreBoundaryEnum
+ syn keyword cConstant LoveComplexComputationEnum
+ syn keyword cConstant LoveQuadPrecisionEnum
++syn keyword cConstant LoveIntStepsPerLayerEnum
+ syn keyword cConstant LoveMinIntegrationStepsEnum
+ syn keyword cConstant LoveMaxIntegrationdrEnum
+ syn keyword cConstant LoveKernelsEnum
+@@ -575,6 +579,7 @@
+ syn keyword cConstant ToolkitsOptionsStringsEnum
+ syn keyword cConstant ToolkitsTypesEnum
+ syn keyword cConstant TransientAmrFrequencyEnum
++syn keyword cConstant TransientIsageEnum
+ syn keyword cConstant TransientIsdamageevolutionEnum
+ syn keyword cConstant TransientIsesaEnum
+ syn keyword cConstant TransientIsgiaEnum
+@@ -611,6 +616,7 @@
+ syn keyword cConstant AdjointyBaseEnum
+ syn keyword cConstant AdjointyShearEnum
+ syn keyword cConstant AdjointzEnum
++syn keyword cConstant AgeEnum
+ syn keyword cConstant AirEnum
+ syn keyword cConstant ApproximationEnum
+ syn keyword cConstant BalancethicknessMisfitEnum
+@@ -1229,6 +1235,7 @@
+ syn keyword cConstant AdjointBalancethickness2AnalysisEnum
+ syn keyword cConstant AdjointBalancethicknessAnalysisEnum
+ syn keyword cConstant AdjointHorizAnalysisEnum
++syn keyword cConstant AgeAnalysisEnum
+ syn keyword cConstant AggressiveMigrationEnum
+ syn keyword cConstant AmrBamgEnum
+ syn keyword cConstant AmrNeopzEnum
+@@ -1631,7 +1638,6 @@
+ syn keyword cType Cfsurfacelogvel
+ syn keyword cType Cfsurfacesquare
+ syn keyword cType Channel
+-syn keyword cType classes
+ syn keyword cType Constraint
+ syn keyword cType Constraints
+ syn keyword cType Contour
+@@ -1638,8 +1644,8 @@
+ syn keyword cType Contours
+ syn keyword cType ControlInput
+ syn keyword cType Covertree
++syn keyword cType DataSetParam
+ syn keyword cType DatasetInput
+-syn keyword cType DataSetParam
+ syn keyword cType Definition
+ syn keyword cType DependentObject
+ syn keyword cType DoubleInput
+@@ -1652,8 +1658,8 @@
+ syn keyword cType ElementHook
+ syn keyword cType ElementInput
+ syn keyword cType ElementMatrix
++syn keyword cType ElementVector
+ syn keyword cType Elements
+-syn keyword cType ElementVector
+ syn keyword cType ExponentialVariogram
+ syn keyword cType ExternalResult
+ syn keyword cType FemModel
+@@ -1660,12 +1666,11 @@
+ syn keyword cType FileParam
+ syn keyword cType Friction
+ syn keyword cType Gauss
+-syn keyword cType GaussianVariogram
+-syn keyword cType gaussobjects
+ syn keyword cType GaussPenta
+ syn keyword cType GaussSeg
+ syn keyword cType GaussTetra
+ syn keyword cType GaussTria
++syn keyword cType GaussianVariogram
+ syn keyword cType GenericExternalResult
+ syn keyword cType GenericOption
+ syn keyword cType GenericParam
+@@ -1682,7 +1687,6 @@
+ syn keyword cType IoModel
+ syn keyword cType IssmDirectApplicInterface
+ syn keyword cType IssmParallelDirectApplicInterface
+-syn keyword cType krigingobjects
+ syn keyword cType Load
+ syn keyword cType Loads
+ syn keyword cType Masscon
+@@ -1693,7 +1697,6 @@
+ syn keyword cType Matestar
+ syn keyword cType Matice
+ syn keyword cType Matlitho
+-syn keyword cType matrixobjects
+ syn keyword cType MatrixParam
+ syn keyword cType Misfit
+ syn keyword cType Moulin
+@@ -1706,8 +1709,8 @@
+ syn keyword cType Observation
+ syn keyword cType Observations
+ syn keyword cType Option
++syn keyword cType OptionUtilities
+ syn keyword cType Options
+-syn keyword cType OptionUtilities
+ syn keyword cType Param
+ syn keyword cType Parameters
+ syn keyword cType Pengrid
+@@ -1721,13 +1724,13 @@
+ syn keyword cType Radar
+ syn keyword cType Regionaloutput
+ syn keyword cType Results
++syn keyword cType RiftStruct
+ syn keyword cType Riftfront
+-syn keyword cType RiftStruct
+ syn keyword cType SealevelGeometry
+ syn keyword cType Seg
+ syn keyword cType SegInput
++syn keyword cType SegRef
+ syn keyword cType Segment
+-syn keyword cType SegRef
+ syn keyword cType SpcDynamic
+ syn keyword cType SpcStatic
+ syn keyword cType SpcTransient
+@@ -1746,9 +1749,14 @@
+ syn keyword cType VectorParam
+ syn keyword cType Vertex
+ syn keyword cType Vertices
++syn keyword cType classes
++syn keyword cType gaussobjects
++syn keyword cType krigingobjects
++syn keyword cType matrixobjects
+ syn keyword cType AdjointBalancethickness2Analysis
+ syn keyword cType AdjointBalancethicknessAnalysis
+ syn keyword cType AdjointHorizAnalysis
++syn keyword cType AgeAnalysis
+ syn keyword cType Analysis
+ syn keyword cType Balancethickness2Analysis
+ syn keyword cType BalancethicknessAnalysis
+Index: ../trunk-jpl/src/c/shared/Enum/EnumDefinitions.h
+===================================================================
+--- ../trunk-jpl/src/c/shared/Enum/EnumDefinitions.h	(revision 27153)
++++ ../trunk-jpl/src/c/shared/Enum/EnumDefinitions.h	(revision 27154)
+@@ -10,6 +10,9 @@
+ 	ParametersSTARTEnum,
+ 	/*Parameters{{{*/
+ 	AdolcParamEnum,
++	AgeStabilizationEnum,
++	AgeNumRequestedOutputsEnum,
++	AgeRequestedOutputsEnum,
+ 	AmrDeviatoricErrorGroupThresholdEnum,
+ 	AmrDeviatoricErrorMaximumEnum,
+ 	AmrDeviatoricErrorResolutionEnum,
+@@ -570,6 +573,7 @@
+ 	ToolkitsOptionsStringsEnum,
+ 	ToolkitsTypesEnum,
+ 	TransientAmrFrequencyEnum,
++	TransientIsageEnum,
+ 	TransientIsdamageevolutionEnum,
+ 	TransientIsesaEnum,
+ 	TransientIsgiaEnum,
+@@ -608,6 +612,7 @@
+ 	AdjointyBaseEnum,
+ 	AdjointyShearEnum,
+ 	AdjointzEnum,
++	AgeEnum,
+ 	AirEnum,
+ 	ApproximationEnum,
+ 	BalancethicknessMisfitEnum,
+@@ -1229,6 +1234,7 @@
+ 	AdjointBalancethickness2AnalysisEnum,
+ 	AdjointBalancethicknessAnalysisEnum,
+ 	AdjointHorizAnalysisEnum,
++	AgeAnalysisEnum,
+ 	AggressiveMigrationEnum,
+ 	AmrBamgEnum,
+ 	AmrNeopzEnum,
+Index: ../trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp
+===================================================================
+--- ../trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp	(revision 27153)
++++ ../trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp	(revision 27154)
+@@ -18,6 +18,9 @@
+ 
+ 		case ParametersSTARTEnum : return "ParametersSTART";
+ 		case AdolcParamEnum : return "AdolcParam";
++		case AgeStabilizationEnum : return "AgeStabilization";
++		case AgeNumRequestedOutputsEnum : return "AgeNumRequestedOutputs";
++		case AgeRequestedOutputsEnum : return "AgeRequestedOutputs";
+ 		case AmrDeviatoricErrorGroupThresholdEnum : return "AmrDeviatoricErrorGroupThreshold";
+ 		case AmrDeviatoricErrorMaximumEnum : return "AmrDeviatoricErrorMaximum";
+ 		case AmrDeviatoricErrorResolutionEnum : return "AmrDeviatoricErrorResolution";
+@@ -578,6 +581,7 @@
+ 		case ToolkitsOptionsStringsEnum : return "ToolkitsOptionsStrings";
+ 		case ToolkitsTypesEnum : return "ToolkitsTypes";
+ 		case TransientAmrFrequencyEnum : return "TransientAmrFrequency";
++		case TransientIsageEnum : return "TransientIsage";
+ 		case TransientIsdamageevolutionEnum : return "TransientIsdamageevolution";
+ 		case TransientIsesaEnum : return "TransientIsesa";
+ 		case TransientIsgiaEnum : return "TransientIsgia";
+@@ -614,6 +618,7 @@
+ 		case AdjointyBaseEnum : return "AdjointyBase";
+ 		case AdjointyShearEnum : return "AdjointyShear";
+ 		case AdjointzEnum : return "Adjointz";
++		case AgeEnum : return "Age";
+ 		case AirEnum : return "Air";
+ 		case ApproximationEnum : return "Approximation";
+ 		case BalancethicknessMisfitEnum : return "BalancethicknessMisfit";
+@@ -1232,6 +1237,7 @@
+ 		case AdjointBalancethickness2AnalysisEnum : return "AdjointBalancethickness2Analysis";
+ 		case AdjointBalancethicknessAnalysisEnum : return "AdjointBalancethicknessAnalysis";
+ 		case AdjointHorizAnalysisEnum : return "AdjointHorizAnalysis";
++		case AgeAnalysisEnum : return "AgeAnalysis";
+ 		case AggressiveMigrationEnum : return "AggressiveMigration";
+ 		case AmrBamgEnum : return "AmrBamg";
+ 		case AmrNeopzEnum : return "AmrNeopz";
+Index: ../trunk-jpl/src/c/shared/Enum/Enumjl.vim
+===================================================================
+--- ../trunk-jpl/src/c/shared/Enum/Enumjl.vim	(revision 27153)
++++ ../trunk-jpl/src/c/shared/Enum/Enumjl.vim	(revision 27154)
+@@ -9,6 +9,9 @@
+ "ISSM Enums
+ syn keyword juliaConstC ParametersSTARTEnum
+ syn keyword juliaConstC AdolcParamEnum
++syn keyword juliaConstC AgeStabilizationEnum
++syn keyword juliaConstC AgeNumRequestedOutputsEnum
++syn keyword juliaConstC AgeRequestedOutputsEnum
+ syn keyword juliaConstC AmrDeviatoricErrorGroupThresholdEnum
+ syn keyword juliaConstC AmrDeviatoricErrorMaximumEnum
+ syn keyword juliaConstC AmrDeviatoricErrorResolutionEnum
+@@ -282,6 +285,7 @@
+ syn keyword juliaConstC LoveInnerCoreBoundaryEnum
+ syn keyword juliaConstC LoveComplexComputationEnum
+ syn keyword juliaConstC LoveQuadPrecisionEnum
++syn keyword juliaConstC LoveIntStepsPerLayerEnum
+ syn keyword juliaConstC LoveMinIntegrationStepsEnum
+ syn keyword juliaConstC LoveMaxIntegrationdrEnum
+ syn keyword juliaConstC LoveKernelsEnum
+@@ -568,6 +572,7 @@
+ syn keyword juliaConstC ToolkitsOptionsStringsEnum
+ syn keyword juliaConstC ToolkitsTypesEnum
+ syn keyword juliaConstC TransientAmrFrequencyEnum
++syn keyword juliaConstC TransientIsageEnum
+ syn keyword juliaConstC TransientIsdamageevolutionEnum
+ syn keyword juliaConstC TransientIsesaEnum
+ syn keyword juliaConstC TransientIsgiaEnum
+@@ -604,6 +609,7 @@
+ syn keyword juliaConstC AdjointyBaseEnum
+ syn keyword juliaConstC AdjointyShearEnum
+ syn keyword juliaConstC AdjointzEnum
++syn keyword juliaConstC AgeEnum
+ syn keyword juliaConstC AirEnum
+ syn keyword juliaConstC ApproximationEnum
+ syn keyword juliaConstC BalancethicknessMisfitEnum
+@@ -1222,6 +1228,7 @@
+ syn keyword juliaConstC AdjointBalancethickness2AnalysisEnum
+ syn keyword juliaConstC AdjointBalancethicknessAnalysisEnum
+ syn keyword juliaConstC AdjointHorizAnalysisEnum
++syn keyword juliaConstC AgeAnalysisEnum
+ syn keyword juliaConstC AggressiveMigrationEnum
+ syn keyword juliaConstC AmrBamgEnum
+ syn keyword juliaConstC AmrNeopzEnum
+Index: ../trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp
+===================================================================
+--- ../trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp	(revision 27153)
++++ ../trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp	(revision 27154)
+@@ -18,6 +18,9 @@
+    if(stage==1){
+ 	      if (strcmp(name,"ParametersSTART")==0) return ParametersSTARTEnum;
+ 	      else if (strcmp(name,"AdolcParam")==0) return AdolcParamEnum;
++	      else if (strcmp(name,"AgeStabilization")==0) return AgeStabilizationEnum;
++	      else if (strcmp(name,"AgeNumRequestedOutputs")==0) return AgeNumRequestedOutputsEnum;
++	      else if (strcmp(name,"AgeRequestedOutputs")==0) return AgeRequestedOutputsEnum;
+ 	      else if (strcmp(name,"AmrDeviatoricErrorGroupThreshold")==0) return AmrDeviatoricErrorGroupThresholdEnum;
+ 	      else if (strcmp(name,"AmrDeviatoricErrorMaximum")==0) return AmrDeviatoricErrorMaximumEnum;
+ 	      else if (strcmp(name,"AmrDeviatoricErrorResolution")==0) return AmrDeviatoricErrorResolutionEnum;
+@@ -133,13 +136,13 @@
+ 	      else if (strcmp(name,"CumBslcHydro")==0) return CumBslcHydroEnum;
+ 	      else if (strcmp(name,"CumBslcOcean")==0) return CumBslcOceanEnum;
+ 	      else if (strcmp(name,"CumBslcIcePartition")==0) return CumBslcIcePartitionEnum;
+-	      else if (strcmp(name,"CumBslcHydroPartition")==0) return CumBslcHydroPartitionEnum;
+-	      else if (strcmp(name,"CumBslcOceanPartition")==0) return CumBslcOceanPartitionEnum;
+-	      else if (strcmp(name,"CumGmtslc")==0) return CumGmtslcEnum;
+          else stage=2;
+    }
+    if(stage==2){
+-	      if (strcmp(name,"CumGmslc")==0) return CumGmslcEnum;
++	      if (strcmp(name,"CumBslcHydroPartition")==0) return CumBslcHydroPartitionEnum;
++	      else if (strcmp(name,"CumBslcOceanPartition")==0) return CumBslcOceanPartitionEnum;
++	      else if (strcmp(name,"CumGmtslc")==0) return CumGmtslcEnum;
++	      else if (strcmp(name,"CumGmslc")==0) return CumGmslcEnum;
+ 	      else if (strcmp(name,"DamageC1")==0) return DamageC1Enum;
+ 	      else if (strcmp(name,"DamageC2")==0) return DamageC2Enum;
+ 	      else if (strcmp(name,"DamageC3")==0) return DamageC3Enum;
+@@ -256,13 +259,13 @@
+ 	      else if (strcmp(name,"InputToDepthaverageOut")==0) return InputToDepthaverageOutEnum;
+ 	      else if (strcmp(name,"InputToExtrude")==0) return InputToExtrudeEnum;
+ 	      else if (strcmp(name,"InputToL2Project")==0) return InputToL2ProjectEnum;
+-	      else if (strcmp(name,"InputToSmooth")==0) return InputToSmoothEnum;
+-	      else if (strcmp(name,"InversionAlgorithm")==0) return InversionAlgorithmEnum;
+-	      else if (strcmp(name,"InversionControlParameters")==0) return InversionControlParametersEnum;
+          else stage=3;
+    }
+    if(stage==3){
+-	      if (strcmp(name,"InversionControlScalingFactors")==0) return InversionControlScalingFactorsEnum;
++	      if (strcmp(name,"InputToSmooth")==0) return InputToSmoothEnum;
++	      else if (strcmp(name,"InversionAlgorithm")==0) return InversionAlgorithmEnum;
++	      else if (strcmp(name,"InversionControlParameters")==0) return InversionControlParametersEnum;
++	      else if (strcmp(name,"InversionControlScalingFactors")==0) return InversionControlScalingFactorsEnum;
+ 	      else if (strcmp(name,"InversionCostFunctions")==0) return InversionCostFunctionsEnum;
+ 	      else if (strcmp(name,"InversionDxmin")==0) return InversionDxminEnum;
+ 	      else if (strcmp(name,"InversionGatol")==0) return InversionGatolEnum;
+@@ -379,13 +382,13 @@
+ 	      else if (strcmp(name,"QmuStatisticsMethod")==0) return QmuStatisticsMethodEnum;
+ 	      else if (strcmp(name,"QmuMethods")==0) return QmuMethodsEnum;
+ 	      else if (strcmp(name,"RestartFileName")==0) return RestartFileNameEnum;
+-	      else if (strcmp(name,"Results")==0) return ResultsEnum;
+-	      else if (strcmp(name,"RootPath")==0) return RootPathEnum;
+-	      else if (strcmp(name,"Modelname")==0) return ModelnameEnum;
+          else stage=4;
+    }
+    if(stage==4){
+-	      if (strcmp(name,"SamplingAlpha")==0) return SamplingAlphaEnum;
++	      if (strcmp(name,"Results")==0) return ResultsEnum;
++	      else if (strcmp(name,"RootPath")==0) return RootPathEnum;
++	      else if (strcmp(name,"Modelname")==0) return ModelnameEnum;
++	      else if (strcmp(name,"SamplingAlpha")==0) return SamplingAlphaEnum;
+ 	      else if (strcmp(name,"SamplingNumRequestedOutputs")==0) return SamplingNumRequestedOutputsEnum;
+ 	      else if (strcmp(name,"SamplingRequestedOutputs")==0) return SamplingRequestedOutputsEnum;
+ 	      else if (strcmp(name,"SamplingRobin")==0) return SamplingRobinEnum;
+@@ -502,13 +505,13 @@
+ 	      else if (strcmp(name,"SmbIsconstrainsurfaceT")==0) return SmbIsconstrainsurfaceTEnum;
+ 	      else if (strcmp(name,"SmbIsd18opd")==0) return SmbIsd18opdEnum;
+ 	      else if (strcmp(name,"SmbIsdelta18o")==0) return SmbIsdelta18oEnum;
+-	      else if (strcmp(name,"SmbIsdensification")==0) return SmbIsdensificationEnum;
+-	      else if (strcmp(name,"SmbIsdeltaLWup")==0) return SmbIsdeltaLWupEnum;
+-	      else if (strcmp(name,"SmbIsfirnwarming")==0) return SmbIsfirnwarmingEnum;
+          else stage=5;
+    }
+    if(stage==5){
+-	      if (strcmp(name,"SmbIsgraingrowth")==0) return SmbIsgraingrowthEnum;
++	      if (strcmp(name,"SmbIsdensification")==0) return SmbIsdensificationEnum;
++	      else if (strcmp(name,"SmbIsdeltaLWup")==0) return SmbIsdeltaLWupEnum;
++	      else if (strcmp(name,"SmbIsfirnwarming")==0) return SmbIsfirnwarmingEnum;
++	      else if (strcmp(name,"SmbIsgraingrowth")==0) return SmbIsgraingrowthEnum;
+ 	      else if (strcmp(name,"SmbIsmelt")==0) return SmbIsmeltEnum;
+ 	      else if (strcmp(name,"SmbIsmungsm")==0) return SmbIsmungsmEnum;
+ 	      else if (strcmp(name,"SmbIsprecipscaled")==0) return SmbIsprecipscaledEnum;
+@@ -590,6 +593,7 @@
+ 	      else if (strcmp(name,"ToolkitsOptionsStrings")==0) return ToolkitsOptionsStringsEnum;
+ 	      else if (strcmp(name,"ToolkitsTypes")==0) return ToolkitsTypesEnum;
+ 	      else if (strcmp(name,"TransientAmrFrequency")==0) return TransientAmrFrequencyEnum;
++	      else if (strcmp(name,"TransientIsage")==0) return TransientIsageEnum;
+ 	      else if (strcmp(name,"TransientIsdamageevolution")==0) return TransientIsdamageevolutionEnum;
+ 	      else if (strcmp(name,"TransientIsesa")==0) return TransientIsesaEnum;
+ 	      else if (strcmp(name,"TransientIsgia")==0) return TransientIsgiaEnum;
+@@ -624,14 +628,15 @@
+ 	      else if (strcmp(name,"AdjointxShear")==0) return AdjointxShearEnum;
+ 	      else if (strcmp(name,"Adjointy")==0) return AdjointyEnum;
+ 	      else if (strcmp(name,"AdjointyBase")==0) return AdjointyBaseEnum;
+-	      else if (strcmp(name,"AdjointyShear")==0) return AdjointyShearEnum;
++         else stage=6;
++   }
++   if(stage==6){
++	      if (strcmp(name,"AdjointyShear")==0) return AdjointyShearEnum;
+ 	      else if (strcmp(name,"Adjointz")==0) return AdjointzEnum;
++	      else if (strcmp(name,"Age")==0) return AgeEnum;
+ 	      else if (strcmp(name,"Air")==0) return AirEnum;
+ 	      else if (strcmp(name,"Approximation")==0) return ApproximationEnum;
+-         else stage=6;
+-   }
+-   if(stage==6){
+-	      if (strcmp(name,"BalancethicknessMisfit")==0) return BalancethicknessMisfitEnum;
++	      else if (strcmp(name,"BalancethicknessMisfit")==0) return BalancethicknessMisfitEnum;
+ 	      else if (strcmp(name,"BalancethicknessOmega0")==0) return BalancethicknessOmega0Enum;
+ 	      else if (strcmp(name,"BalancethicknessOmega")==0) return BalancethicknessOmegaEnum;
+ 	      else if (strcmp(name,"BalancethicknessSpcthickness")==0) return BalancethicknessSpcthicknessEnum;
+@@ -746,15 +751,15 @@
+ 	      else if (strcmp(name,"EsaNmotion")==0) return EsaNmotionEnum;
+ 	      else if (strcmp(name,"EsaRotationrate")==0) return EsaRotationrateEnum;
+ 	      else if (strcmp(name,"EsaStrainratexx")==0) return EsaStrainratexxEnum;
+-	      else if (strcmp(name,"EsaStrainratexy")==0) return EsaStrainratexyEnum;
++         else stage=7;
++   }
++   if(stage==7){
++	      if (strcmp(name,"EsaStrainratexy")==0) return EsaStrainratexyEnum;
+ 	      else if (strcmp(name,"EsaStrainrateyy")==0) return EsaStrainrateyyEnum;
+ 	      else if (strcmp(name,"EsaUmotion")==0) return EsaUmotionEnum;
+ 	      else if (strcmp(name,"EsaXmotion")==0) return EsaXmotionEnum;
+ 	      else if (strcmp(name,"EsaYmotion")==0) return EsaYmotionEnum;
+-         else stage=7;
+-   }
+-   if(stage==7){
+-	      if (strcmp(name,"EtaDiff")==0) return EtaDiffEnum;
++	      else if (strcmp(name,"EtaDiff")==0) return EtaDiffEnum;
+ 	      else if (strcmp(name,"FlowequationBorderFS")==0) return FlowequationBorderFSEnum;
+ 	      else if (strcmp(name,"FrictionAs")==0) return FrictionAsEnum;
+ 	      else if (strcmp(name,"FrictionC")==0) return FrictionCEnum;
+@@ -869,15 +874,15 @@
+ 	      else if (strcmp(name,"RadarPowerMacGregor")==0) return RadarPowerMacGregorEnum;
+ 	      else if (strcmp(name,"RadarPowerWolff")==0) return RadarPowerWolffEnum;
+ 	      else if (strcmp(name,"RheologyBAbsGradient")==0) return RheologyBAbsGradientEnum;
+-	      else if (strcmp(name,"RheologyBInitialguess")==0) return RheologyBInitialguessEnum;
++         else stage=8;
++   }
++   if(stage==8){
++	      if (strcmp(name,"RheologyBInitialguess")==0) return RheologyBInitialguessEnum;
+ 	      else if (strcmp(name,"RheologyBInitialguessMisfit")==0) return RheologyBInitialguessMisfitEnum;
+ 	      else if (strcmp(name,"RheologyBbarAbsGradient")==0) return RheologyBbarAbsGradientEnum;
+ 	      else if (strcmp(name,"Sample")==0) return SampleEnum;
+ 	      else if (strcmp(name,"SampleOld")==0) return SampleOldEnum;
+-         else stage=8;
+-   }
+-   if(stage==8){
+-	      if (strcmp(name,"SampleNoise")==0) return SampleNoiseEnum;
++	      else if (strcmp(name,"SampleNoise")==0) return SampleNoiseEnum;
+ 	      else if (strcmp(name,"SamplingBeta")==0) return SamplingBetaEnum;
+ 	      else if (strcmp(name,"SamplingKappa")==0) return SamplingKappaEnum;
+ 	      else if (strcmp(name,"SamplingPhi")==0) return SamplingPhiEnum;
+@@ -992,15 +997,15 @@
+ 	      else if (strcmp(name,"SmbDz")==0) return SmbDzEnum;
+ 	      else if (strcmp(name,"SmbDzMin")==0) return SmbDzMinEnum;
+ 	      else if (strcmp(name,"SmbDzTop")==0) return SmbDzTopEnum;
+-	      else if (strcmp(name,"SmbDzini")==0) return SmbDziniEnum;
++         else stage=9;
++   }
++   if(stage==9){
++	      if (strcmp(name,"SmbDzini")==0) return SmbDziniEnum;
+ 	      else if (strcmp(name,"SmbEAir")==0) return SmbEAirEnum;
+ 	      else if (strcmp(name,"SmbEC")==0) return SmbECEnum;
+ 	      else if (strcmp(name,"SmbECDt")==0) return SmbECDtEnum;
+ 	      else if (strcmp(name,"SmbECini")==0) return SmbECiniEnum;
+-         else stage=9;
+-   }
+-   if(stage==9){
+-	      if (strcmp(name,"SmbEla")==0) return SmbElaEnum;
++	      else if (strcmp(name,"SmbEla")==0) return SmbElaEnum;
+ 	      else if (strcmp(name,"SmbEvaporation")==0) return SmbEvaporationEnum;
+ 	      else if (strcmp(name,"SmbFAC")==0) return SmbFACEnum;
+ 	      else if (strcmp(name,"SmbGdn")==0) return SmbGdnEnum;
+@@ -1115,15 +1120,15 @@
+ 	      else if (strcmp(name,"Thickness")==0) return ThicknessEnum;
+ 	      else if (strcmp(name,"ThicknessOld")==0) return ThicknessOldEnum;
+ 	      else if (strcmp(name,"ThicknessPositive")==0) return ThicknessPositiveEnum;
+-	      else if (strcmp(name,"ThicknessResidual")==0) return ThicknessResidualEnum;
++         else stage=10;
++   }
++   if(stage==10){
++	      if (strcmp(name,"ThicknessResidual")==0) return ThicknessResidualEnum;
+ 	      else if (strcmp(name,"TransientAccumulatedDeltaIceThickness")==0) return TransientAccumulatedDeltaIceThicknessEnum;
+ 	      else if (strcmp(name,"Vel")==0) return VelEnum;
+ 	      else if (strcmp(name,"VxAverage")==0) return VxAverageEnum;
+ 	      else if (strcmp(name,"VxBase")==0) return VxBaseEnum;
+-         else stage=10;
+-   }
+-   if(stage==10){
+-	      if (strcmp(name,"Vx")==0) return VxEnum;
++	      else if (strcmp(name,"Vx")==0) return VxEnum;
+ 	      else if (strcmp(name,"VxMesh")==0) return VxMeshEnum;
+ 	      else if (strcmp(name,"VxObs")==0) return VxObsEnum;
+ 	      else if (strcmp(name,"VxShear")==0) return VxShearEnum;
+@@ -1238,15 +1243,15 @@
+ 	      else if (strcmp(name,"Outputdefinition85")==0) return Outputdefinition85Enum;
+ 	      else if (strcmp(name,"Outputdefinition86")==0) return Outputdefinition86Enum;
+ 	      else if (strcmp(name,"Outputdefinition87")==0) return Outputdefinition87Enum;
+-	      else if (strcmp(name,"Outputdefinition88")==0) return Outputdefinition88Enum;
++         else stage=11;
++   }
++   if(stage==11){
++	      if (strcmp(name,"Outputdefinition88")==0) return Outputdefinition88Enum;
+ 	      else if (strcmp(name,"Outputdefinition89")==0) return Outputdefinition89Enum;
+ 	      else if (strcmp(name,"Outputdefinition8")==0) return Outputdefinition8Enum;
+ 	      else if (strcmp(name,"Outputdefinition90")==0) return Outputdefinition90Enum;
+ 	      else if (strcmp(name,"Outputdefinition91")==0) return Outputdefinition91Enum;
+-         else stage=11;
+-   }
+-   if(stage==11){
+-	      if (strcmp(name,"Outputdefinition92")==0) return Outputdefinition92Enum;
++	      else if (strcmp(name,"Outputdefinition92")==0) return Outputdefinition92Enum;
+ 	      else if (strcmp(name,"Outputdefinition93")==0) return Outputdefinition93Enum;
+ 	      else if (strcmp(name,"Outputdefinition94")==0) return Outputdefinition94Enum;
+ 	      else if (strcmp(name,"Outputdefinition95")==0) return Outputdefinition95Enum;
+@@ -1262,6 +1267,7 @@
+ 	      else if (strcmp(name,"AdjointBalancethickness2Analysis")==0) return AdjointBalancethickness2AnalysisEnum;
+ 	      else if (strcmp(name,"AdjointBalancethicknessAnalysis")==0) return AdjointBalancethicknessAnalysisEnum;
+ 	      else if (strcmp(name,"AdjointHorizAnalysis")==0) return AdjointHorizAnalysisEnum;
++	      else if (strcmp(name,"AgeAnalysis")==0) return AgeAnalysisEnum;
+ 	      else if (strcmp(name,"AggressiveMigration")==0) return AggressiveMigrationEnum;
+ 	      else if (strcmp(name,"AmrBamg")==0) return AmrBamgEnum;
+ 	      else if (strcmp(name,"AmrNeopz")==0) return AmrNeopzEnum;
+@@ -1360,16 +1366,16 @@
+ 	      else if (strcmp(name,"FloatingArea")==0) return FloatingAreaEnum;
+ 	      else if (strcmp(name,"FloatingAreaScaled")==0) return FloatingAreaScaledEnum;
+ 	      else if (strcmp(name,"FloatingMeltRate")==0) return FloatingMeltRateEnum;
+-	      else if (strcmp(name,"Free")==0) return FreeEnum;
++         else stage=12;
++   }
++   if(stage==12){
++	      if (strcmp(name,"Free")==0) return FreeEnum;
+ 	      else if (strcmp(name,"FreeSurfaceBaseAnalysis")==0) return FreeSurfaceBaseAnalysisEnum;
+ 	      else if (strcmp(name,"FreeSurfaceTopAnalysis")==0) return FreeSurfaceTopAnalysisEnum;
+ 	      else if (strcmp(name,"FrontalForcingsDefault")==0) return FrontalForcingsDefaultEnum;
+ 	      else if (strcmp(name,"FrontalForcingsRignot")==0) return FrontalForcingsRignotEnum;
+ 	      else if (strcmp(name,"FrontalForcingsRignotAutoregression")==0) return FrontalForcingsRignotAutoregressionEnum;
+-         else stage=12;
+-   }
+-   if(stage==12){
+-	      if (strcmp(name,"Fset")==0) return FsetEnum;
++	      else if (strcmp(name,"Fset")==0) return FsetEnum;
+ 	      else if (strcmp(name,"FullMeltOnPartiallyFloating")==0) return FullMeltOnPartiallyFloatingEnum;
+ 	      else if (strcmp(name,"GLheightadvectionAnalysis")==0) return GLheightadvectionAnalysisEnum;
+ 	      else if (strcmp(name,"GaussPenta")==0) return GaussPentaEnum;
+@@ -1483,16 +1489,16 @@
+ 	      else if (strcmp(name,"MeltingAnalysis")==0) return MeltingAnalysisEnum;
+ 	      else if (strcmp(name,"MeshElements")==0) return MeshElementsEnum;
+ 	      else if (strcmp(name,"MeshX")==0) return MeshXEnum;
+-	      else if (strcmp(name,"MeshY")==0) return MeshYEnum;
++         else stage=13;
++   }
++   if(stage==13){
++	      if (strcmp(name,"MeshY")==0) return MeshYEnum;
+ 	      else if (strcmp(name,"MinVel")==0) return MinVelEnum;
+ 	      else if (strcmp(name,"MinVx")==0) return MinVxEnum;
+ 	      else if (strcmp(name,"MinVy")==0) return MinVyEnum;
+ 	      else if (strcmp(name,"MinVz")==0) return MinVzEnum;
+ 	      else if (strcmp(name,"MismipFloatingMeltRate")==0) return MismipFloatingMeltRateEnum;
+-         else stage=13;
+-   }
+-   if(stage==13){
+-	      if (strcmp(name,"Moulin")==0) return MoulinEnum;
++	      else if (strcmp(name,"Moulin")==0) return MoulinEnum;
+ 	      else if (strcmp(name,"MpiDense")==0) return MpiDenseEnum;
+ 	      else if (strcmp(name,"Mpi")==0) return MpiEnum;
+ 	      else if (strcmp(name,"MpiSparse")==0) return MpiSparseEnum;
+@@ -1606,16 +1612,16 @@
+ 	      else if (strcmp(name,"SubelementMelt2")==0) return SubelementMelt2Enum;
+ 	      else if (strcmp(name,"SubelementMigration")==0) return SubelementMigrationEnum;
+ 	      else if (strcmp(name,"SurfaceSlopeSolution")==0) return SurfaceSlopeSolutionEnum;
+-	      else if (strcmp(name,"TaylorHood")==0) return TaylorHoodEnum;
++         else stage=14;
++   }
++   if(stage==14){
++	      if (strcmp(name,"TaylorHood")==0) return TaylorHoodEnum;
+ 	      else if (strcmp(name,"Tetra")==0) return TetraEnum;
+ 	      else if (strcmp(name,"TetraInput")==0) return TetraInputEnum;
+ 	      else if (strcmp(name,"ThermalAnalysis")==0) return ThermalAnalysisEnum;
+ 	      else if (strcmp(name,"ThermalSolution")==0) return ThermalSolutionEnum;
+ 	      else if (strcmp(name,"ThicknessErrorEstimator")==0) return ThicknessErrorEstimatorEnum;
+-         else stage=14;
+-   }
+-   if(stage==14){
+-	      if (strcmp(name,"TotalCalvingFluxLevelset")==0) return TotalCalvingFluxLevelsetEnum;
++	      else if (strcmp(name,"TotalCalvingFluxLevelset")==0) return TotalCalvingFluxLevelsetEnum;
+ 	      else if (strcmp(name,"TotalCalvingMeltingFluxLevelset")==0) return TotalCalvingMeltingFluxLevelsetEnum;
+ 	      else if (strcmp(name,"TotalFloatingBmb")==0) return TotalFloatingBmbEnum;
+ 	      else if (strcmp(name,"TotalFloatingBmbScaled")==0) return TotalFloatingBmbScaledEnum;
+Index: ../trunk-jpl/src/c/shared/Enum/Synchronize.sh
+===================================================================
+--- ../trunk-jpl/src/c/shared/Enum/Synchronize.sh	(revision 27153)
++++ ../trunk-jpl/src/c/shared/Enum/Synchronize.sh	(revision 27154)
+@@ -16,7 +16,7 @@
+ NUMENUMS=$(wc -l temp | awk '{printf("%s",$1);}');
+ 
+ #Deal with Analyses
+-if false ; then
++if false; then
+ #Build EnumToAnalysis.cpp {{{
+ #Header
+ cat <<END > $ISSM_DIR/src/c/analyses/EnumToAnalysis.cpp
Index: /issm/oecreview/Archive/27032-27229/ISSM-27154-27155.diff
===================================================================
--- /issm/oecreview/Archive/27032-27229/ISSM-27154-27155.diff	(revision 27230)
+++ /issm/oecreview/Archive/27032-27229/ISSM-27154-27155.diff	(revision 27230)
@@ -0,0 +1,276 @@
+Index: ../trunk-jpl/src/m/classes/age.m
+===================================================================
+--- ../trunk-jpl/src/m/classes/age.m	(nonexistent)
++++ ../trunk-jpl/src/m/classes/age.m	(revision 27155)
+@@ -0,0 +1,115 @@
++%AGE class definition
++%
++%   Usage:
++%      age=age();
++
++classdef age
++	properties (SetAccess=public)
++		 spcage                 = NaN;
++		 stabilization          = 0;
++		 requested_outputs      = {};
++	end
++	methods (Static)
++		function self = loadobj(self) % {{{
++			% This function is directly called by matlab when a model object is
++			% loaded. If the input is a struct it is an old version of this class and
++			% old fields must be recovered (make sure they are in the deprecated
++			% model properties)
++
++			if verLessThan('matlab','7.9'),
++				disp('Warning: your matlab version is old and there is a risk that load does not work correctly');
++				disp('         if the model is not loaded correctly, rename temporarily loadobj so that matlab does not use it');
++
++				% This is a Matlab bug: all the fields of md have their default value
++				% Example of error message:
++				% Warning: Error loading an object of class 'model':
++				% Undefined function or method 'exist' for input arguments of type 'cell'
++				%
++				% This has been fixed in MATLAB 7.9 (R2009b) and later versions
++			end
++
++			if isstruct(self)
++				disp('Recovering age from older version');
++				self = structtoobj(age(),self);
++			end
++		end% }}}
++	end
++	methods
++		function self = age(varargin) % {{{
++			switch nargin
++				case 0
++					self=setdefaultparameters(self);
++				case 1
++					inputstruct=varargin{1};
++					list1 = properties('age');
++					list2 = fieldnames(inputstruct);
++					for i=1:length(list1)
++						fieldname = list1{i};
++						if ismember(fieldname,list2),
++							self.(fieldname) = inputstruct.(fieldname);
++						end
++					end
++				otherwise
++					error('constructor not supported');
++			end
++		end % }}}
++		function self = extrude(self,md) % {{{
++			self.spcage=project3d(md,'vector',self.spcage,'type','node');
++		end % }}}
++		function list = defaultoutputs(self,md) % {{{
++
++			list = {'Age'};
++
++		end % }}}
++		function self = setdefaultparameters(self) % {{{
++
++			%Type of stabilization to use 0:nothing 1:artificial_diffusivity
++			self.stabilization=2;
++
++			%default output
++			self.requested_outputs={'default'};
++		end % }}}
++		function md = checkconsistency(self,md,solution,analyses) % {{{
++
++			%Early return
++			if ~ismember('AgeAnalysis',analyses) |  (strcmp(solution,'TransientSolution') & md.transient.isage==0), return; end
++			if dimension(md.mesh)~=3
++				md = checkmessage(md,['age model only supported in 3D']);
++			end
++
++			md = checkfield(md,'fieldname','age.spcage','Inf',1,'timeseries',1);
++			md = checkfield(md,'fieldname','age.stabilization','values',[0 1 2 4 5]);
++			md = checkfield(md,'fieldname','age.requested_outputs','stringrow',1);
++		end % }}}
++		function disp(self) % {{{
++			disp(sprintf('   Masstransport solution parameters:'));
++			fielddisplay(self,'spcage','Age constraint (NaN means no constraint) [yr]');
++			fielddisplay(self,'stabilization','0: no stabilization, 1: artificial diffusion, 2: streamline upwinding, 4: flux corrected transport, 5: streamline upwind Petrov-Galerkin (SUPG)');
++			fielddisplay(self,'requested_outputs','additional outputs requested');
++
++		end % }}}
++		function marshall(self,prefix,md,fid) % {{{
++
++			yts=md.constants.yts;
++
++			WriteData(fid,prefix,'object',self,'fieldname','spcage','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts);
++			WriteData(fid,prefix,'object',self,'fieldname','stabilization','format','Integer');
++
++			%process requested outputs
++			outputs = self.requested_outputs;
++			pos  = find(ismember(outputs,'default'));
++			if ~isempty(pos),
++				outputs(pos) = [];                         %remove 'default' from outputs
++				outputs      = [outputs defaultoutputs(self,md)]; %add defaults
++			end
++			WriteData(fid,prefix,'data',outputs,'name','md.age.requested_outputs','format','StringArray');
++		end % }}}
++		function savemodeljs(self,fid,modelname) % {{{
++
++			writejs1Darray(fid,[modelname '.age.spcage'],self.spcage);
++			writejsdouble(fid,[modelname '.age.stabilization'],self.stabilization);
++			writejscellstring(fid,[modelname '.age.requested_outputs'],self.requested_outputs);
++
++		end % }}}
++	end
++end
+Index: ../trunk-jpl/src/m/classes/transient.js
+===================================================================
+--- ../trunk-jpl/src/m/classes/transient.js	(revision 27154)
++++ ../trunk-jpl/src/m/classes/transient.js	(revision 27155)
+@@ -8,6 +8,7 @@
+ 	this.setdefaultparameters = function(){// {{{
+ 
+ 		//full analysis: Stressbalance, Masstransport and Thermal but no groundingline migration for now
++		this.isage             = 0;
+ 		this.issmb             = 1;
+ 		this.ismasstransport   = 1;
+ 		this.isstressbalance   = 1;
+@@ -31,6 +32,7 @@
+ 
+ 		console.log(sprintf('   transient solution parameters:'));
+ 
++		fielddisplay(this,'isage','indicates whether age model is requested in the transient');
+ 		fielddisplay(this,'issmb','indicates whether a surface mass balance solution is used in the transient');
+ 		fielddisplay(this,'ismasstransport','indicates whether a masstransport solution is used in the transient');
+ 		fielddisplay(this,'isstressbalance','indicates whether a stressbalance solution is used in the transient');
+@@ -57,6 +59,7 @@
+ 			//Early return
+ 			if (solution!='TransientSolution') return;
+ 
++			checkfield(md,'fieldname','transient.isage','numel',[1],'values',[0, 1]);
+ 			checkfield(md,'fieldname','transient.issmb','numel',[1],'values',[0, 1]);
+ 			checkfield(md,'fieldname','transient.ismasstransport','numel',[1],'values',[0, 1]);
+ 			checkfield(md,'fieldname','transient.isstressbalance','numel',[1],'values',[0, 1]);
+@@ -76,6 +79,7 @@
+ 		this.marshall=function(md,prefix,fid) { //{{{
+ 
+ 			prefix='md.transient';
++			WriteData(fid,prefix,'object',this,'fieldname','isage','format','Boolean');
+ 			WriteData(fid,prefix,'object',this,'fieldname','issmb','format','Boolean');
+ 			WriteData(fid,prefix,'object',this,'fieldname','ismasstransport','format','Boolean');
+ 			WriteData(fid,prefix,'object',this,'fieldname','isoceantransport','format','Boolean');
+@@ -111,6 +115,7 @@
+ 	//properties 
+ 	// {{{
+ 
++	this.isage             = 0;
+ 	this.issmb             = 0;
+ 	this.ismasstransport   = 0;
+ 	this.isstressbalance   = 0;
+Index: ../trunk-jpl/src/m/classes/transient.m
+===================================================================
+--- ../trunk-jpl/src/m/classes/transient.m	(revision 27154)
++++ ../trunk-jpl/src/m/classes/transient.m	(revision 27155)
+@@ -5,6 +5,7 @@
+ 
+ classdef transient
+ 	properties (SetAccess=public) 
++		isage             = 0;
+ 		issmb             = 0;
+ 		ismasstransport   = 0;
+ 		isoceantransport  = 0;
+@@ -33,6 +34,7 @@
+ 		function self = deactivateall(self) % {{{
+ 
+ 			%full analysis: Stressbalance, Masstransport and Thermal but no groundingline migration for now
++			self.isage             = 0;
+ 			self.issmb             = 0;
+ 			self.ismasstransport   = 0;
+ 			self.isoceantransport  = 0;
+@@ -54,6 +56,7 @@
+ 		function self = setdefaultparameters(self) % {{{
+ 
+ 			%full analysis: Stressbalance, Masstransport and Thermal but no groundingline migration for now
++			self.isage             = 0;
+ 			self.issmb             = 1;
+ 			self.ismasstransport   = 1;
+ 			self.isoceantransport  = 0;
+@@ -84,6 +87,7 @@
+ 			%Early return
+ 			if ~strcmp(solution,'TransientSolution'), return; end
+ 
++			md = checkfield(md,'fieldname','transient.isage','numel',[1],'values',[0 1]);
+ 			md = checkfield(md,'fieldname','transient.issmb','numel',[1],'values',[0 1]);
+ 			md = checkfield(md,'fieldname','transient.ismasstransport','numel',[1],'values',[0 1]);
+ 			md = checkfield(md,'fieldname','transient.isoceantransport','numel',[1],'values',[0 1]);
+@@ -110,6 +114,7 @@
+ 		function disp(self) % {{{
+ 			disp(sprintf('   transient solution parameters:'));
+ 
++			fielddisplay(self,'isage','indicates whether an age model is used in the transient');
+ 			fielddisplay(self,'issmb','indicates whether a surface mass balance solution is used in the transient');
+ 			fielddisplay(self,'ismasstransport','indicates whether a masstransport solution is used in the transient');
+ 			fielddisplay(self,'isoceantransport','indicates whether an ocean masstransport solution is used in the transient');
+@@ -128,6 +133,7 @@
+ 
+ 		end % }}}
+ 		function marshall(self,prefix,md,fid) % {{{
++			WriteData(fid,prefix,'object',self,'fieldname','isage','format','Boolean');
+ 			WriteData(fid,prefix,'object',self,'fieldname','issmb','format','Boolean');
+ 			WriteData(fid,prefix,'object',self,'fieldname','ismasstransport','format','Boolean');
+ 			WriteData(fid,prefix,'object',self,'fieldname','isoceantransport','format','Boolean');
+@@ -154,6 +160,7 @@
+ 		end % }}}
+ 		function savemodeljs(self,fid,modelname) % {{{
+ 		
++			writejsdouble(fid,[modelname '.trans.isage'],self.isage);
+ 			writejsdouble(fid,[modelname '.trans.issmb'],self.issmb);
+ 			writejsdouble(fid,[modelname '.trans.ismasstransport'],self.ismasstransport);
+ 			writejsdouble(fid,[modelname '.trans.isoceantransport'],self.isoceantransport);
+Index: ../trunk-jpl/src/m/classes/transient.py
+===================================================================
+--- ../trunk-jpl/src/m/classes/transient.py	(revision 27154)
++++ ../trunk-jpl/src/m/classes/transient.py	(revision 27155)
+@@ -11,6 +11,7 @@
+     """
+ 
+     def __init__(self):  # {{{
++        self.isage = 0
+         self.issmb = 0
+         self.ismasstransport = 0
+         self.isoceantransport = 0
+@@ -32,6 +33,7 @@
+ 
+     def __repr__(self):  # {{{
+         s = '   transient solution parameters:\n'
++        s += '{}\n'.format(fielddisplay(self, 'isage', 'indicates if age model is requested in the transient'))
+         s += '{}\n'.format(fielddisplay(self, 'issmb', 'indicates if a surface mass balance solution is used in the transient'))
+         s += '{}\n'.format(fielddisplay(self, 'ismasstransport', 'indicates if a masstransport solution is used in the transient'))
+         s += '{}\n'.format(fielddisplay(self, 'isoceantransport', 'indicates whether an ocean masstransport solution is used in the transient'))
+@@ -58,6 +60,7 @@
+     # }}}
+ 
+     def deactivateall(self):  #{{{
++        self.isage = 0
+         self.issmb = 0
+         self.ismasstransport = 0
+         self.isoceantransport = 0
+@@ -81,6 +84,7 @@
+     def setdefaultparameters(self):  # {{{
+         # Full analysis: Stressbalance, Masstransport and Thermal but no 
+         # groundingline migration for now
++        self.isage = 0
+         self.issmb = 1
+         self.ismasstransport = 1
+         self.isoceantransport = 0
+@@ -106,6 +110,7 @@
+         if not solution == 'TransientSolution':
+             return md
+ 
++        md = checkfield(md, 'fieldname', 'transient.isage', 'numel', [1], 'values', [0, 1])
+         md = checkfield(md, 'fieldname', 'transient.issmb', 'numel', [1], 'values', [0, 1])
+         md = checkfield(md, 'fieldname', 'transient.ismasstransport', 'numel', [1], 'values', [0, 1])
+         md = checkfield(md, 'fieldname', 'transient.isoceantransport', 'numel', [1], 'values', [0, 1])
+@@ -129,6 +134,7 @@
+     # }}}
+ 
+     def marshall(self, prefix, md, fid):  # {{{
++        WriteData(fid, prefix, 'object', self, 'fieldname', 'isage', 'format', 'Boolean')
+         WriteData(fid, prefix, 'object', self, 'fieldname', 'issmb', 'format', 'Boolean')
+         WriteData(fid, prefix, 'object', self, 'fieldname', 'ismasstransport', 'format', 'Boolean')
+         WriteData(fid, prefix, 'object', self, 'fieldname', 'isoceantransport', 'format', 'Boolean')
Index: /issm/oecreview/Archive/27032-27229/ISSM-27155-27156.diff
===================================================================
--- /issm/oecreview/Archive/27032-27229/ISSM-27155-27156.diff	(revision 27230)
+++ /issm/oecreview/Archive/27032-27229/ISSM-27155-27156.diff	(revision 27230)
@@ -0,0 +1,12 @@
+Index: ../trunk-jpl/src/c/modules/ModelProcessorx/CreateParameters.cpp
+===================================================================
+--- ../trunk-jpl/src/c/modules/ModelProcessorx/CreateParameters.cpp	(revision 27155)
++++ ../trunk-jpl/src/c/modules/ModelProcessorx/CreateParameters.cpp	(revision 27156)
+@@ -78,6 +78,7 @@
+ 		parameters->AddObject(iomodel->CopyConstantObject("md.transient.isstressbalance",TransientIsstressbalanceEnum));
+ 		parameters->AddObject(iomodel->CopyConstantObject("md.transient.ismasstransport",TransientIsmasstransportEnum));
+ 		parameters->AddObject(iomodel->CopyConstantObject("md.transient.isoceantransport",TransientIsoceantransportEnum));
++		parameters->AddObject(iomodel->CopyConstantObject("md.transient.isage",TransientIsageEnum));
+ 		parameters->AddObject(iomodel->CopyConstantObject("md.transient.issmb",TransientIssmbEnum));
+ 		parameters->AddObject(iomodel->CopyConstantObject("md.transient.isthermal",TransientIsthermalEnum));
+ 		parameters->AddObject(iomodel->CopyConstantObject("md.transient.isgroundingline",TransientIsgroundinglineEnum));
Index: /issm/oecreview/Archive/27032-27229/ISSM-27156-27157.diff
===================================================================
--- /issm/oecreview/Archive/27032-27229/ISSM-27156-27157.diff	(revision 27230)
+++ /issm/oecreview/Archive/27032-27229/ISSM-27156-27157.diff	(revision 27230)
@@ -0,0 +1,181 @@
+Index: ../trunk-jpl/src/c/toolkits/petsc/objects/PetscSolver.cpp
+===================================================================
+--- ../trunk-jpl/src/c/toolkits/petsc/objects/PetscSolver.cpp	(revision 27156)
++++ ../trunk-jpl/src/c/toolkits/petsc/objects/PetscSolver.cpp	(revision 27157)
+@@ -8,8 +8,6 @@
+ #error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+ #endif
+ 
+-#include <petscversion.h>
+-
+ #include "./PetscSolver.h"
+ #include "../../../shared/Numerics/Verbosity.h"
+ #include "../../../shared/MemOps/MemOps.h"
+Index: ../trunk-jpl/src/c/toolkits/petsc/patches/ISSMToPetscInsertMode.cpp
+===================================================================
+--- ../trunk-jpl/src/c/toolkits/petsc/patches/ISSMToPetscInsertMode.cpp	(revision 27156)
++++ ../trunk-jpl/src/c/toolkits/petsc/patches/ISSMToPetscInsertMode.cpp	(revision 27157)
+@@ -9,8 +9,6 @@
+ #endif
+ 
+ /*Petsc includes: */
+-#include <petscmat.h>
+-#include <petscvec.h>
+ #include <petscksp.h>
+ 
+ /*ISSM includes: */
+Index: ../trunk-jpl/src/c/toolkits/petsc/patches/ISSMToPetscMatrixType.cpp
+===================================================================
+--- ../trunk-jpl/src/c/toolkits/petsc/patches/ISSMToPetscMatrixType.cpp	(revision 27156)
++++ ../trunk-jpl/src/c/toolkits/petsc/patches/ISSMToPetscMatrixType.cpp	(revision 27157)
+@@ -9,8 +9,6 @@
+ #endif
+ 
+ /*Petsc includes: */
+-#include <petscmat.h>
+-#include <petscvec.h>
+ #include <petscksp.h>
+ 
+ /*ISSM includes: */
+Index: ../trunk-jpl/src/c/toolkits/petsc/patches/ISSMToPetscNormMode.cpp
+===================================================================
+--- ../trunk-jpl/src/c/toolkits/petsc/patches/ISSMToPetscNormMode.cpp	(revision 27156)
++++ ../trunk-jpl/src/c/toolkits/petsc/patches/ISSMToPetscNormMode.cpp	(revision 27157)
+@@ -9,8 +9,6 @@
+ #endif
+ 
+ /*Petsc includes: */
+-#include <petscmat.h>
+-#include <petscvec.h>
+ #include <petscksp.h>
+ 
+ /*ISSM includes: */
+Index: ../trunk-jpl/src/c/toolkits/petsc/patches/KSPFree.cpp
+===================================================================
+--- ../trunk-jpl/src/c/toolkits/petsc/patches/KSPFree.cpp	(revision 27156)
++++ ../trunk-jpl/src/c/toolkits/petsc/patches/KSPFree.cpp	(revision 27157)
+@@ -9,9 +9,6 @@
+ #endif
+ 
+ /*Petsc includes: */
+-#include <petscversion.h>
+-#include <petscmat.h>
+-#include <petscvec.h>
+ #include <petscksp.h>
+ 
+ void KSPFree(KSP* pksp){
+Index: ../trunk-jpl/src/c/toolkits/petsc/patches/MatFree.cpp
+===================================================================
+--- ../trunk-jpl/src/c/toolkits/petsc/patches/MatFree.cpp	(revision 27156)
++++ ../trunk-jpl/src/c/toolkits/petsc/patches/MatFree.cpp	(revision 27157)
+@@ -9,9 +9,6 @@
+ #endif
+ 
+ /*Petsc includes: */
+-#include <petscversion.h>
+-#include <petscmat.h>
+-#include <petscvec.h>
+ #include <petscksp.h>
+ 
+ void MatFree(Mat* pmat){
+Index: ../trunk-jpl/src/c/toolkits/petsc/patches/MatMultPatch.cpp
+===================================================================
+--- ../trunk-jpl/src/c/toolkits/petsc/patches/MatMultPatch.cpp	(revision 27156)
++++ ../trunk-jpl/src/c/toolkits/petsc/patches/MatMultPatch.cpp	(revision 27157)
+@@ -9,9 +9,6 @@
+ #endif
+ 
+ /*Petsc includes: */
+-#include <petscversion.h>
+-#include <petscmat.h>
+-#include <petscvec.h>
+ #include <petscksp.h>
+ 
+ #include "../../mpi/issmmpi.h"
+Index: ../trunk-jpl/src/c/toolkits/petsc/patches/NewMat.cpp
+===================================================================
+--- ../trunk-jpl/src/c/toolkits/petsc/patches/NewMat.cpp	(revision 27156)
++++ ../trunk-jpl/src/c/toolkits/petsc/patches/NewMat.cpp	(revision 27157)
+@@ -9,9 +9,6 @@
+ #endif
+ 
+ /*Petsc includes: */
+-#include <petscversion.h>
+-#include <petscmat.h>
+-#include <petscvec.h>
+ #include <petscksp.h>
+ 
+ #include "./petscpatches.h"
+Index: ../trunk-jpl/src/c/toolkits/petsc/patches/NewVec.cpp
+===================================================================
+--- ../trunk-jpl/src/c/toolkits/petsc/patches/NewVec.cpp	(revision 27156)
++++ ../trunk-jpl/src/c/toolkits/petsc/patches/NewVec.cpp	(revision 27157)
+@@ -9,9 +9,7 @@
+ #endif
+ 
+ /*Petsc includes: */
+-#include "petscmat.h"
+-#include "petscvec.h"
+-#include "petscksp.h"
++#include <petscksp.h>
+ 
+ #include "./petscpatches.h"
+ #include "../../mpi/issmmpi.h"
+Index: ../trunk-jpl/src/c/toolkits/petsc/patches/PetscOptionsDetermineSolverType.cpp
+===================================================================
+--- ../trunk-jpl/src/c/toolkits/petsc/patches/PetscOptionsDetermineSolverType.cpp	(revision 27156)
++++ ../trunk-jpl/src/c/toolkits/petsc/patches/PetscOptionsDetermineSolverType.cpp	(revision 27157)
+@@ -9,9 +9,6 @@
+ #endif
+ 
+ /*Petsc includes: */
+-#include <petscversion.h>
+-#include <petscmat.h>
+-#include <petscvec.h>
+ #include <petscksp.h>
+ 
+ #include "./petscpatches.h"
+Index: ../trunk-jpl/src/c/toolkits/petsc/patches/VecFree.cpp
+===================================================================
+--- ../trunk-jpl/src/c/toolkits/petsc/patches/VecFree.cpp	(revision 27156)
++++ ../trunk-jpl/src/c/toolkits/petsc/patches/VecFree.cpp	(revision 27157)
+@@ -9,9 +9,6 @@
+ #endif
+ 
+ /*Petsc includes: */
+-#include <petscversion.h>
+-#include <petscmat.h>
+-#include <petscvec.h>
+ #include <petscksp.h>
+ 
+ void VecFree(Vec* pvec){
+Index: ../trunk-jpl/src/c/toolkits/petsc/patches/petscpatches.h
+===================================================================
+--- ../trunk-jpl/src/c/toolkits/petsc/patches/petscpatches.h	(revision 27156)
++++ ../trunk-jpl/src/c/toolkits/petsc/patches/petscpatches.h	(revision 27157)
+@@ -5,10 +5,7 @@
+ #ifndef _PETSC_PATCHES_H_
+ #define _PETSC_PATCHES_H_
+ 
+-#include <petscmat.h>
+-#include <petscvec.h>
+ #include <petscksp.h>
+-#include <petscsys.h>
+ 
+ #include "./SolverEnum.h"
+ #include "../../toolkitsenums.h"
+Index: ../trunk-jpl/src/c/toolkits/petsc/petscincludes.h
+===================================================================
+--- ../trunk-jpl/src/c/toolkits/petsc/petscincludes.h	(revision 27156)
++++ ../trunk-jpl/src/c/toolkits/petsc/petscincludes.h	(revision 27157)
+@@ -8,10 +8,7 @@
+ #ifdef _HAVE_PETSC_
+ 
+ /*Petsc includes: */
+-#include <petscmat.h>
+-#include <petscvec.h>
+ #include <petscksp.h>
+-#include <petscsys.h>
+ 
+ /*our own patches: */
+ #include "patches/petscpatches.h"
Index: /issm/oecreview/Archive/27032-27229/ISSM-27157-27158.diff
===================================================================
--- /issm/oecreview/Archive/27032-27229/ISSM-27157-27158.diff	(revision 27230)
+++ /issm/oecreview/Archive/27032-27229/ISSM-27157-27158.diff	(revision 27230)
@@ -0,0 +1,341 @@
+Index: ../trunk-jpl/externalpackages/dakota/install-6.2-mac.sh
+===================================================================
+--- ../trunk-jpl/externalpackages/dakota/install-6.2-mac.sh	(revision 27157)
++++ ../trunk-jpl/externalpackages/dakota/install-6.2-mac.sh	(revision 27158)
+@@ -11,6 +11,10 @@
+ ## Environment
+ #
+ 
++# Check for Python 2, required by Dakota
++#
++PYTHON_EXECUTABLE=$(which python2) || echo "Error: This version of Dakota requires Python 2"
++
+ # Find libgfortran so that we do not have to hardcode it.
+ #
+ # Should retrieve a copy of gfortran that is compiled from source before 
+@@ -56,9 +60,6 @@
+ cp configs/${VER}/mac/cmake/DakotaDev.cmake ${DAK_SRC}/cmake
+ cp configs/${VER}/mac/cmake/InstallDarwinDylibs.cmake ${DAK_SRC}/cmake
+ 
+-#check for python 2, required by dakota
+-PYTHONEXECUTIONPATH=$(which python2) || echo WARNING dakota will not compile without python2
+-
+ # Configure
+ cd ${DAK_BUILD}
+ cmake \
+@@ -69,7 +70,7 @@
+ 	-DCMAKE_CXX_FLAGS="-fdelayed-template-parsing" \
+ 	-DCMAKE_Fortran_COMPILER=${MPI_HOME}/bin/mpif77 \
+ 	-DCMAKE_Fortran_FLAGS="-fallow-argument-mismatch" \
+-	-DPYTHON_EXECUTABLE=$PYTHONEXECUTIONPATH \
++	-DPYTHON_EXECUTABLE=${PYTHON_EXECUTABLE} \
+ 	-DBoost_NO_BOOST_CMAKE=TRUE \
+ 	-DHAVE_ACRO=OFF \
+ 	-DHAVE_JEGA=OFF \
+Index: ../trunk-jpl/externalpackages/gmt/configs/6/static/linux/cmake/ConfigUser.static.cmake
+===================================================================
+--- ../trunk-jpl/externalpackages/gmt/configs/6/static/linux/cmake/ConfigUser.static.cmake	(revision 27157)
++++ ../trunk-jpl/externalpackages/gmt/configs/6/static/linux/cmake/ConfigUser.static.cmake	(revision 27158)
+@@ -57,8 +57,8 @@
+ 
+ # Exclude optional GDAL, PCRE, PCRE2, FFTW3, LAPACK, BLAS, ZLIB dependencies even if you have them installed [FALSE]
+ #set (GMT_EXCLUDE_GDAL TRUE)
+-#set (GMT_EXCLUDE_PCRE TRUE)
+-#set (GMT_EXCLUDE_PCRE2 TRUE)
++set (GMT_EXCLUDE_PCRE TRUE)
++set (GMT_EXCLUDE_PCRE2 TRUE)
+ #set (GMT_EXCLUDE_FFTW3 TRUE)
+ #set (GMT_EXCLUDE_LAPACK TRUE)
+ #set (GMT_EXCLUDE_BLAS TRUE)
+@@ -111,7 +111,7 @@
+ set (GSHHG_ROOT "$ENV{GSHHG_ROOT}")
+ 
+ # Copy GSHHG files to ${GMT_DATADIR}/coast [FALSE]:
+-#set (COPY_GSHHG TRUE)
++set (COPY_GSHHG TRUE)
+ 
+ # Set path to DCW Digital Chart of the World for GMT [auto]:
+ #set (DCW_ROOT "dcw-gmt_path")
+Index: ../trunk-jpl/externalpackages/gmt/configs/6/static/mac/cmake/ConfigUser.static.cmake
+===================================================================
+--- ../trunk-jpl/externalpackages/gmt/configs/6/static/mac/cmake/ConfigUser.static.cmake	(revision 27157)
++++ ../trunk-jpl/externalpackages/gmt/configs/6/static/mac/cmake/ConfigUser.static.cmake	(revision 27158)
+@@ -57,8 +57,8 @@
+ 
+ # Exclude optional GDAL, PCRE, PCRE2, FFTW3, LAPACK, BLAS, ZLIB dependencies even if you have them installed [FALSE]
+ #set (GMT_EXCLUDE_GDAL TRUE)
+-#set (GMT_EXCLUDE_PCRE TRUE)
+-#set (GMT_EXCLUDE_PCRE2 TRUE)
++set (GMT_EXCLUDE_PCRE TRUE)
++set (GMT_EXCLUDE_PCRE2 TRUE)
+ #set (GMT_EXCLUDE_FFTW3 TRUE)
+ #set (GMT_EXCLUDE_LAPACK TRUE)
+ #set (GMT_EXCLUDE_BLAS TRUE)
+@@ -111,7 +111,7 @@
+ set (GSHHG_ROOT "$ENV{GSHHG_ROOT}")
+ 
+ # Copy GSHHG files to ${GMT_DATADIR}/coast [FALSE]:
+-#set (COPY_GSHHG TRUE)
++set (COPY_GSHHG TRUE)
+ 
+ # Set path to DCW Digital Chart of the World for GMT [auto]:
+ #set (DCW_ROOT "dcw-gmt_path")
+Index: ../trunk-jpl/m4/issm_options.m4
+===================================================================
+--- ../trunk-jpl/m4/issm_options.m4	(revision 27157)
++++ ../trunk-jpl/m4/issm_options.m4	(revision 27158)
+@@ -195,6 +195,10 @@
+ 		*darwin*)
+ 			IS_MAC=yes
+ 			AC_DEFINE([_MAC_], [1], [is macOS])
++			dnl When standard Dakota installation has been updated to new 
++			dnl version, remove the following
++			export CFLAGS="-Wno-deprecated-register -Wno-return-type"
++			export CXXFLAGS="-Wno-deprecated-register -Wno-return-type"
+ 		;;
+ 		*)
+ 			IS_MAC=no
+Index: ../trunk-jpl/packagers/linux/package-issm-linux-binaries-matlab.sh
+===================================================================
+--- ../trunk-jpl/packagers/linux/package-issm-linux-binaries-matlab.sh	(revision 27157)
++++ ../trunk-jpl/packagers/linux/package-issm-linux-binaries-matlab.sh	(revision 27158)
+@@ -111,6 +111,15 @@
+ echo "Moving libgfortran to lib/"
+ cp ${LIBGFORTRAN} ${LIBGFORTRAN_DIST} 2> /dev/null
+ 
++echo "Moving GSHHG assets to share/"
++if [ -d ${ISSM_DIR}/externalpackages/gmt/install/share/coast ]; then
++	mkdir ${ISSM_DIR}/share 2> /dev/null
++	cp -R ${ISSM_DIR}/externalpackages/gmt/install/share/coast ${ISSM_DIR}/share
++else
++	echo "GSHHG not found"
++	exit 1
++fi
++
+ echo "Moving PROJ assets to share/"
+ if [ -d ${ISSM_DIR}/externalpackages/proj/install/share/proj ]; then
+ 	mkdir ${ISSM_DIR}/share 2> /dev/null
+Index: ../trunk-jpl/packagers/linux/package-issm-linux-binaries-python-2.sh
+===================================================================
+--- ../trunk-jpl/packagers/linux/package-issm-linux-binaries-python-2.sh	(revision 27157)
++++ ../trunk-jpl/packagers/linux/package-issm-linux-binaries-python-2.sh	(revision 27158)
+@@ -104,6 +104,15 @@
+ echo "Moving libgfortran to lib/"
+ cp ${LIBGFORTRAN} ${LIBGFORTRAN_DIST} 2> /dev/null
+ 
++echo "Moving GSHHG assets to share/"
++if [ -d ${ISSM_DIR}/externalpackages/gmt/install/share/coast ]; then
++	mkdir ${ISSM_DIR}/share 2> /dev/null
++	cp -R ${ISSM_DIR}/externalpackages/gmt/install/share/coast ${ISSM_DIR}/share
++else
++	echo "GSHHG not found"
++	exit 1
++fi
++
+ echo "Moving PROJ assets to share/"
+ if [ -d ${ISSM_DIR}/externalpackages/proj/install/share/proj ]; then
+ 	mkdir ${ISSM_DIR}/share 2> /dev/null
+Index: ../trunk-jpl/packagers/linux/package-issm-linux-binaries-python-3.sh
+===================================================================
+--- ../trunk-jpl/packagers/linux/package-issm-linux-binaries-python-3.sh	(revision 27157)
++++ ../trunk-jpl/packagers/linux/package-issm-linux-binaries-python-3.sh	(revision 27158)
+@@ -104,6 +104,15 @@
+ echo "Moving libgfortran to lib/"
+ cp ${LIBGFORTRAN} ${LIBGFORTRAN_DIST} 2> /dev/null
+ 
++echo "Moving GSHHG assets to share/"
++if [ -d ${ISSM_DIR}/externalpackages/gmt/install/share/coast ]; then
++	mkdir ${ISSM_DIR}/share 2> /dev/null
++	cp -R ${ISSM_DIR}/externalpackages/gmt/install/share/coast ${ISSM_DIR}/share
++else
++	echo "GSHHG not found"
++	exit 1
++fi
++
+ echo "Moving PROJ assets to share/"
+ if [ -d ${ISSM_DIR}/externalpackages/proj/install/share/proj ]; then
+ 	mkdir ${ISSM_DIR}/share 2> /dev/null
+Index: ../trunk-jpl/packagers/mac/package-issm-mac-binaries-matlab.sh
+===================================================================
+--- ../trunk-jpl/packagers/mac/package-issm-mac-binaries-matlab.sh	(revision 27157)
++++ ../trunk-jpl/packagers/mac/package-issm-mac-binaries-matlab.sh	(revision 27158)
+@@ -108,6 +108,14 @@
+ 	exit 1
+ fi
+ 
++echo "Moving Gmsh binaries to bin/"
++if [ -f ${ISSM_DIR}/externalpackages/gmsh/install/bin/gmsh ]; then
++	cp ${ISSM_DIR}/externalpackages/gmsh/install/bin/gmsh .
++else
++	echo "Gmsh not found"
++	exit 1
++fi
++
+ echo "Moving GMT binaries to bin/"
+ if [ -f ${ISSM_DIR}/externalpackages/gmt/install/bin/gmt-config ]; then
+ 	cp ${ISSM_DIR}/externalpackages/gmt/install/bin/gmt .
+@@ -117,11 +125,12 @@
+ 	exit 1
+ fi
+ 
+-echo "Moving Gmsh binaries to bin/"
+-if [ -f ${ISSM_DIR}/externalpackages/gmsh/install/bin/gmsh ]; then
+-	cp ${ISSM_DIR}/externalpackages/gmsh/install/bin/gmsh .
++echo "Moving GSHHG assets to share/"
++if [ -d ${ISSM_DIR}/externalpackages/gmt/install/share/coast ]; then
++	mkdir ${ISSM_DIR}/share 2> /dev/null
++	cp -R ${ISSM_DIR}/externalpackages/gmt/install/share/coast ${ISSM_DIR}/share
+ else
+-	echo "Gmsh not found"
++	echo "GSHHG not found"
+ 	exit 1
+ fi
+ 
+Index: ../trunk-jpl/packagers/mac/package-issm-mac-binaries-python-2.sh
+===================================================================
+--- ../trunk-jpl/packagers/mac/package-issm-mac-binaries-python-2.sh	(revision 27157)
++++ ../trunk-jpl/packagers/mac/package-issm-mac-binaries-python-2.sh	(revision 27158)
+@@ -100,6 +100,14 @@
+ 	exit 1
+ fi
+ 
++echo "Moving Gmsh binaries to bin/"
++if [ -f ${ISSM_DIR}/externalpackages/gmsh/install/bin/gmsh ]; then
++	cp ${ISSM_DIR}/externalpackages/gmsh/install/bin/gmsh .
++else
++	echo "Gmsh not found"
++	exit 1
++fi
++
+ echo "Moving GMT binaries to bin/"
+ if [ -f ${ISSM_DIR}/externalpackages/gmt/install/bin/gmt-config ]; then
+ 	cp ${ISSM_DIR}/externalpackages/gmt/install/bin/gmt .
+@@ -109,11 +117,12 @@
+ 	exit 1
+ fi
+ 
+-echo "Moving Gmsh binaries to bin/"
+-if [ -f ${ISSM_DIR}/externalpackages/gmsh/install/bin/gmsh ]; then
+-	cp ${ISSM_DIR}/externalpackages/gmsh/install/bin/gmsh .
++echo "Moving GSHHG assets to share/"
++if [ -d ${ISSM_DIR}/externalpackages/gmt/install/share/coast ]; then
++	mkdir ${ISSM_DIR}/share 2> /dev/null
++	cp -R ${ISSM_DIR}/externalpackages/gmt/install/share/coast ${ISSM_DIR}/share
+ else
+-	echo "Gmsh not found"
++	echo "GSHHG not found"
+ 	exit 1
+ fi
+ 
+Index: ../trunk-jpl/packagers/mac/package-issm-mac-binaries-python-3.sh
+===================================================================
+--- ../trunk-jpl/packagers/mac/package-issm-mac-binaries-python-3.sh	(revision 27157)
++++ ../trunk-jpl/packagers/mac/package-issm-mac-binaries-python-3.sh	(revision 27158)
+@@ -100,6 +100,14 @@
+ 	exit 1
+ fi
+ 
++echo "Moving Gmsh binaries to bin/"
++if [ -f ${ISSM_DIR}/externalpackages/gmsh/install/bin/gmsh ]; then
++	cp ${ISSM_DIR}/externalpackages/gmsh/install/bin/gmsh .
++else
++	echo "Gmsh not found"
++	exit 1
++fi
++
+ echo "Moving GMT binaries to bin/"
+ if [ -f ${ISSM_DIR}/externalpackages/gmt/install/bin/gmt-config ]; then
+ 	cp ${ISSM_DIR}/externalpackages/gmt/install/bin/gmt .
+@@ -109,11 +117,12 @@
+ 	exit 1
+ fi
+ 
+-echo "Moving Gmsh binaries to bin/"
+-if [ -f ${ISSM_DIR}/externalpackages/gmsh/install/bin/gmsh ]; then
+-	cp ${ISSM_DIR}/externalpackages/gmsh/install/bin/gmsh .
++echo "Moving GSHHG assets to share/"
++if [ -d ${ISSM_DIR}/externalpackages/gmt/install/share/coast ]; then
++	mkdir ${ISSM_DIR}/share 2> /dev/null
++	cp -R ${ISSM_DIR}/externalpackages/gmt/install/share/coast ${ISSM_DIR}/share
+ else
+-	echo "Gmsh not found"
++	echo "GSHHG not found"
+ 	exit 1
+ fi
+ 
+Index: ../trunk-jpl/src/m/coordsystems/gmtmaskparallel.m
+===================================================================
+--- ../trunk-jpl/src/m/coordsystems/gmtmaskparallel.m	(revision 27157)
++++ ../trunk-jpl/src/m/coordsystems/gmtmaskparallel.m	(revision 27158)
+@@ -4,6 +4,9 @@
+ %   Usage:
+ %      mask.ocean = gmtmaskparallel(md.mesh.lat,md.mesh.long,8);
+ %
++%   TODO:
++%   - Remove hardcoded paths and instead find paths dynamically
++%
+ 
+ 	%First, write our lat,long file for gmt:
+ 	nv=length(lat);
+Index: ../trunk-jpl/src/m/mesh/planet/gmsh/gmshplanet.m
+===================================================================
+--- ../trunk-jpl/src/m/mesh/planet/gmsh/gmshplanet.m	(revision 27157)
++++ ../trunk-jpl/src/m/mesh/planet/gmsh/gmshplanet.m	(revision 27158)
+@@ -22,7 +22,7 @@
+ 		% If this function is called from one of our distributable packages, we 
+ 		% need to do a bit more to find the Gmsh executable
+ 		[filepath,name,ext]=fileparts(which('gmsh.'));
+-		setenv('PATH',[filepath ':' getenv('PATH')])
++		setenv('PATH',[filepath ':' getenv('PATH')]);
+ 		[s,r]=system(['gmsh -info 2>&1 | command grep ''Version'' | sed -e ''s/Version[[:blank:]]*:[[:blank:]]//'' | cut -d ''.'' -f1']);
+ 		if s~=0,
+ 			error(r);
+Index: ../trunk-jpl/src/m/modules/CoordTransform.m
+===================================================================
+--- ../trunk-jpl/src/m/modules/CoordTransform.m	(revision 27157)
++++ ../trunk-jpl/src/m/modules/CoordTransform.m	(revision 27158)
+@@ -33,7 +33,7 @@
+ % If this function is called from within one of our distributable packages, set 
+ % the 'PROJ_LIB' environment variable so that the PROJ binary can find the 
+ % assets it needs
+-if isdir('share/proj')
++if isdir(what('share/proj').path)
+ 	setenv('PROJ_LIB', what('share/proj').path);
+ end
+ 
+Index: ../trunk-jpl/etc/environment.sh
+===================================================================
+--- ../trunk-jpl/etc/environment.sh	(revision 27157)
++++ ../trunk-jpl/etc/environment.sh	(revision 27158)
+@@ -298,6 +298,15 @@
+ 	fi
+ fi
+ 
++HDF5_ROOT="${ISSM_EXT_DIR}/hdf5/install"
++if [ -d "${HDF5_ROOT}" ]; then
++	export HDF5_ROOT # Used in installation of NetCDF, GDAL
++	cpath_append "${HDF5_ROOT}/include"
++	library_path_append "${HDF5_ROOT}/lib"
++	dyld_library_path_append "${HDF5_ROOT}/lib"
++	ld_library_path_append "${HDF5_ROOT}/lib"
++fi
++
+ LAPACK_ROOT="${ISSM_EXT_DIR}/lapack/install"
+ if [ -d "${LAPACK_ROOT}" ]; then
+ 	export LAPACK_ROOT # Used in installation of ScaLAPACK, MUMPS, PETSc
+@@ -496,15 +505,6 @@
+ 	path_append "${CURL_ROOT}/bin"
+ fi
+ 
+-HDF5_ROOT="${ISSM_EXT_DIR}/hdf5/install"
+-if [ -d "${HDF5_ROOT}" ]; then
+-	export HDF5_ROOT # Used in installation of NetCDF, GDAL
+-	cpath_append "${HDF5_ROOT}/include"
+-	library_path_append "${HDF5_ROOT}/lib"
+-	dyld_library_path_append "${HDF5_ROOT}/lib"
+-	ld_library_path_append "${HDF5_ROOT}/lib"
+-fi
+-
+ SQLITE_ROOT="${ISSM_EXT_DIR}/sqlite/install"
+ if [ -d "${SQLITE_ROOT}" ]; then
+ 	path_prepend "${SQLITE_ROOT}/bin"
Index: /issm/oecreview/Archive/27032-27229/ISSM-27158-27159.diff
===================================================================
--- /issm/oecreview/Archive/27032-27229/ISSM-27158-27159.diff	(revision 27230)
+++ /issm/oecreview/Archive/27032-27229/ISSM-27158-27159.diff	(revision 27230)
@@ -0,0 +1,359 @@
+Index: ../trunk-jpl/externalpackages/gmsh/install-4-static.sh
+===================================================================
+--- ../trunk-jpl/externalpackages/gmsh/install-4-static.sh	(revision 27158)
++++ ../trunk-jpl/externalpackages/gmsh/install-4-static.sh	(nonexistent)
+@@ -1,73 +0,0 @@
+-#!/bin/bash
+-set -eu
+-
+-
+-# TODO:
+-# - Add support for,
+-#	- BLAS_LAPACK
+-#	- MUMPS
+-#	- PETSC
+-# (see configs/4/static/CMakeLists.txt)
+-#
+-
+-## Constants
+-#
+-VER="4.5.6"
+-
+-PREFIX="${ISSM_DIR}/externalpackages/gmsh/install" # Set to location where external package should be installed
+-
+-# Cleanup
+-rm -rf ${PREFIX} src
+-mkdir -p ${PREFIX} src
+-
+-# Download source
+-$ISSM_DIR/scripts/DownloadExternalPackage.sh "https://issm.ess.uci.edu/files/externalpackages/gmsh-${VER}-source.tgz" "gmsh-${VER}-source.tgz"
+-
+-# Unpack source
+-tar -xvzf gmsh-${VER}-source.tgz
+-
+-# Move source to 'src' directory
+-mv gmsh-${VER}-source/* src
+-rm -rf gmsh-${VER}-source
+-
+-# Copy customized source and config files to 'src' directory
+-cp configs/${VER}/static/CMakeLists.txt src
+-
+-# Configure
+-#
+-# NOTE:
+-# - Option -DENABLE_FLTK=0 is used because we do not need GUI.
+-# - Option -DENABLE_MPEG_ENCODE=0 is used because we do not need to record MPEG 
+-#	movies.
+-# - Option -DENABLE_OCC=0 is used because we do not need CAD kernel and are not 
+-#	importing STEP/IGES files.
+-# - Option -DENABLE_TOUCHBAR=0 is used because we do not have GUI, therefore we 
+-#	do not need to support Apple Touch bar (does not affect compilation on 
+-#	Linux).
+-#
+-cd src
+-cmake \
+-	-DCMAKE_INSTALL_PREFIX="${PREFIX}" \
+-	-DENABLE_BUILD_LIB=1 \
+-	-DENABLE_FLTK=0 \
+-	-DENABLE_MPEG_ENCODE=0 \
+-	-DENABLE_MPI=1 \
+-	-DENABLE_OCC=0 \
+-	-DENABLE_TOUCHBAR=0 \
+-	-DBLAS_LAPACK_LIBRARIES="-L${LAPACK_ROOT}/lib -lflapack -L${BLAS_ROOT}/lib -lfblas /usr/local/Cellar/gcc/11.3.0/lib/gcc/11/libgfortran.a /usr/local/Cellar/gcc/11.3.0/lib/gcc/11/libquadmath.a /usr/local/Cellar/gcc/11.3.0/lib/gcc/11/gcc/x86_64-apple-darwin15/11/libgcc.a" \
+-	-DMETIS_ROOT="${METIS_ROOT}"
+-
+-# Compile and install
+-if [ $# -eq 0 ]; then
+-	make
+-	make install
+-else
+-	make -j $1
+-	make -j $1 install
+-fi
+-
+-# Make necessary link on RHEL
+-if [[ -d ${PREFIX}/lib64 && ! -d ${PREFIX}/lib ]]; then
+-	cd ${PREFIX}
+-	ln -s ./lib64 ./lib
+-fi
+
+Property changes on: ../trunk-jpl/externalpackages/gmsh/install-4-static.sh
+___________________________________________________________________
+Deleted: svn:executable
+## -1 +0,0 ##
+-*
+\ No newline at end of property
+Index: ../trunk-jpl/externalpackages/gmsh/install-4-linux-static.sh
+===================================================================
+--- ../trunk-jpl/externalpackages/gmsh/install-4-linux-static.sh	(nonexistent)
++++ ../trunk-jpl/externalpackages/gmsh/install-4-linux-static.sh	(revision 27159)
+@@ -0,0 +1,86 @@
++#!/bin/bash
++set -eu
++
++
++# TODO:
++# - Add support for,
++#	- BLAS_LAPACK
++#	- MUMPS
++#	- PETSC
++# (see configs/4/static/CMakeLists.txt)
++#
++
++## Constants
++#
++VER="4.5.6"
++
++# Find libgfortran and libgcc so we do not have to hardcode them
++#
++# NOTE: For now, paths are hardcoded.
++#
++# TODO:
++# - Move this to etc/environment.sh
++# - Figure out how to find and grep for single result like we do with mdfind 
++#	under macOS.
++#
++LIBGFORTRAN="/usr/lib/gcc/x86_64-linux-gnu/8/libgfortran.a"
++LIBGFORTRAN_ROOT=${LIBGFORTRAN%/*}
++LIBGCC="/usr/lib/gcc/x86_64-linux-gnu/8/libgcc.a"
++
++PREFIX="${ISSM_DIR}/externalpackages/gmsh/install" # Set to location where external package should be installed
++
++# Cleanup
++rm -rf ${PREFIX} src
++mkdir -p ${PREFIX} src
++
++# Download source
++$ISSM_DIR/scripts/DownloadExternalPackage.sh "https://issm.ess.uci.edu/files/externalpackages/gmsh-${VER}-source.tgz" "gmsh-${VER}-source.tgz"
++
++# Unpack source
++tar -xvzf gmsh-${VER}-source.tgz
++
++# Move source to 'src' directory
++mv gmsh-${VER}-source/* src
++rm -rf gmsh-${VER}-source
++
++# Copy customized source and config files to 'src' directory
++cp configs/${VER}/static/CMakeLists.txt src
++
++# Configure
++#
++# NOTE:
++# - Option -DENABLE_FLTK=0 is used because we do not need GUI.
++# - Option -DENABLE_MPEG_ENCODE=0 is used because we do not need to record MPEG 
++#	movies.
++# - Option -DENABLE_OCC=0 is used because we do not need CAD kernel and are not 
++#	importing STEP/IGES files.
++# - Option -DENABLE_TOUCHBAR=0 is used because we do not have GUI, therefore we 
++#	do not need to support Apple Touch bar (does not affect compilation on 
++#	Linux).
++#
++cd src
++cmake \
++	-DCMAKE_INSTALL_PREFIX="${PREFIX}" \
++	-DENABLE_BUILD_LIB=1 \
++	-DENABLE_FLTK=0 \
++	-DENABLE_MPEG_ENCODE=0 \
++	-DENABLE_MPI=1 \
++	-DENABLE_OCC=0 \
++	-DENABLE_TOUCHBAR=0 \
++	-DBLAS_LAPACK_LIBRARIES="-L${LAPACK_ROOT}/lib -lflapack -L${BLAS_ROOT}/lib -lfblas ${LIBGFORTRAN_ROOT}/libgfortran.a ${LIBGFORTRAN_ROOT}/libquadmath.a ${LIBGCC}" \
++	-DMETIS_ROOT="${METIS_ROOT}"
++
++# Compile and install
++if [ $# -eq 0 ]; then
++	make
++	make install
++else
++	make -j $1
++	make -j $1 install
++fi
++
++# Make necessary link on RHEL
++if [[ -d ${PREFIX}/lib64 && ! -d ${PREFIX}/lib ]]; then
++	cd ${PREFIX}
++	ln -s ./lib64 ./lib
++fi
+
+Property changes on: ../trunk-jpl/externalpackages/gmsh/install-4-linux-static.sh
+___________________________________________________________________
+Added: svn:executable
+## -0,0 +1 ##
++*
+\ No newline at end of property
+Index: ../trunk-jpl/externalpackages/gmsh/install-4-mac-static.sh
+===================================================================
+--- ../trunk-jpl/externalpackages/gmsh/install-4-mac-static.sh	(nonexistent)
++++ ../trunk-jpl/externalpackages/gmsh/install-4-mac-static.sh	(revision 27159)
+@@ -0,0 +1,86 @@
++#!/bin/bash
++set -eu
++
++
++# TODO:
++# - Add support for,
++#	- BLAS_LAPACK
++#	- MUMPS
++#	- PETSC
++# (see configs/4/static/CMakeLists.txt)
++#
++
++## Constants
++#
++VER="4.5.6"
++
++# Find libgfortran and libgcc so we do not have to hardcode them
++#
++# Should retrieve a copy of gfortran that is compiled from source before returning one that is installed via package manager
++#
++# TODO:
++# - Move this to etc/environment.sh
++# - Test if -static-libgfortran flag will avoid all of this.
++# - Otherwise, refactor this to work with other gfortran installations.
++#
++LIBGFORTRAN=$(mdfind -onlyin /usr -name libgfortran | grep -n libgfortran.a | grep -v i386 | sed "s/[0-9]*://g" | head -1)
++LIBGFORTRAN_ROOT=${LIBGFORTRAN%/*}
++LIBGCC=$(mdfind -onlyin ${LIBGFORTRAN_ROOT} -name libgcc | grep -n libgcc.a | grep -v i386 | sed "s/[0-9]*://g" | head -1)
++
++PREFIX="${ISSM_DIR}/externalpackages/gmsh/install" # Set to location where external package should be installed
++
++# Cleanup
++rm -rf ${PREFIX} src
++mkdir -p ${PREFIX} src
++
++# Download source
++$ISSM_DIR/scripts/DownloadExternalPackage.sh "https://issm.ess.uci.edu/files/externalpackages/gmsh-${VER}-source.tgz" "gmsh-${VER}-source.tgz"
++
++# Unpack source
++tar -xvzf gmsh-${VER}-source.tgz
++
++# Move source to 'src' directory
++mv gmsh-${VER}-source/* src
++rm -rf gmsh-${VER}-source
++
++# Copy customized source and config files to 'src' directory
++cp configs/${VER}/static/CMakeLists.txt src
++
++# Configure
++#
++# NOTE:
++# - Option -DENABLE_FLTK=0 is used because we do not need GUI.
++# - Option -DENABLE_MPEG_ENCODE=0 is used because we do not need to record MPEG 
++#	movies.
++# - Option -DENABLE_OCC=0 is used because we do not need CAD kernel and are not 
++#	importing STEP/IGES files.
++# - Option -DENABLE_TOUCHBAR=0 is used because we do not have GUI, therefore we 
++#	do not need to support Apple Touch bar (does not affect compilation on 
++#	Linux).
++#
++cd src
++cmake \
++	-DCMAKE_INSTALL_PREFIX="${PREFIX}" \
++	-DENABLE_BUILD_LIB=1 \
++	-DENABLE_FLTK=0 \
++	-DENABLE_MPEG_ENCODE=0 \
++	-DENABLE_MPI=1 \
++	-DENABLE_OCC=0 \
++	-DENABLE_TOUCHBAR=0 \
++	-DBLAS_LAPACK_LIBRARIES="-L${LAPACK_ROOT}/lib -lflapack -L${BLAS_ROOT}/lib -lfblas ${LIBGFORTRAN_ROOT}/libgfortran.a ${LIBGFORTRAN_ROOT}/libquadmath.a ${LIBGCC}" \
++	-DMETIS_ROOT="${METIS_ROOT}"
++
++# Compile and install
++if [ $# -eq 0 ]; then
++	make
++	make install
++else
++	make -j $1
++	make -j $1 install
++fi
++
++# Make necessary link on RHEL
++if [[ -d ${PREFIX}/lib64 && ! -d ${PREFIX}/lib ]]; then
++	cd ${PREFIX}
++	ln -s ./lib64 ./lib
++fi
+
+Property changes on: ../trunk-jpl/externalpackages/gmsh/install-4-mac-static.sh
+___________________________________________________________________
+Added: svn:executable
+## -0,0 +1 ##
++*
+\ No newline at end of property
+Index: ../trunk-jpl/jenkins/pine_island-mac-binaries-matlab
+===================================================================
+--- ../trunk-jpl/jenkins/pine_island-mac-binaries-matlab	(revision 27158)
++++ ../trunk-jpl/jenkins/pine_island-mac-binaries-matlab	(revision 27159)
+@@ -55,7 +55,7 @@
+ 	gdal		install-3-static.sh
+ 	gshhg		install.sh
+ 	gmt			install-6-mac-static.sh
+-	gmsh		install-4-static.sh
++	gmsh		install-4-mac-static.sh
+ 	triangle	install-mac-static.sh
+ 	chaco		install.sh
+ 	m1qn3		install.sh
+Index: ../trunk-jpl/jenkins/pine_island-mac-binaries-python-2
+===================================================================
+--- ../trunk-jpl/jenkins/pine_island-mac-binaries-python-2	(revision 27158)
++++ ../trunk-jpl/jenkins/pine_island-mac-binaries-python-2	(revision 27159)
+@@ -53,7 +53,7 @@
+ 	gdal		install-3-python-static.sh
+ 	gshhg		install.sh
+ 	gmt			install-6-mac-static.sh
+-	gmsh		install-4-static.sh
++	gmsh		install-4-mac-static.sh
+ 	triangle	install-mac-static.sh
+ 	chaco		install.sh
+ 	m1qn3		install.sh
+Index: ../trunk-jpl/jenkins/pine_island-mac-binaries-python-3
+===================================================================
+--- ../trunk-jpl/jenkins/pine_island-mac-binaries-python-3	(revision 27158)
++++ ../trunk-jpl/jenkins/pine_island-mac-binaries-python-3	(revision 27159)
+@@ -54,7 +54,7 @@
+ 	gdal		install-3-python-static.sh
+ 	gshhg		install.sh
+ 	gmt			install-6-mac-static.sh
+-	gmsh		install-4-static.sh
++	gmsh		install-4-mac-static.sh
+ 	triangle	install-mac-static.sh
+ 	chaco		install.sh
+ 	m1qn3		install.sh
+Index: ../trunk-jpl/jenkins/ross-debian_linux-binaries-matlab
+===================================================================
+--- ../trunk-jpl/jenkins/ross-debian_linux-binaries-matlab	(revision 27158)
++++ ../trunk-jpl/jenkins/ross-debian_linux-binaries-matlab	(revision 27159)
+@@ -53,7 +53,7 @@
+ 	gdal		install-3-static.sh
+ 	gshhg		install.sh
+ 	gmt			install-6-linux-static.sh
+-	gmsh		install-4-static.sh
++	gmsh		install-4-linux-static.sh
+ 	triangle	install-linux-static.sh
+ 	chaco		install.sh
+ 	m1qn3		install.sh
+Index: ../trunk-jpl/jenkins/ross-debian_linux-binaries-python-2
+===================================================================
+--- ../trunk-jpl/jenkins/ross-debian_linux-binaries-python-2	(revision 27158)
++++ ../trunk-jpl/jenkins/ross-debian_linux-binaries-python-2	(revision 27159)
+@@ -53,7 +53,7 @@
+ 	gdal		install-3-python-static.sh
+ 	gshhg		install.sh
+ 	gmt			install-6-linux-static.sh
+-	gmsh		install-4-static.sh
++	gmsh		install-4-linux-static.sh
+ 	triangle	install-linux-static.sh
+ 	chaco		install.sh
+ 	m1qn3		install.sh
+Index: ../trunk-jpl/jenkins/ross-debian_linux-binaries-python-3
+===================================================================
+--- ../trunk-jpl/jenkins/ross-debian_linux-binaries-python-3	(revision 27158)
++++ ../trunk-jpl/jenkins/ross-debian_linux-binaries-python-3	(revision 27159)
+@@ -54,7 +54,7 @@
+ 	gdal		install-3-python-static.sh
+ 	gshhg		install.sh
+ 	gmt			install-6-linux-static.sh
+-	gmsh		install-4-static.sh
++	gmsh		install-4-linux-static.sh
+ 	triangle	install-linux-static.sh
+ 	chaco		install.sh
+ 	m1qn3		install.sh
Index: /issm/oecreview/Archive/27032-27229/ISSM-27159-27160.diff
===================================================================
--- /issm/oecreview/Archive/27032-27229/ISSM-27159-27160.diff	(revision 27230)
+++ /issm/oecreview/Archive/27032-27229/ISSM-27159-27160.diff	(revision 27230)
@@ -0,0 +1,16 @@
+Index: ../trunk-jpl/test/Archives/Archive621.arch
+===================================================================
+Cannot display: file marked as a binary type.
+svn:mime-type = application/octet-stream
+Index: ../trunk-jpl/src/c/modules/StochasticForcingx/StochasticForcingx.cpp
+===================================================================
+--- ../trunk-jpl/src/c/modules/StochasticForcingx/StochasticForcingx.cpp	(revision 27159)
++++ ../trunk-jpl/src/c/modules/StochasticForcingx/StochasticForcingx.cpp	(revision 27160)
+@@ -207,7 +207,6 @@
+ 							gauss->GaussVertex(i);
+ 							p_water_deterministic[i] = friction->SubglacialWaterPressure(gauss);
+ 							p_water[i]               = p_water_deterministic[i] + noisefield[dimensionid]; //make sure positive (29Nov2021)
+-							p_water[i]               = max(0.0,p_water[i]);
+ 						}
+ 						element->AddInput(FrictionWaterPressureEnum,p_water,P1DGEnum);
+ 						delete gauss;
Index: /issm/oecreview/Archive/27032-27229/ISSM-27160-27161.diff
===================================================================
--- /issm/oecreview/Archive/27032-27229/ISSM-27160-27161.diff	(revision 27230)
+++ /issm/oecreview/Archive/27032-27229/ISSM-27160-27161.diff	(revision 27230)
@@ -0,0 +1,422 @@
+Index: ../trunk-jpl/src/c/classes/Loads/Friction.cpp
+===================================================================
+--- ../trunk-jpl/src/c/classes/Loads/Friction.cpp	(revision 27160)
++++ ../trunk-jpl/src/c/classes/Loads/Friction.cpp	(revision 27161)
+@@ -748,7 +748,7 @@
+ 	 *
+ 	 *               C |u_b|^(m-1)
+ 	 * alpha2= __________________________
+-	 *          (1+(C/(Cmax N))^1/m |u_b| )^m
++	 *          (1+(C/(Cmax Neff))^1/m |u_b| )^m
+ 	 *
+ 	 * */
+ 
+@@ -763,16 +763,32 @@
+ 	/* scale C for a better inversion */
+ 	C = coeff*coeff;
+ 
+-	/*Get effective pressure and velocity magnitude*/
+-	IssmDouble N  = EffectivePressure(gauss);
++	/*Get effective pressure*/
++	bool ispwStochastic;
++	IssmDouble Neff;
++	element->parameters->FindParam(&ispwStochastic,StochasticForcingIsWaterPressureEnum);
++	if(ispwStochastic){
++		/*Retrieve stochastic water pressure and compute ice pressure*/
++		IssmDouble p_ice,p_water,Neff_limit;
++		element->GetInputValue(&p_water,gauss,FrictionSchoofWaterPressureEnum);
++		element->parameters->FindParam(&Neff_limit,FrictionEffectivePressureLimitEnum);
++		p_ice = IcePressure(gauss);
++		Neff  = max(Neff_limit*p_ice, p_ice - p_water);
++	}	
++	else{
++		/*Compute effective pressure directly*/
++		Neff = EffectivePressure(gauss);
++	}
++
++	/*Get velocity magnitude*/
+ 	IssmDouble ub = VelMag(gauss);
+ 
+ 	/*Compute alpha^2*/
+-	if((ub<1e-10) ||(N==0.0)){
++	if((ub<1e-10) ||(Neff==0.0)){
+ 		alpha2 = 0.;
+ 	}
+ 	else{
+-		alpha2= (C*pow(ub,m-1.)) / pow(1.+  pow(C/(Cmax*N),1./m)*ub,m);
++		alpha2= (C*pow(ub,m-1.)) / pow(1.+  pow(C/(Cmax*Neff),1./m)*ub,m);
+ 	}
+ 
+ 	/*Assign output pointers:*/
+Index: ../trunk-jpl/src/c/modules/StochasticForcingx/StochasticForcingx.cpp
+===================================================================
+--- ../trunk-jpl/src/c/modules/StochasticForcingx/StochasticForcingx.cpp	(revision 27160)
++++ ../trunk-jpl/src/c/modules/StochasticForcingx/StochasticForcingx.cpp	(revision 27161)
+@@ -213,7 +213,27 @@
+ 						delete friction;
+ 					}
+ 					break;
+-				default:
++				case FrictionSchoofWaterPressureEnum:
++					/*Specify that WaterPressure is stochastic*/ 
++					femmodel->parameters->SetParam(true,StochasticForcingIsWaterPressureEnum);
++					for(Object* &object:femmodel->elements->objects){
++                  Element* element = xDynamicCast<Element*>(object);
++                  int numvertices  = element->GetNumberOfVertices();
++                  IssmDouble p_water_deterministic[numvertices];
++                  IssmDouble p_water[numvertices];
++						element->GetInputValue(&dimensionid,StochasticForcingDefaultIdEnum);
++						Gauss* gauss=element->NewGauss();
++						Friction* friction = new Friction(element);
++						for(int i=0;i<numvertices;i++){
++							gauss->GaussVertex(i);
++							p_water_deterministic[i] = friction->SubglacialWaterPressure(gauss);
++							p_water[i]               = p_water_deterministic[i] + noisefield[dimensionid]; //make sure positive (29Nov2021)
++						}
++						element->AddInput(FrictionSchoofWaterPressureEnum,p_water,P1DGEnum);
++						delete gauss;
++						delete friction;
++					}
++					break;				default:
+ 					_error_("Field "<<EnumToStringx(fields[j])<<" does not support stochasticity yet.");
+ 			}
+ 		}
+Index: ../trunk-jpl/src/c/shared/Enum/Enum.vim
+===================================================================
+--- ../trunk-jpl/src/c/shared/Enum/Enum.vim	(revision 27160)
++++ ../trunk-jpl/src/c/shared/Enum/Enum.vim	(revision 27161)
+@@ -753,7 +753,9 @@
+ syn keyword cConstant FrictionQEnum
+ syn keyword cConstant FrictionSedimentCompressibilityCoefficientEnum
+ syn keyword cConstant FrictionTillFrictionAngleEnum
++syn keyword cConstant FrictionSchoofWaterPressureEnum
+ syn keyword cConstant FrictionWaterLayerEnum
++syn keyword cConstant FrictionWaterPressureEnum
+ syn keyword cConstant FrictionfEnum
+ syn keyword cConstant FrontalForcingsBasinIdEnum
+ syn keyword cConstant FrontalForcingsSubglacialDischargeEnum
+@@ -1122,8 +1124,6 @@
+ syn keyword cConstant WaterfractionDrainageIntegratedEnum
+ syn keyword cConstant WaterfractionEnum
+ syn keyword cConstant WaterheightEnum
+-syn keyword cConstant FrictionWaterPressureEnum
+-syn keyword cConstant FrictionWaterPressureNoiseEnum
+ syn keyword cConstant WeightsLevelsetObservationEnum
+ syn keyword cConstant WeightsSurfaceObservationEnum
+ syn keyword cConstant OldAccumulatedDeltaBottomPressureEnum
+@@ -1638,6 +1638,7 @@
+ syn keyword cType Cfsurfacelogvel
+ syn keyword cType Cfsurfacesquare
+ syn keyword cType Channel
++syn keyword cType classes
+ syn keyword cType Constraint
+ syn keyword cType Constraints
+ syn keyword cType Contour
+@@ -1644,8 +1645,8 @@
+ syn keyword cType Contours
+ syn keyword cType ControlInput
+ syn keyword cType Covertree
++syn keyword cType DatasetInput
+ syn keyword cType DataSetParam
+-syn keyword cType DatasetInput
+ syn keyword cType Definition
+ syn keyword cType DependentObject
+ syn keyword cType DoubleInput
+@@ -1658,8 +1659,8 @@
+ syn keyword cType ElementHook
+ syn keyword cType ElementInput
+ syn keyword cType ElementMatrix
++syn keyword cType Elements
+ syn keyword cType ElementVector
+-syn keyword cType Elements
+ syn keyword cType ExponentialVariogram
+ syn keyword cType ExternalResult
+ syn keyword cType FemModel
+@@ -1666,11 +1667,12 @@
+ syn keyword cType FileParam
+ syn keyword cType Friction
+ syn keyword cType Gauss
++syn keyword cType GaussianVariogram
++syn keyword cType gaussobjects
+ syn keyword cType GaussPenta
+ syn keyword cType GaussSeg
+ syn keyword cType GaussTetra
+ syn keyword cType GaussTria
+-syn keyword cType GaussianVariogram
+ syn keyword cType GenericExternalResult
+ syn keyword cType GenericOption
+ syn keyword cType GenericParam
+@@ -1687,6 +1689,7 @@
+ syn keyword cType IoModel
+ syn keyword cType IssmDirectApplicInterface
+ syn keyword cType IssmParallelDirectApplicInterface
++syn keyword cType krigingobjects
+ syn keyword cType Load
+ syn keyword cType Loads
+ syn keyword cType Masscon
+@@ -1697,6 +1700,7 @@
+ syn keyword cType Matestar
+ syn keyword cType Matice
+ syn keyword cType Matlitho
++syn keyword cType matrixobjects
+ syn keyword cType MatrixParam
+ syn keyword cType Misfit
+ syn keyword cType Moulin
+@@ -1709,8 +1713,8 @@
+ syn keyword cType Observation
+ syn keyword cType Observations
+ syn keyword cType Option
++syn keyword cType Options
+ syn keyword cType OptionUtilities
+-syn keyword cType Options
+ syn keyword cType Param
+ syn keyword cType Parameters
+ syn keyword cType Pengrid
+@@ -1724,13 +1728,13 @@
+ syn keyword cType Radar
+ syn keyword cType Regionaloutput
+ syn keyword cType Results
++syn keyword cType Riftfront
+ syn keyword cType RiftStruct
+-syn keyword cType Riftfront
+ syn keyword cType SealevelGeometry
+ syn keyword cType Seg
+ syn keyword cType SegInput
++syn keyword cType Segment
+ syn keyword cType SegRef
+-syn keyword cType Segment
+ syn keyword cType SpcDynamic
+ syn keyword cType SpcStatic
+ syn keyword cType SpcTransient
+@@ -1749,10 +1753,6 @@
+ syn keyword cType VectorParam
+ syn keyword cType Vertex
+ syn keyword cType Vertices
+-syn keyword cType classes
+-syn keyword cType gaussobjects
+-syn keyword cType krigingobjects
+-syn keyword cType matrixobjects
+ syn keyword cType AdjointBalancethickness2Analysis
+ syn keyword cType AdjointBalancethicknessAnalysis
+ syn keyword cType AdjointHorizAnalysis
+Index: ../trunk-jpl/src/c/shared/Enum/EnumDefinitions.h
+===================================================================
+--- ../trunk-jpl/src/c/shared/Enum/EnumDefinitions.h	(revision 27160)
++++ ../trunk-jpl/src/c/shared/Enum/EnumDefinitions.h	(revision 27161)
+@@ -749,7 +749,9 @@
+ 	FrictionQEnum,
+ 	FrictionSedimentCompressibilityCoefficientEnum,
+ 	FrictionTillFrictionAngleEnum,
++	FrictionSchoofWaterPressureEnum,
+ 	FrictionWaterLayerEnum,
++	FrictionWaterPressureEnum,
+ 	FrictionfEnum,
+ 	FrontalForcingsBasinIdEnum,
+ 	FrontalForcingsSubglacialDischargeEnum,
+@@ -1119,8 +1121,6 @@
+ 	WaterfractionDrainageIntegratedEnum,
+ 	WaterfractionEnum,
+ 	WaterheightEnum,
+-	FrictionWaterPressureEnum,
+-	FrictionWaterPressureNoiseEnum,
+ 	WeightsLevelsetObservationEnum,
+ 	WeightsSurfaceObservationEnum,
+ 	OldAccumulatedDeltaBottomPressureEnum,
+Index: ../trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp
+===================================================================
+--- ../trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp	(revision 27160)
++++ ../trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp	(revision 27161)
+@@ -755,7 +755,9 @@
+ 		case FrictionQEnum : return "FrictionQ";
+ 		case FrictionSedimentCompressibilityCoefficientEnum : return "FrictionSedimentCompressibilityCoefficient";
+ 		case FrictionTillFrictionAngleEnum : return "FrictionTillFrictionAngle";
++		case FrictionSchoofWaterPressureEnum : return "FrictionSchoofWaterPressure";
+ 		case FrictionWaterLayerEnum : return "FrictionWaterLayer";
++		case FrictionWaterPressureEnum : return "FrictionWaterPressure";
+ 		case FrictionfEnum : return "Frictionf";
+ 		case FrontalForcingsBasinIdEnum : return "FrontalForcingsBasinId";
+ 		case FrontalForcingsSubglacialDischargeEnum : return "FrontalForcingsSubglacialDischarge";
+@@ -1124,8 +1126,6 @@
+ 		case WaterfractionDrainageIntegratedEnum : return "WaterfractionDrainageIntegrated";
+ 		case WaterfractionEnum : return "Waterfraction";
+ 		case WaterheightEnum : return "Waterheight";
+-		case FrictionWaterPressureEnum : return "FrictionWaterPressure";
+-		case FrictionWaterPressureNoiseEnum : return "FrictionWaterPressureNoise";
+ 		case WeightsLevelsetObservationEnum : return "WeightsLevelsetObservation";
+ 		case WeightsSurfaceObservationEnum : return "WeightsSurfaceObservation";
+ 		case OldAccumulatedDeltaBottomPressureEnum : return "OldAccumulatedDeltaBottomPressure";
+Index: ../trunk-jpl/src/c/shared/Enum/Enumjl.vim
+===================================================================
+--- ../trunk-jpl/src/c/shared/Enum/Enumjl.vim	(revision 27160)
++++ ../trunk-jpl/src/c/shared/Enum/Enumjl.vim	(revision 27161)
+@@ -746,7 +746,9 @@
+ syn keyword juliaConstC FrictionQEnum
+ syn keyword juliaConstC FrictionSedimentCompressibilityCoefficientEnum
+ syn keyword juliaConstC FrictionTillFrictionAngleEnum
++syn keyword juliaConstC FrictionSchoofWaterPressureEnum
+ syn keyword juliaConstC FrictionWaterLayerEnum
++syn keyword juliaConstC FrictionWaterPressureEnum
+ syn keyword juliaConstC FrictionfEnum
+ syn keyword juliaConstC FrontalForcingsBasinIdEnum
+ syn keyword juliaConstC FrontalForcingsSubglacialDischargeEnum
+@@ -1115,8 +1117,6 @@
+ syn keyword juliaConstC WaterfractionDrainageIntegratedEnum
+ syn keyword juliaConstC WaterfractionEnum
+ syn keyword juliaConstC WaterheightEnum
+-syn keyword juliaConstC FrictionWaterPressureEnum
+-syn keyword juliaConstC FrictionWaterPressureNoiseEnum
+ syn keyword juliaConstC WeightsLevelsetObservationEnum
+ syn keyword juliaConstC WeightsSurfaceObservationEnum
+ syn keyword juliaConstC OldAccumulatedDeltaBottomPressureEnum
+Index: ../trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp
+===================================================================
+--- ../trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp	(revision 27160)
++++ ../trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp	(revision 27161)
+@@ -773,7 +773,9 @@
+ 	      else if (strcmp(name,"FrictionQ")==0) return FrictionQEnum;
+ 	      else if (strcmp(name,"FrictionSedimentCompressibilityCoefficient")==0) return FrictionSedimentCompressibilityCoefficientEnum;
+ 	      else if (strcmp(name,"FrictionTillFrictionAngle")==0) return FrictionTillFrictionAngleEnum;
++	      else if (strcmp(name,"FrictionSchoofWaterPressure")==0) return FrictionSchoofWaterPressureEnum;
+ 	      else if (strcmp(name,"FrictionWaterLayer")==0) return FrictionWaterLayerEnum;
++	      else if (strcmp(name,"FrictionWaterPressure")==0) return FrictionWaterPressureEnum;
+ 	      else if (strcmp(name,"Frictionf")==0) return FrictionfEnum;
+ 	      else if (strcmp(name,"FrontalForcingsBasinId")==0) return FrontalForcingsBasinIdEnum;
+ 	      else if (strcmp(name,"FrontalForcingsSubglacialDischarge")==0) return FrontalForcingsSubglacialDischargeEnum;
+@@ -872,12 +874,12 @@
+ 	      else if (strcmp(name,"RadarAttenuationWolff")==0) return RadarAttenuationWolffEnum;
+ 	      else if (strcmp(name,"RadarIcePeriod")==0) return RadarIcePeriodEnum;
+ 	      else if (strcmp(name,"RadarPowerMacGregor")==0) return RadarPowerMacGregorEnum;
+-	      else if (strcmp(name,"RadarPowerWolff")==0) return RadarPowerWolffEnum;
+-	      else if (strcmp(name,"RheologyBAbsGradient")==0) return RheologyBAbsGradientEnum;
+          else stage=8;
+    }
+    if(stage==8){
+-	      if (strcmp(name,"RheologyBInitialguess")==0) return RheologyBInitialguessEnum;
++	      if (strcmp(name,"RadarPowerWolff")==0) return RadarPowerWolffEnum;
++	      else if (strcmp(name,"RheologyBAbsGradient")==0) return RheologyBAbsGradientEnum;
++	      else if (strcmp(name,"RheologyBInitialguess")==0) return RheologyBInitialguessEnum;
+ 	      else if (strcmp(name,"RheologyBInitialguessMisfit")==0) return RheologyBInitialguessMisfitEnum;
+ 	      else if (strcmp(name,"RheologyBbarAbsGradient")==0) return RheologyBbarAbsGradientEnum;
+ 	      else if (strcmp(name,"Sample")==0) return SampleEnum;
+@@ -995,12 +997,12 @@
+ 	      else if (strcmp(name,"SmbDswdiffrf")==0) return SmbDswdiffrfEnum;
+ 	      else if (strcmp(name,"SmbDzAdd")==0) return SmbDzAddEnum;
+ 	      else if (strcmp(name,"SmbDz")==0) return SmbDzEnum;
+-	      else if (strcmp(name,"SmbDzMin")==0) return SmbDzMinEnum;
+-	      else if (strcmp(name,"SmbDzTop")==0) return SmbDzTopEnum;
+          else stage=9;
+    }
+    if(stage==9){
+-	      if (strcmp(name,"SmbDzini")==0) return SmbDziniEnum;
++	      if (strcmp(name,"SmbDzMin")==0) return SmbDzMinEnum;
++	      else if (strcmp(name,"SmbDzTop")==0) return SmbDzTopEnum;
++	      else if (strcmp(name,"SmbDzini")==0) return SmbDziniEnum;
+ 	      else if (strcmp(name,"SmbEAir")==0) return SmbEAirEnum;
+ 	      else if (strcmp(name,"SmbEC")==0) return SmbECEnum;
+ 	      else if (strcmp(name,"SmbECDt")==0) return SmbECDtEnum;
+@@ -1118,12 +1120,12 @@
+ 	      else if (strcmp(name,"ThicknessAcrossGradient")==0) return ThicknessAcrossGradientEnum;
+ 	      else if (strcmp(name,"ThicknessAlongGradient")==0) return ThicknessAlongGradientEnum;
+ 	      else if (strcmp(name,"Thickness")==0) return ThicknessEnum;
+-	      else if (strcmp(name,"ThicknessOld")==0) return ThicknessOldEnum;
+-	      else if (strcmp(name,"ThicknessPositive")==0) return ThicknessPositiveEnum;
+          else stage=10;
+    }
+    if(stage==10){
+-	      if (strcmp(name,"ThicknessResidual")==0) return ThicknessResidualEnum;
++	      if (strcmp(name,"ThicknessOld")==0) return ThicknessOldEnum;
++	      else if (strcmp(name,"ThicknessPositive")==0) return ThicknessPositiveEnum;
++	      else if (strcmp(name,"ThicknessResidual")==0) return ThicknessResidualEnum;
+ 	      else if (strcmp(name,"TransientAccumulatedDeltaIceThickness")==0) return TransientAccumulatedDeltaIceThicknessEnum;
+ 	      else if (strcmp(name,"Vel")==0) return VelEnum;
+ 	      else if (strcmp(name,"VxAverage")==0) return VxAverageEnum;
+@@ -1151,8 +1153,6 @@
+ 	      else if (strcmp(name,"WaterfractionDrainageIntegrated")==0) return WaterfractionDrainageIntegratedEnum;
+ 	      else if (strcmp(name,"Waterfraction")==0) return WaterfractionEnum;
+ 	      else if (strcmp(name,"Waterheight")==0) return WaterheightEnum;
+-	      else if (strcmp(name,"FrictionWaterPressure")==0) return FrictionWaterPressureEnum;
+-	      else if (strcmp(name,"FrictionWaterPressureNoise")==0) return FrictionWaterPressureNoiseEnum;
+ 	      else if (strcmp(name,"WeightsLevelsetObservation")==0) return WeightsLevelsetObservationEnum;
+ 	      else if (strcmp(name,"WeightsSurfaceObservation")==0) return WeightsSurfaceObservationEnum;
+ 	      else if (strcmp(name,"OldAccumulatedDeltaBottomPressure")==0) return OldAccumulatedDeltaBottomPressureEnum;
+Index: ../trunk-jpl/src/m/classes/stochasticforcing.m
+===================================================================
+--- ../trunk-jpl/src/m/classes/stochasticforcing.m	(revision 27160)
++++ ../trunk-jpl/src/m/classes/stochasticforcing.m	(revision 27161)
+@@ -94,16 +94,20 @@
+ 					end
+ 				end
+ 				if(contains(field,'WaterPressure'))
+-               mdname = structstoch.mdnames(find(strcmp(structstoch.fields,char(field))));
+-               if~(isequal(class(md.friction),char(mdname)))
+-                  error('stochasticforcing field %s is only implemented for default friction', char(field));
++					mdname = structstoch.mdnames(find(strcmp(structstoch.fields,char(field))));
++					if~(isequal(class(md.friction),char(mdname)))
++                  error('md.friction does not agree with stochasticforcing field %s', char(field));
+                end
+-               if(md.friction.coupling~=0 && md.friction.coupling~=1 && md.friction.coupling~=2)
+-                  error('stochasticforcing field %s is only implemented for cases md.friction.coupling 0 or 1 or 2', char(field));
+-               end
+-               if(any(md.friction.q==0))
+-                  error('stochasticforcing field %s requires non-zero q exponent',char(field));
+-               end
++					if(strcmp(class(md.friction),'friction') || strcmp(class(md.friction),'frictionschoof'))
++                  if(md.friction.coupling~=0 && md.friction.coupling~=1 && md.friction.coupling~=2)
++                     error('stochasticforcing field %s is only implemented for cases md.friction.coupling 0 or 1 or 2', char(field));
++                  end
++					end
++					if(strcmp(class(md.friction),'friction'))
++                  if(any(md.friction.q==0))
++                     error('stochasticforcing field %s requires non-zero q exponent',char(field));
++                  end
++					end
+             end
+ 				%Checking for specific dimensions
+ 				if ~(strcmp(field,'SMBautoregression') || strcmp(field,'FrontalForcingsRignotAutoregression') || strcmp(field,'BasalforcingsDeepwaterMeltingRateAutoregression'))
+@@ -266,6 +270,7 @@
+ 		'DefaultCalving',...
+ 		'FloatingMeltRate',...
+ 		'FrictionWaterPressure',...
++		'FrictionSchoofWaterPressure',...
+ 		'FrontalForcingsRignotAutoregression',...
+ 		'SMBautoregression',...
+ 		'SMBforcing'
+@@ -276,6 +281,7 @@
+ 		'calving',...
+ 		'basalforcings',...
+ 		'friction',...
++		'frictionschoof',...
+ 		'frontalforcingsrignotautoregression',...
+ 		'SMBautoregression',...
+ 		'SMBforcing'
+Index: ../trunk-jpl/src/m/classes/stochasticforcing.py
+===================================================================
+--- ../trunk-jpl/src/m/classes/stochasticforcing.py	(revision 27160)
++++ ../trunk-jpl/src/m/classes/stochasticforcing.py	(revision 27161)
+@@ -105,11 +105,13 @@
+             if 'WaterPressure' in field:
+                 mdname = structstoch[field]
+                 if (type(md.friction).__name__ != mdname):
+-                    raise TypeError('stochasticforcing field {} is only implemented for default friction'.format(field))
+-                if md.friction.coupling not in[0, 1, 2]:
+-                    raise TypeError('stochasticforcing field {} is only implemented for cases md.friction.coupling 0 or 1 or 2'.format(field))
+-                if (np.any(md.friction.q == 0)):
+-                    raise TypeError('stochasticforcing field {} requires non-zero q exponent'.format(field))
++                    raise TypeError('md.friction does not agree with stochasticforcing field {}'.format(field))
++                if (type(md.friction).__name__=='friction' or type(md.friction).__name__=='frictionschoof'):
++                    if md.friction.coupling not in[0, 1, 2]:
++                        raise TypeError('stochasticforcing field {} is only implemented for cases md.friction.coupling 0 or 1 or 2'.format(field))
++                if (type(md.friction).__name__=='friction'):
++                    if (np.any(md.friction.q == 0)):
++                        raise TypeError('stochasticforcing field {} requires non-zero q exponent'.format(field))
+ 
+             # Checking for specific dimensions
+             if field not in['SMBautoregression', 'FrontalForcingsRignotAutoregression','BasalforcingsDeepwaterMeltingRateAutoregression']:
+@@ -231,6 +233,7 @@
+                      'DefaultCalving': 'calving',
+                      'FloatingMeltRate': 'basalforcings',
+                      'FrictionWaterPressure': 'friction',
++                     'FrictionSchoofWaterPressure': 'frictionschoof',
+                      'FrontalForcingsRignotAutoregression': 'frontalforcingsrignotautoregression',
+                      'SMBautoregression': 'SMBautoregression',
+                      'SMBforcing': 'SMBforcing'}
Index: /issm/oecreview/Archive/27032-27229/ISSM-27161-27162.diff
===================================================================
--- /issm/oecreview/Archive/27032-27229/ISSM-27161-27162.diff	(revision 27230)
+++ /issm/oecreview/Archive/27032-27229/ISSM-27161-27162.diff	(revision 27230)
@@ -0,0 +1,127 @@
+Index: ../trunk-jpl/etc/environment.sh
+===================================================================
+--- ../trunk-jpl/etc/environment.sh	(revision 27161)
++++ ../trunk-jpl/etc/environment.sh	(revision 27162)
+@@ -316,6 +316,10 @@
+ 	if [[ ${MINGW} -eq 1 ]]; then
+ 		path_append "${LAPACK_ROOT}/lib" # Allows dynamic loader to find DLLs
+ 	fi
++
++	if ls ${LAPACK_ROOT}/lib/libblas.* 1> /dev/null 2>&1; then
++		export BLAS_ROOT="${LAPACK_ROOT}"
++	fi
+ fi
+ 
+ METIS_ROOT="${ISSM_EXT_DIR}/metis/install"
+Index: ../trunk-jpl/externalpackages/mplapack/install-1-linux.sh
+===================================================================
+--- ../trunk-jpl/externalpackages/mplapack/install-1-linux.sh	(revision 27161)
++++ ../trunk-jpl/externalpackages/mplapack/install-1-linux.sh	(revision 27162)
+@@ -55,6 +55,7 @@
+ 	--disable-static \
+ 	--enable-fast-install=yes \
+ 	--disable-dependency-tracking \
++	--enable-optimization=yes \
+ 	--enable-fortranwrapper=yes \
+ 	--enable-gmp=yes \
+ 	--enable-mpfr=yes \
+Index: ../trunk-jpl/externalpackages/mplapack/install-2-linux.sh
+===================================================================
+--- ../trunk-jpl/externalpackages/mplapack/install-2-linux.sh	(nonexistent)
++++ ../trunk-jpl/externalpackages/mplapack/install-2-linux.sh	(revision 27162)
+@@ -0,0 +1,75 @@
++#!/bin/bash
++set -eu
++
++##
++# Source code and installation guidelines available at,
++#
++#	https://github.com/nakatamaho/mplapack
++#
++# Note that original website (for MPACK) at,
++#
++#	http://mplapack.sourceforge.net
++#
++# is not maintained.
++#
++
++## Constants
++#
++VER="2.0"
++
++PREFIX="${ISSM_DIR}/externalpackages/mplapack/install" # Set to location where external package should be installed
++
++## Environment
++#
++export CC=gcc
++export CXX=g++
++export FC=gfortran
++export F77=gfortran
++
++# Cleanup
++rm -rf ${PREFIX} src
++mkdir -p ${PREFIX} src
++
++# Download source
++${ISSM_DIR}/scripts/DownloadExternalPackage.sh "https://issm.ess.uci.edu/files/externalpackages/mplapack-${VER}.tar.gz" "mplapack-${VER}.tar.gz"
++
++# Unpack source
++tar -zxvf mplapack-${VER}.tar.gz
++
++# Move source to 'src' directory
++mv mplapack-${VER}/* src
++rm -rf mplapack-${VER}
++
++# Configure
++cd src
++pushd mplapack/test/compare
++bash gen.Makefile.am.sh
++popd
++autoreconf --force --install
++aclocal
++autoconf
++automake --add-missing
++autoreconf --force --install
++./configure \
++	--prefix="${PREFIX}" \
++	--disable-static \
++	--enable-fast-install=yes \
++	--disable-dependency-tracking \
++	--enable-optimization=yes \
++	--enable-fortranwrapper=yes \
++	--enable-gmp=yes \
++	--enable-mpfr=yes \
++	--enable-qd=yes \
++	--enable-dd=yes \
++	--enable-double=yes \
++	--enable-_Float128=yes \
++	--enable-_Float64x=yes
++
++# Compile and install
++if [ $# -eq 0 ]; then
++	make
++	make install
++else
++	make -j $1
++	make -j $1 install
++fi
+
+Property changes on: ../trunk-jpl/externalpackages/mplapack/install-2-linux.sh
+___________________________________________________________________
+Added: svn:executable
+## -0,0 +1 ##
++*
+\ No newline at end of property
+Index: ../trunk-jpl/jenkins/ross-debian_linux-full-mplapack
+===================================================================
+--- ../trunk-jpl/jenkins/ross-debian_linux-full-mplapack	(revision 27161)
++++ ../trunk-jpl/jenkins/ross-debian_linux-full-mplapack	(revision 27162)
+@@ -46,7 +46,7 @@
+ 	autotools	install-linux.sh
+ 	cmake		install.sh
+ 	petsc		install-3.12-linux.sh
+-	mplapack	install-1-linux.sh
++	mplapack	install-2-linux.sh
+ 	gsl			install.sh
+ 	boost		install-1.7-linux.sh
+ 	dakota		install-6.2-linux.sh
Index: /issm/oecreview/Archive/27032-27229/ISSM-27162-27163.diff
===================================================================
--- /issm/oecreview/Archive/27032-27229/ISSM-27162-27163.diff	(revision 27230)
+++ /issm/oecreview/Archive/27032-27229/ISSM-27162-27163.diff	(revision 27230)
@@ -0,0 +1,16 @@
+Index: ../trunk-jpl/src/m/modules/CoordTransform.m
+===================================================================
+--- ../trunk-jpl/src/m/modules/CoordTransform.m	(revision 27162)
++++ ../trunk-jpl/src/m/modules/CoordTransform.m	(revision 27163)
+@@ -33,8 +33,9 @@
+ % If this function is called from within one of our distributable packages, set 
+ % the 'PROJ_LIB' environment variable so that the PROJ binary can find the 
+ % assets it needs
+-if isdir(what('share/proj').path)
+-	setenv('PROJ_LIB', what('share/proj').path);
++whatproj=what('share/proj');
++if ~isempty(whatproj) && isdir(whatproj.path)
++	setenv('PROJ_LIB', whatproj.path);
+ end
+ 
+ % Call mex module
Index: /issm/oecreview/Archive/27032-27229/ISSM-27163-27164.diff
===================================================================
--- /issm/oecreview/Archive/27032-27229/ISSM-27163-27164.diff	(revision 27230)
+++ /issm/oecreview/Archive/27032-27229/ISSM-27163-27164.diff	(revision 27230)
@@ -0,0 +1,71 @@
+Index: ../trunk-jpl/src/m/classes/frictioncoulomb.m
+===================================================================
+--- ../trunk-jpl/src/m/classes/frictioncoulomb.m	(revision 27163)
++++ ../trunk-jpl/src/m/classes/frictioncoulomb.m	(revision 27164)
+@@ -63,7 +63,7 @@
+ 			end
+ 		end % }}}
+ 		function disp(self) % {{{
+-			disp(sprintf('Basal shear stress parameters: Sigma_b = min( coefficient^2 * Neff ^r * |u_b|^(s-1) * u_b\n, coefficientcoulomb^2 * rho_i * g * (h-h_f)) (effective stress Neff=rho_ice*g*thickness+rho_water*g*bed, r=q/p and s=1/p, floatation thickness h_f=max(0,-rho_sw / rho_i * bed))'));
++			disp(sprintf('Basal shear stress parameters: Sigma_b = min( coefficient^2 * Neff ^r * |u_b|^(s-1) * u_b\n, coefficientcoulomb^2 * Neff) (effective stress Neff=rho_ice*g*thickness+rho_water*g*bed, r=q/p and s=1/p, floatation thickness h_f=max(0,-rho_sw / rho_i * bed))'));
+ 			fielddisplay(self,'coefficient','power law (Weertman) friction coefficient [SI]');
+ 			fielddisplay(self,'coefficientcoulomb','Coulomb friction coefficient [SI]');
+ 			fielddisplay(self,'p','p exponent');
+Index: ../trunk-jpl/src/m/classes/frictioncoulomb.py
+===================================================================
+--- ../trunk-jpl/src/m/classes/frictioncoulomb.py	(revision 27163)
++++ ../trunk-jpl/src/m/classes/frictioncoulomb.py	(revision 27164)
+@@ -27,7 +27,7 @@
+ 
+     def __repr__(self):  # {{{
+         s = 'Basal shear stress parameters: Sigma_b = min(coefficient^2 * Neff ^r * |u_b|^(s - 1) * u_b,\n'
+-        s += 'coefficientcoulomb^2 * rho_i * g * (h - h_f)), (effective stress Neff = rho_ice * g * thickness + rho_water * g * bed, r = q / p and s = 1 / p).\n'
++        s += 'coefficientcoulomb^2 * Neff), (effective stress Neff = rho_ice * g * thickness + rho_water * g * bed, r = q / p and s = 1 / p).\n'
+         s += '{}\n'.format(fielddisplay(self, "coefficient", "power law (Weertman) friction coefficient [SI]"))
+         s += '{}\n'.format(fielddisplay(self, "coefficientcoulomb", "Coulomb friction coefficient [SI]"))
+         s += '{}\n'.format(fielddisplay(self, "p", "p exponent"))
+Index: ../trunk-jpl/src/c/classes/Loads/Friction.cpp
+===================================================================
+--- ../trunk-jpl/src/c/classes/Loads/Friction.cpp	(revision 27163)
++++ ../trunk-jpl/src/c/classes/Loads/Friction.cpp	(revision 27164)
+@@ -320,12 +320,12 @@
+ void Friction::GetAlpha2Coulomb(IssmDouble* palpha2, Gauss* gauss){/*{{{*/
+ 
+ 	/*This routine calculates the basal friction coefficient
+-	  alpha2= drag^2 * Neff ^r * | vel | ^(s-1), with Neff=rho_ice*g*thickness+rho_ice*g*base, r=q/p and s=1/p**/
++	  alpha2= drag^2 * Neff ^r * | vel | ^(s-1), with Neff=rho_ice*g*thickness+rho_ice*g*base, r=q/p and s=1/p
++	  alpha2= min(drag^2 * Neff ^r * | vel | ^(s-1), drag_coulomb^2 * Neff*/
+ 
+ 	/*diverse: */
+ 	IssmDouble  r,s;
+ 	IssmDouble  drag_p, drag_q;
+-	IssmDouble  thickness,base,floatation_thickness,sealevel;
+ 	IssmDouble  drag_coefficient,drag_coefficient_coulomb;
+ 	IssmDouble  alpha2,alpha2_coulomb;
+ 
+@@ -332,9 +332,6 @@
+ 	/*Recover parameters: */
+ 	element->GetInputValue(&drag_p,gauss,FrictionPEnum);
+ 	element->GetInputValue(&drag_q,gauss,FrictionQEnum);
+-	element->GetInputValue(&thickness, gauss,ThicknessEnum);
+-	element->GetInputValue(&base, gauss,BaseEnum);
+-	element->GetInputValue(&sealevel, gauss,SealevelEnum);
+ 	element->GetInputValue(&drag_coefficient, gauss,FrictionCoefficientEnum);
+ 	element->GetInputValue(&drag_coefficient_coulomb, gauss,FrictionCoefficientcoulombEnum);
+ 	IssmDouble rho_water = element->FindParam(MaterialsRhoSeawaterEnum);
+@@ -359,13 +356,12 @@
+ 		else alpha2=drag_coefficient*drag_coefficient*pow(Neff,r)*pow(vmag,(s-1.));
+ 	}
+ 
+-	floatation_thickness=0;
+-	if(base<0) floatation_thickness=-(rho_water/rho_ice)*base;
+ 	if(vmag==0.){
+ 		alpha2_coulomb=0.;
+ 	}
+ 	else{
+-		alpha2_coulomb=drag_coefficient_coulomb*drag_coefficient_coulomb*rho_ice*gravity*max(0.,thickness-floatation_thickness)/vmag;
++		//alpha2_coulomb=drag_coefficient_coulomb*drag_coefficient_coulomb*rho_ice*gravity*max(0.,thickness-floatation_thickness)/vmag;
++		alpha2_coulomb=drag_coefficient_coulomb*drag_coefficient_coulomb*Neff/vmag;
+ 	}
+ 
+ 	if(alpha2_coulomb<alpha2) alpha2=alpha2_coulomb;
Index: /issm/oecreview/Archive/27032-27229/ISSM-27164-27165.diff
===================================================================
--- /issm/oecreview/Archive/27032-27229/ISSM-27164-27165.diff	(revision 27230)
+++ /issm/oecreview/Archive/27032-27229/ISSM-27164-27165.diff	(revision 27230)
@@ -0,0 +1,288 @@
+Index: ../trunk-jpl/src/c/classes/Loads/Friction.cpp
+===================================================================
+--- ../trunk-jpl/src/c/classes/Loads/Friction.cpp	(revision 27164)
++++ ../trunk-jpl/src/c/classes/Loads/Friction.cpp	(revision 27165)
+@@ -343,7 +343,23 @@
+ 	s=1./drag_p;
+ 
+ 	/*Get effective pressure*/
+-	IssmDouble Neff = EffectivePressure(gauss);
++	bool ispwStochastic;
++	IssmDouble Neff;
++	element->parameters->FindParam(&ispwStochastic,StochasticForcingIsWaterPressureEnum);
++	if(ispwStochastic){
++		/*Retrieve stochastic water pressure and compute ice pressure*/
++		IssmDouble p_ice,p_water,Neff_limit;
++		element->GetInputValue(&p_water,gauss,FrictionCoulombWaterPressureEnum);
++		element->parameters->FindParam(&Neff_limit,FrictionEffectivePressureLimitEnum);
++		p_ice = IcePressure(gauss);
++		Neff  = max(Neff_limit*p_ice, p_ice - p_water);
++	}	
++	else{
++		/*Compute effective pressure directly*/
++		Neff = EffectivePressure(gauss);
++	}
++	
++	/*Get velocity magnitude*/
+ 	IssmDouble vmag = VelMag(gauss);
+ 
+ 	if(s==1.){
+Index: ../trunk-jpl/src/c/modules/StochasticForcingx/StochasticForcingx.cpp
+===================================================================
+--- ../trunk-jpl/src/c/modules/StochasticForcingx/StochasticForcingx.cpp	(revision 27164)
++++ ../trunk-jpl/src/c/modules/StochasticForcingx/StochasticForcingx.cpp	(revision 27165)
+@@ -206,7 +206,7 @@
+ 						for(int i=0;i<numvertices;i++){
+ 							gauss->GaussVertex(i);
+ 							p_water_deterministic[i] = friction->SubglacialWaterPressure(gauss);
+-							p_water[i]               = p_water_deterministic[i] + noisefield[dimensionid]; //make sure positive (29Nov2021)
++							p_water[i]               = p_water_deterministic[i] + noisefield[dimensionid]; 
+ 						}
+ 						element->AddInput(FrictionWaterPressureEnum,p_water,P1DGEnum);
+ 						delete gauss;
+@@ -227,13 +227,35 @@
+ 						for(int i=0;i<numvertices;i++){
+ 							gauss->GaussVertex(i);
+ 							p_water_deterministic[i] = friction->SubglacialWaterPressure(gauss);
+-							p_water[i]               = p_water_deterministic[i] + noisefield[dimensionid]; //make sure positive (29Nov2021)
++							p_water[i]               = p_water_deterministic[i] + noisefield[dimensionid]; 
+ 						}
+ 						element->AddInput(FrictionSchoofWaterPressureEnum,p_water,P1DGEnum);
+ 						delete gauss;
+ 						delete friction;
+ 					}
+-					break;				default:
++					break;
++				case FrictionCoulombWaterPressureEnum:
++					/*Specify that WaterPressure is stochastic*/ 
++					femmodel->parameters->SetParam(true,StochasticForcingIsWaterPressureEnum);
++					for(Object* &object:femmodel->elements->objects){
++                  Element* element = xDynamicCast<Element*>(object);
++                  int numvertices  = element->GetNumberOfVertices();
++                  IssmDouble p_water_deterministic[numvertices];
++                  IssmDouble p_water[numvertices];
++						element->GetInputValue(&dimensionid,StochasticForcingDefaultIdEnum);
++						Gauss* gauss=element->NewGauss();
++						Friction* friction = new Friction(element);
++						for(int i=0;i<numvertices;i++){
++							gauss->GaussVertex(i);
++							p_water_deterministic[i] = friction->SubglacialWaterPressure(gauss);
++							p_water[i]               = p_water_deterministic[i] + noisefield[dimensionid]; 
++						}
++						element->AddInput(FrictionCoulombWaterPressureEnum,p_water,P1DGEnum);
++						delete gauss;
++						delete friction;
++					}
++					break;
++				default:
+ 					_error_("Field "<<EnumToStringx(fields[j])<<" does not support stochasticity yet.");
+ 			}
+ 		}
+Index: ../trunk-jpl/src/c/shared/Enum/Enum.vim
+===================================================================
+--- ../trunk-jpl/src/c/shared/Enum/Enum.vim	(revision 27164)
++++ ../trunk-jpl/src/c/shared/Enum/Enum.vim	(revision 27165)
+@@ -746,6 +746,7 @@
+ syn keyword cConstant FrictionCmaxEnum
+ syn keyword cConstant FrictionCoefficientEnum
+ syn keyword cConstant FrictionCoefficientcoulombEnum
++syn keyword cConstant FrictionCoulombWaterPressureEnum
+ syn keyword cConstant FrictionEffectivePressureEnum
+ syn keyword cConstant FrictionMEnum
+ syn keyword cConstant FrictionPEnum
+Index: ../trunk-jpl/src/c/shared/Enum/EnumDefinitions.h
+===================================================================
+--- ../trunk-jpl/src/c/shared/Enum/EnumDefinitions.h	(revision 27164)
++++ ../trunk-jpl/src/c/shared/Enum/EnumDefinitions.h	(revision 27165)
+@@ -742,6 +742,7 @@
+ 	FrictionCmaxEnum,
+ 	FrictionCoefficientEnum,
+ 	FrictionCoefficientcoulombEnum,
++	FrictionCoulombWaterPressureEnum,
+ 	FrictionEffectivePressureEnum,
+ 	FrictionMEnum,
+ 	FrictionPEnum,
+Index: ../trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp
+===================================================================
+--- ../trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp	(revision 27164)
++++ ../trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp	(revision 27165)
+@@ -748,6 +748,7 @@
+ 		case FrictionCmaxEnum : return "FrictionCmax";
+ 		case FrictionCoefficientEnum : return "FrictionCoefficient";
+ 		case FrictionCoefficientcoulombEnum : return "FrictionCoefficientcoulomb";
++		case FrictionCoulombWaterPressureEnum : return "FrictionCoulombWaterPressure";
+ 		case FrictionEffectivePressureEnum : return "FrictionEffectivePressure";
+ 		case FrictionMEnum : return "FrictionM";
+ 		case FrictionPEnum : return "FrictionP";
+Index: ../trunk-jpl/src/c/shared/Enum/Enumjl.vim
+===================================================================
+--- ../trunk-jpl/src/c/shared/Enum/Enumjl.vim	(revision 27164)
++++ ../trunk-jpl/src/c/shared/Enum/Enumjl.vim	(revision 27165)
+@@ -739,6 +739,7 @@
+ syn keyword juliaConstC FrictionCmaxEnum
+ syn keyword juliaConstC FrictionCoefficientEnum
+ syn keyword juliaConstC FrictionCoefficientcoulombEnum
++syn keyword juliaConstC FrictionCoulombWaterPressureEnum
+ syn keyword juliaConstC FrictionEffectivePressureEnum
+ syn keyword juliaConstC FrictionMEnum
+ syn keyword juliaConstC FrictionPEnum
+Index: ../trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp
+===================================================================
+--- ../trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp	(revision 27164)
++++ ../trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp	(revision 27165)
+@@ -766,6 +766,7 @@
+ 	      else if (strcmp(name,"FrictionCmax")==0) return FrictionCmaxEnum;
+ 	      else if (strcmp(name,"FrictionCoefficient")==0) return FrictionCoefficientEnum;
+ 	      else if (strcmp(name,"FrictionCoefficientcoulomb")==0) return FrictionCoefficientcoulombEnum;
++	      else if (strcmp(name,"FrictionCoulombWaterPressure")==0) return FrictionCoulombWaterPressureEnum;
+ 	      else if (strcmp(name,"FrictionEffectivePressure")==0) return FrictionEffectivePressureEnum;
+ 	      else if (strcmp(name,"FrictionM")==0) return FrictionMEnum;
+ 	      else if (strcmp(name,"FrictionP")==0) return FrictionPEnum;
+@@ -873,11 +874,11 @@
+ 	      else if (strcmp(name,"RadarAttenuationMacGregor")==0) return RadarAttenuationMacGregorEnum;
+ 	      else if (strcmp(name,"RadarAttenuationWolff")==0) return RadarAttenuationWolffEnum;
+ 	      else if (strcmp(name,"RadarIcePeriod")==0) return RadarIcePeriodEnum;
+-	      else if (strcmp(name,"RadarPowerMacGregor")==0) return RadarPowerMacGregorEnum;
+          else stage=8;
+    }
+    if(stage==8){
+-	      if (strcmp(name,"RadarPowerWolff")==0) return RadarPowerWolffEnum;
++	      if (strcmp(name,"RadarPowerMacGregor")==0) return RadarPowerMacGregorEnum;
++	      else if (strcmp(name,"RadarPowerWolff")==0) return RadarPowerWolffEnum;
+ 	      else if (strcmp(name,"RheologyBAbsGradient")==0) return RheologyBAbsGradientEnum;
+ 	      else if (strcmp(name,"RheologyBInitialguess")==0) return RheologyBInitialguessEnum;
+ 	      else if (strcmp(name,"RheologyBInitialguessMisfit")==0) return RheologyBInitialguessMisfitEnum;
+@@ -996,11 +997,11 @@
+ 	      else if (strcmp(name,"SmbDswrf")==0) return SmbDswrfEnum;
+ 	      else if (strcmp(name,"SmbDswdiffrf")==0) return SmbDswdiffrfEnum;
+ 	      else if (strcmp(name,"SmbDzAdd")==0) return SmbDzAddEnum;
+-	      else if (strcmp(name,"SmbDz")==0) return SmbDzEnum;
+          else stage=9;
+    }
+    if(stage==9){
+-	      if (strcmp(name,"SmbDzMin")==0) return SmbDzMinEnum;
++	      if (strcmp(name,"SmbDz")==0) return SmbDzEnum;
++	      else if (strcmp(name,"SmbDzMin")==0) return SmbDzMinEnum;
+ 	      else if (strcmp(name,"SmbDzTop")==0) return SmbDzTopEnum;
+ 	      else if (strcmp(name,"SmbDzini")==0) return SmbDziniEnum;
+ 	      else if (strcmp(name,"SmbEAir")==0) return SmbEAirEnum;
+@@ -1119,11 +1120,11 @@
+ 	      else if (strcmp(name,"ThicknessAbsMisfit")==0) return ThicknessAbsMisfitEnum;
+ 	      else if (strcmp(name,"ThicknessAcrossGradient")==0) return ThicknessAcrossGradientEnum;
+ 	      else if (strcmp(name,"ThicknessAlongGradient")==0) return ThicknessAlongGradientEnum;
+-	      else if (strcmp(name,"Thickness")==0) return ThicknessEnum;
+          else stage=10;
+    }
+    if(stage==10){
+-	      if (strcmp(name,"ThicknessOld")==0) return ThicknessOldEnum;
++	      if (strcmp(name,"Thickness")==0) return ThicknessEnum;
++	      else if (strcmp(name,"ThicknessOld")==0) return ThicknessOldEnum;
+ 	      else if (strcmp(name,"ThicknessPositive")==0) return ThicknessPositiveEnum;
+ 	      else if (strcmp(name,"ThicknessResidual")==0) return ThicknessResidualEnum;
+ 	      else if (strcmp(name,"TransientAccumulatedDeltaIceThickness")==0) return TransientAccumulatedDeltaIceThicknessEnum;
+@@ -1242,11 +1243,11 @@
+ 	      else if (strcmp(name,"Outputdefinition84")==0) return Outputdefinition84Enum;
+ 	      else if (strcmp(name,"Outputdefinition85")==0) return Outputdefinition85Enum;
+ 	      else if (strcmp(name,"Outputdefinition86")==0) return Outputdefinition86Enum;
+-	      else if (strcmp(name,"Outputdefinition87")==0) return Outputdefinition87Enum;
+          else stage=11;
+    }
+    if(stage==11){
+-	      if (strcmp(name,"Outputdefinition88")==0) return Outputdefinition88Enum;
++	      if (strcmp(name,"Outputdefinition87")==0) return Outputdefinition87Enum;
++	      else if (strcmp(name,"Outputdefinition88")==0) return Outputdefinition88Enum;
+ 	      else if (strcmp(name,"Outputdefinition89")==0) return Outputdefinition89Enum;
+ 	      else if (strcmp(name,"Outputdefinition8")==0) return Outputdefinition8Enum;
+ 	      else if (strcmp(name,"Outputdefinition90")==0) return Outputdefinition90Enum;
+@@ -1365,11 +1366,11 @@
+ 	      else if (strcmp(name,"FixedTimestepping")==0) return FixedTimesteppingEnum;
+ 	      else if (strcmp(name,"FloatingArea")==0) return FloatingAreaEnum;
+ 	      else if (strcmp(name,"FloatingAreaScaled")==0) return FloatingAreaScaledEnum;
+-	      else if (strcmp(name,"FloatingMeltRate")==0) return FloatingMeltRateEnum;
+          else stage=12;
+    }
+    if(stage==12){
+-	      if (strcmp(name,"Free")==0) return FreeEnum;
++	      if (strcmp(name,"FloatingMeltRate")==0) return FloatingMeltRateEnum;
++	      else if (strcmp(name,"Free")==0) return FreeEnum;
+ 	      else if (strcmp(name,"FreeSurfaceBaseAnalysis")==0) return FreeSurfaceBaseAnalysisEnum;
+ 	      else if (strcmp(name,"FreeSurfaceTopAnalysis")==0) return FreeSurfaceTopAnalysisEnum;
+ 	      else if (strcmp(name,"FrontalForcingsDefault")==0) return FrontalForcingsDefaultEnum;
+@@ -1488,11 +1489,11 @@
+ 	      else if (strcmp(name,"Melange")==0) return MelangeEnum;
+ 	      else if (strcmp(name,"MeltingAnalysis")==0) return MeltingAnalysisEnum;
+ 	      else if (strcmp(name,"MeshElements")==0) return MeshElementsEnum;
+-	      else if (strcmp(name,"MeshX")==0) return MeshXEnum;
+          else stage=13;
+    }
+    if(stage==13){
+-	      if (strcmp(name,"MeshY")==0) return MeshYEnum;
++	      if (strcmp(name,"MeshX")==0) return MeshXEnum;
++	      else if (strcmp(name,"MeshY")==0) return MeshYEnum;
+ 	      else if (strcmp(name,"MinVel")==0) return MinVelEnum;
+ 	      else if (strcmp(name,"MinVx")==0) return MinVxEnum;
+ 	      else if (strcmp(name,"MinVy")==0) return MinVyEnum;
+@@ -1611,11 +1612,11 @@
+ 	      else if (strcmp(name,"SubelementMelt1")==0) return SubelementMelt1Enum;
+ 	      else if (strcmp(name,"SubelementMelt2")==0) return SubelementMelt2Enum;
+ 	      else if (strcmp(name,"SubelementMigration")==0) return SubelementMigrationEnum;
+-	      else if (strcmp(name,"SurfaceSlopeSolution")==0) return SurfaceSlopeSolutionEnum;
+          else stage=14;
+    }
+    if(stage==14){
+-	      if (strcmp(name,"TaylorHood")==0) return TaylorHoodEnum;
++	      if (strcmp(name,"SurfaceSlopeSolution")==0) return SurfaceSlopeSolutionEnum;
++	      else if (strcmp(name,"TaylorHood")==0) return TaylorHoodEnum;
+ 	      else if (strcmp(name,"Tetra")==0) return TetraEnum;
+ 	      else if (strcmp(name,"TetraInput")==0) return TetraInputEnum;
+ 	      else if (strcmp(name,"ThermalAnalysis")==0) return ThermalAnalysisEnum;
+Index: ../trunk-jpl/src/m/classes/stochasticforcing.m
+===================================================================
+--- ../trunk-jpl/src/m/classes/stochasticforcing.m	(revision 27164)
++++ ../trunk-jpl/src/m/classes/stochasticforcing.m	(revision 27165)
+@@ -98,7 +98,7 @@
+ 					if~(isequal(class(md.friction),char(mdname)))
+                   error('md.friction does not agree with stochasticforcing field %s', char(field));
+                end
+-					if(strcmp(class(md.friction),'friction') || strcmp(class(md.friction),'frictionschoof'))
++					if(strcmp(class(md.friction),'friction') || strcmp(class(md.friction),'frictionschoof') || strcmp(class(md.friction),'frictioncoulomb'))
+                   if(md.friction.coupling~=0 && md.friction.coupling~=1 && md.friction.coupling~=2)
+                      error('stochasticforcing field %s is only implemented for cases md.friction.coupling 0 or 1 or 2', char(field));
+                   end
+@@ -270,6 +270,7 @@
+ 		'DefaultCalving',...
+ 		'FloatingMeltRate',...
+ 		'FrictionWaterPressure',...
++		'FrictionCoulombWaterPressure',...
+ 		'FrictionSchoofWaterPressure',...
+ 		'FrontalForcingsRignotAutoregression',...
+ 		'SMBautoregression',...
+@@ -281,6 +282,7 @@
+ 		'calving',...
+ 		'basalforcings',...
+ 		'friction',...
++		'frictioncoulomb',...
+ 		'frictionschoof',...
+ 		'frontalforcingsrignotautoregression',...
+ 		'SMBautoregression',...
+Index: ../trunk-jpl/src/m/classes/stochasticforcing.py
+===================================================================
+--- ../trunk-jpl/src/m/classes/stochasticforcing.py	(revision 27164)
++++ ../trunk-jpl/src/m/classes/stochasticforcing.py	(revision 27165)
+@@ -106,7 +106,7 @@
+                 mdname = structstoch[field]
+                 if (type(md.friction).__name__ != mdname):
+                     raise TypeError('md.friction does not agree with stochasticforcing field {}'.format(field))
+-                if (type(md.friction).__name__=='friction' or type(md.friction).__name__=='frictionschoof'):
++                if (type(md.friction).__name__=='friction' or type(md.friction).__name__=='frictionschoof' or type(md.friction).__name__=='frictioncoulomb'):
+                     if md.friction.coupling not in[0, 1, 2]:
+                         raise TypeError('stochasticforcing field {} is only implemented for cases md.friction.coupling 0 or 1 or 2'.format(field))
+                 if (type(md.friction).__name__=='friction'):
+@@ -233,6 +233,7 @@
+                      'DefaultCalving': 'calving',
+                      'FloatingMeltRate': 'basalforcings',
+                      'FrictionWaterPressure': 'friction',
++                     'FrictionCoulombWaterPressure': 'frictioncoulomb',
+                      'FrictionSchoofWaterPressure': 'frictionschoof',
+                      'FrontalForcingsRignotAutoregression': 'frontalforcingsrignotautoregression',
+                      'SMBautoregression': 'SMBautoregression',
Index: /issm/oecreview/Archive/27032-27229/ISSM-27165-27166.diff
===================================================================
--- /issm/oecreview/Archive/27032-27229/ISSM-27165-27166.diff	(revision 27230)
+++ /issm/oecreview/Archive/27032-27229/ISSM-27165-27166.diff	(revision 27230)
@@ -0,0 +1,276 @@
+Index: ../trunk-jpl/src/c/solutionsequences/solutionsequence_hydro_singleloop.cpp
+===================================================================
+--- ../trunk-jpl/src/c/solutionsequences/solutionsequence_hydro_singleloop.cpp	(nonexistent)
++++ ../trunk-jpl/src/c/solutionsequences/solutionsequence_hydro_singleloop.cpp	(revision 27166)
+@@ -0,0 +1,271 @@
++/*!\file: solutionsequence_hydro_singleloop.cpp
++ * \brief: core of the hydro solution
++ trying a single loop set-up to see the effect on convergence
++ */
++
++#include "../toolkits/toolkits.h"
++#include "../classes/classes.h"
++#include "../shared/shared.h"
++#include "../modules/modules.h"
++/*FIXME, dirty hack to get the solutionsequence linear needed to compute the slopes*/
++#include "../solutionsequences/solutionsequences.h"
++
++void solutionsequence_hydro_nonlinear(FemModel* femmodel, bool* pconv_fail){
++	/*solution : */
++	Vector<IssmDouble>* ug_sed=NULL;
++	Vector<IssmDouble>* uf_sed=NULL;
++	Vector<IssmDouble>* uf_sed_sub_iter=NULL;
++	Vector<IssmDouble>* ug_sed_sub_iter=NULL;
++	Vector<IssmDouble>* ug_sed_main_iter=NULL;
++	Vector<IssmDouble>* ug_sed_init=NULL;
++
++	Vector<IssmDouble>* ug_epl=NULL;
++	Vector<IssmDouble>* uf_epl=NULL;
++	Vector<IssmDouble>* uf_epl_sub_iter=NULL;
++	Vector<IssmDouble>* ug_epl_sub_iter=NULL;
++	Vector<IssmDouble>* ug_epl_main_iter=NULL;
++	Vector<IssmDouble>* ug_epl_init=NULL;
++
++	Vector<IssmDouble>* ys=NULL;
++	Vector<IssmDouble>* dug=NULL;
++	Vector<IssmDouble>* duf=NULL;
++
++	Matrix<IssmDouble>* Kff=NULL;
++	Matrix<IssmDouble>* Kfs=NULL;
++
++	Vector<IssmDouble>* pf=NULL;
++	Vector<IssmDouble>* df=NULL;
++
++	HydrologyDCInefficientAnalysis* inefanalysis = NULL;
++	HydrologyDCEfficientAnalysis* effanalysis = NULL;
++
++	bool       sedconverged,eplconverged,hydroconverged, headconverged, newthick;
++	bool       isefficientlayer;
++	bool       sliceadapt;
++	int        constraints_converged;
++	int        num_unstable_constraints;
++	int        sedcount,eplcount,hydrocount;
++	int        hydro_maxiter;
++	IssmDouble sediment_kmax;
++	IssmDouble eps_hyd;
++	IssmDouble ndu_sed,nu_sed;
++	IssmDouble ndu_epl,nu_epl;
++	IssmDouble ThickCount,L2Count;
++	/*Recover parameters: */
++	femmodel->SetCurrentConfiguration(HydrologyDCInefficientAnalysisEnum);
++	femmodel->parameters->FindParam(&isefficientlayer,HydrologydcIsefficientlayerEnum);
++	femmodel->parameters->FindParam(&sliceadapt,HydrologyStepAdaptEnum);
++	femmodel->parameters->FindParam(&hydro_maxiter,HydrologydcMaxIterEnum);
++	femmodel->parameters->FindParam(&eps_hyd,HydrologydcRelTolEnum);
++	hydrocount=1;
++	hydroconverged=false;
++
++	/*{{{ Retrieve inputs as the initial state for the non linear iteration*/
++	GetBasalSolutionFromInputsx(&ug_sed,femmodel);
++	ug_sed_init=ug_sed->Duplicate();
++	ug_sed->Copy(ug_sed_init);
++	Reducevectorgtofx(&uf_sed, ug_sed, femmodel->nodes,femmodel->parameters);
++	inefanalysis = new HydrologyDCInefficientAnalysis();
++	/*Initialize the IDS element mask to exclude frozen nodes*/
++	inefanalysis->ElementizeIdsMask(femmodel);
++
++	if(isefficientlayer) {
++		effanalysis = new HydrologyDCEfficientAnalysis();
++		femmodel->SetCurrentConfiguration(HydrologyDCEfficientAnalysisEnum);
++		GetBasalSolutionFromInputsx(&ug_epl,femmodel);
++		ug_epl_init=ug_epl->Duplicate();
++		ug_epl->Copy(ug_epl_init);
++		/*Initialize the EPL element mask*/
++		inefanalysis->ElementizeEplMask(femmodel);
++		effanalysis->InitZigZagCounter(femmodel);
++	}
++	/*}}}*/
++	/*The real computation starts here,single loop on the two layer system*/
++	for(;;){
++		sedcount=1;
++		eplcount=1;
++
++		/*keep the initial vlaue to compute convergence (on ug as activation can change for both layers)*/
++		ug_sed_main_iter=ug_sed->Duplicate();
++		ug_sed->Copy(ug_sed_main_iter);
++		if(isefficientlayer){
++			ug_epl_main_iter=ug_epl->Duplicate();
++			ug_epl->Copy(ug_epl_main_iter);
++		}
++		/*Loop on sediment layer to deal with transfer and head value*/
++		femmodel->SetCurrentConfiguration(HydrologyDCInefficientAnalysisEnum);
++		ResetZigzagCounterx(femmodel);
++		InputUpdateFromConstantx(femmodel,false,ConvergedEnum);
++		femmodel->UpdateConstraintsx();
++
++		/*Reset constraint on the ZigZag Lock*/
++		ResetConstraintsx(femmodel);
++
++		/*{{{ Loop for the sediment penalization*/
++		femmodel->profiler->Start(SEDLOOP);
++
++		for(;;){
++			/*{{{ Core of the computation*/
++			if(VerboseSolution()) _printf0_("Building Sediment Matrix...\n");
++			femmodel->profiler->Start(SEDMatrix);
++			sedconverged=false;
++			SystemMatricesx(&Kff,&Kfs,&pf,&df,&sediment_kmax,femmodel);
++			CreateNodalConstraintsx(&ys,femmodel->nodes);
++			Reduceloadx(pf,Kfs,ys); delete Kfs;
++			delete uf_sed;
++			femmodel->profiler->Stop(SEDMatrix);
++
++			femmodel->profiler->Start(SOLVER);
++			Solverx(&uf_sed,Kff,pf,uf_sed_sub_iter,df,femmodel->parameters);
++			delete Kff; delete pf; delete df; delete uf_sed_sub_iter;
++			uf_sed_sub_iter=uf_sed->Duplicate();_assert_(uf_sed_sub_iter);
++			uf_sed->Copy(uf_sed_sub_iter);
++			femmodel->profiler->Stop(SOLVER);
++
++			delete ug_sed;
++			femmodel->profiler->Start(SEDUpdate);
++			Mergesolutionfromftogx(&ug_sed,uf_sed,ys,femmodel->nodes,femmodel->parameters); delete ys;
++			InputUpdateFromSolutionx(femmodel,ug_sed);
++			ConstraintsStatex(&constraints_converged,&num_unstable_constraints,femmodel);
++			femmodel->profiler->Stop(SEDUpdate);
++
++			/*}}}*/
++			if (!sedconverged){
++				/*First check that all the penalizations are applied*/
++				if(VerboseConvergence()) _printf0_("   # Sediment unstable constraints = " << num_unstable_constraints << "\n");
++				if(num_unstable_constraints==0) sedconverged = true;
++				if (sedcount>=hydro_maxiter){
++					_error_("   maximum number of Sediment iterations (" << hydro_maxiter << ") exceeded");
++				}
++			}
++			/*Add an iteration and get out of the loop if the penalisation is converged*/
++			sedcount++;
++			if(sedconverged)break;
++		}
++
++		if(isefficientlayer){
++			femmodel->SetCurrentConfiguration(HydrologyDCEfficientAnalysisEnum);
++			/*updating mask*/
++			if(VerboseSolution()) _printf0_("==updating mask...\n");
++			femmodel->HydrologyEPLupdateDomainx(&ThickCount);
++			ResetZigzagCounterx(femmodel);
++			InputUpdateFromConstantx(femmodel,false,ConvergedEnum);
++
++			/*{{{ Retrieve the EPL head slopes and compute EPL Thickness*/
++			if(VerboseSolution()) _printf0_("computing EPL Head slope...\n");
++
++			femmodel->profiler->Start(EPLMasking);
++			femmodel->SetCurrentConfiguration(L2ProjectionEPLAnalysisEnum);
++			femmodel->UpdateConstraintsL2ProjectionEPLx(&L2Count);
++			femmodel->parameters->SetParam(EplHeadSlopeXEnum,InputToL2ProjectEnum);
++			solutionsequence_linear(femmodel);
++			femmodel->parameters->SetParam(EplHeadSlopeYEnum,InputToL2ProjectEnum);
++			solutionsequence_linear(femmodel);
++			femmodel->SetCurrentConfiguration(HydrologyDCEfficientAnalysisEnum);
++			effanalysis->ComputeEPLThickness(femmodel);
++			//updating mask after the computation of the epl thickness (Allow to close too thin EPL)
++			femmodel->HydrologyEPLupdateDomainx(&ThickCount);
++			/*}}}*/
++			femmodel->profiler->Stop(EPLMasking);
++
++			femmodel->profiler->Start(EPLMatrices);
++			if(VerboseSolution()) _printf0_("Building EPL Matrix...\n");
++			SystemMatricesx(&Kff,&Kfs,&pf,&df,NULL,femmodel);
++			CreateNodalConstraintsx(&ys,femmodel->nodes);
++			Reduceloadx(pf,Kfs,ys); delete Kfs;
++			delete uf_epl;
++			femmodel->profiler->Stop(EPLMatrices);
++
++			femmodel->profiler->Start(SOLVER);
++			Solverx(&uf_epl,Kff,pf,uf_epl_sub_iter,df,femmodel->parameters);
++			femmodel->profiler->Stop(SOLVER);
++
++			delete Kff; delete pf; delete df;
++			delete uf_epl_sub_iter;
++			uf_epl_sub_iter=uf_epl->Duplicate();_assert_(uf_epl_sub_iter);
++			uf_epl->Copy(uf_epl_sub_iter);
++			delete ug_epl;
++
++			femmodel->profiler->Start(EPLUpdate);
++			Mergesolutionfromftogx(&ug_epl,uf_epl,ys,femmodel->nodes,femmodel->parameters); delete ys;
++			InputUpdateFromSolutionx(femmodel,ug_epl);
++			ConstraintsStatex(&constraints_converged,&num_unstable_constraints,femmodel);
++			femmodel->profiler->Stop(EPLUpdate);
++		}
++		if(!hydroconverged){
++			//compute norm(du)/norm(u)
++			dug=ug_sed_main_iter->Duplicate(); _assert_(dug);
++			ug_sed_main_iter->Copy(dug);
++			dug->AYPX(ug_sed,-1.0);
++			ndu_sed=dug->Norm(NORM_TWO);
++			delete dug;
++			nu_sed=ug_sed_main_iter->Norm(NORM_TWO);
++			delete ug_sed_main_iter;
++			if (xIsNan<IssmDouble>(ndu_sed) || xIsNan<IssmDouble>(nu_sed)) _error_("Sed convergence criterion is NaN!");
++			if (ndu_sed==0.0 && nu_sed==0.0) nu_sed=1.0e-6; /*Hacking the case where the Sediment is used but empty*/
++
++			if(isefficientlayer){
++				dug=ug_epl_main_iter->Duplicate(); _assert_(dug);
++				ug_epl_main_iter->Copy(dug);
++				dug->AYPX(ug_epl,-1.0);
++				ndu_epl=dug->Norm(NORM_TWO);
++				delete dug;
++				nu_epl=ug_epl_main_iter->Norm(NORM_TWO);
++				delete ug_epl_main_iter;
++				if (xIsNan<IssmDouble>(ndu_epl) || xIsNan<IssmDouble>(nu_epl)) _error_("EPL convergence criterion is NaN!");
++				if (ndu_epl==0.0 && nu_epl==0.0) nu_epl=1.0e-6; /*Hacking the case where the EPL is used but empty*/
++			}
++
++			if (!xIsNan<IssmDouble>(eps_hyd)){
++				if ((ndu_epl/nu_epl)<eps_hyd && (ndu_sed/nu_sed)<(eps_hyd)){
++					if (VerboseConvergence()) _printf0_(setw(50) << left << "   Converged after, " << hydrocount << " iterations \n");
++					hydroconverged=true;
++				}
++				else{
++					if(VerboseConvergence()) _printf0_(setw(50) << left << "   for iteration:" << hydrocount << " \n");
++					if(VerboseConvergence()) _printf0_(setw(50) << left << "   Sediment Convergence criterion:" << ndu_sed/nu_sed*100 << "%, aiming lower than " << eps_hyd*100 << " %\n");
++					if(VerboseConvergence()) _printf0_(setw(50) << left << "   EPL Convergence criterion:" << ndu_epl/nu_epl*100 << "%, aiming lower than " << eps_hyd*100 << " %\n");
++					hydroconverged=false;
++				}
++			}
++			if (hydrocount>=hydro_maxiter*9/10  && sliceadapt && !hydroconverged) {
++				if(VerboseSolution()) _printf0_("hydrology main loop  did not converged after "<<hydrocount<<" iteration, we refine the steping\n");
++				*pconv_fail = true;
++				if(isefficientlayer){
++					InputUpdateFromSolutionx(femmodel,ug_epl_init);
++					delete ug_epl_init;
++				}
++				femmodel->SetCurrentConfiguration(HydrologyDCInefficientAnalysisEnum);
++				InputUpdateFromSolutionx(femmodel,ug_sed_init);
++				delete ug_sed_init;
++				break;
++			}
++			if (hydrocount>=hydro_maxiter){
++				_error_("   maximum number for hydrological global iterations (" << hydro_maxiter << ") exceeded");
++			}
++		}
++		hydrocount++;
++		if(hydroconverged)break;
++
++		if(*pconv_fail)break;
++	}
++	/*To deal with adaptative stepping we only save results if we are actually converged*/
++	if(hydroconverged){
++		if(isefficientlayer){
++			InputUpdateFromSolutionx(femmodel,ug_epl);
++			delete ug_epl_init;
++		}
++		femmodel->SetCurrentConfiguration(HydrologyDCInefficientAnalysisEnum);
++		InputUpdateFromSolutionx(femmodel,ug_sed);
++		delete ug_sed_init;
++	}
++	/*Free resources: */
++	delete ug_epl;
++	delete ug_sed;
++	delete uf_sed;
++	delete uf_epl;
++	delete uf_epl_sub_iter;
++	delete uf_sed_sub_iter;
++	delete inefanalysis;
++	delete effanalysis;
++}
Index: /issm/oecreview/Archive/27032-27229/ISSM-27166-27167.diff
===================================================================
--- /issm/oecreview/Archive/27032-27229/ISSM-27166-27167.diff	(revision 27230)
+++ /issm/oecreview/Archive/27032-27229/ISSM-27166-27167.diff	(revision 27230)
@@ -0,0 +1,599 @@
+Index: ../trunk-jpl/test/NightlyRun/runme.py
+===================================================================
+--- ../trunk-jpl/test/NightlyRun/runme.py	(revision 27166)
++++ ../trunk-jpl/test/NightlyRun/runme.py	(revision 27167)
+@@ -364,7 +364,7 @@
+                         if np.shape(field) != np.shape(archive) and not np.shape(field) in [(1, 1), (0, 0), (1, 0), (0, 1)]:
+                             field = field.T
+                             if np.shape(field) != np.shape(archive):
+-                                raise RuntimeError("Field '{}' from test is malformed; shape is {}, should be {} or {}".format(archive_name, np.shape(field.T), np.shape(archive), np.shape(archive.T)))
++                                raise RuntimeError("Field '{}' from test {} is malformed; shape is {}, should be {} or {}".format(fieldname, archive_name[7:], np.shape(field.T), np.shape(archive), np.shape(archive.T)))
+ 
+                         error_diff = np.amax(np.abs(archive - field), axis=0) / (np.amax(np.abs(archive), axis=0) + float_info.epsilon)
+                         if not np.isscalar(error_diff):
+Index: ../trunk-jpl/test/NightlyRun/test2004.m
+===================================================================
+--- ../trunk-jpl/test/NightlyRun/test2004.m	(revision 27166)
++++ ../trunk-jpl/test/NightlyRun/test2004.m	(revision 27167)
+@@ -6,10 +6,10 @@
+ gshhsshapefile=[shppath 'GSHHS_c_L1-NightlyRun.shp'];
+ %}}}
+ 
+-%create sealevel model to hold our information: 
++%create sealevel model to hold our information:
+ sl=sealevelmodel();
+ 
+-%Create basins using boundaries from shapefile: 
++%Create basins using boundaries from shapefile:
+ %some projections we'll rely on:  %{{{
+ proj4326=epsg2proj(4326);
+ proj3031=epsg2proj(3031);
+@@ -70,10 +70,10 @@
+ %Meshing
+ %Go through basins and mesh:  %{{{
+ %meshing parameters:  {{{
+-hmin=500; hmax=700; hmin=hmin*1000; hmax=hmax*1000; 
++hmin=500; hmax=700; hmin=hmin*1000; hmax=hmax*1000;
+ tolerance=100; %tolerance of 100m on Earth position when merging 3d meshes
+ threshold=5;
+-defaultoptions={'KeepVertices',0,'MaxCornerAngle',0.0000000001,'NoBoundaryRefinement',1}; 
++defaultoptions={'KeepVertices',0,'MaxCornerAngle',0.0000000001,'NoBoundaryRefinement',1};
+ alreadyloaded=0;
+ %}}}
+ for ind=sl.basinindx('basin','all'),
+@@ -81,7 +81,7 @@
+ 	bas=sl.basins{ind};
+ 	disp(sprintf('Meshing basin %s\n',bas.name));
+ 
+-	%recover basin domain: 
++	%recover basin domain:
+ 	domain=bas.contour();
+ 
+ 	%recover coastline inside basin, using GSHHS_c_L1. It's a lat/long file, hence epsg 4326
+@@ -91,11 +91,11 @@
+ 	md=bamg(model,'domain',domain,'subdomains',coastline,'hmin',hmin,'hmax',hmax,defaultoptions{:});
+ 	%plotmodel(md,'data','mesh');pause(1);
+ 
+-	%miscellaneous: 
++	%miscellaneous:
+ 	md.mesh.proj=bas.proj;
+ 	md.miscellaneous.name=bas.name;
+ 
+-	%recover mask where we have land: 
++	%recover mask where we have land:
+ 	md.private.bamg.landmask=double(md.private.bamg.mesh.Triangles(:,4)>=1);
+ 
+ 	%vertex connectivity:
+@@ -106,21 +106,21 @@
+ end
+ %}}}
+ 
+-%Parameterization: 
++%Parameterization:
+ %Parameterize ice sheets : {{{
+ for ind=sl.basinindx('continent',{'antarctica'}),
+ 	disp(sprintf('Parameterizing basin %s\n', sl.icecaps{ind}.miscellaneous.name));
+ 
+ 	md=sl.icecaps{ind};
+-	bas=sl.basins{ind}; 
++	bas=sl.basins{ind};
+ 	%masks :  %{{{
+-	%ice levelset from domain outlines: 
++	%ice levelset from domain outlines:
+ 	md.mask.ice_levelset=-ones(md.mesh.numberofvertices,1);
+-	
+-	if bas.isnameany('antarctica-grounded'), 
++
++	if bas.isnameany('antarctica-grounded'),
+ 		md.mask.ocean_levelset=ones(md.mesh.numberofvertices,1);
+ 	end
+-	if bas.isnameany('ronne','ross'), 
++	if bas.isnameany('ronne','ross'),
+ 		md.mask.ocean_levelset=-ones(md.mesh.numberofvertices,1);
+ 	end
+ 	%}}}
+@@ -160,7 +160,7 @@
+ 			% points=[longAIS,latAIS];
+ 			% index=delaunayn(points);
+ 			index=BamgTriangulate(longAIS, latAIS);
+-			lat=md.mesh.lat; 
++			lat=md.mesh.lat;
+ 			long=md.mesh.long+360;
+ 			pos=find(long>360);
+ 			long(pos)=long(pos)-360;
+@@ -194,11 +194,11 @@
+ 	md=sl.icecaps{ind};
+ 	bas=sl.basins{ind};
+ 
+-	%recover lat,long: 
++	%recover lat,long:
+ 	[md.mesh.long,md.mesh.lat]=gdaltransform(md.mesh.x,md.mesh.y,md.mesh.proj,'EPSG:4326');
+ 
+ 	%mask:  %{{{
+-	%Figure out mask from initial mesh: deal with land and ocean masks (land 
++	%Figure out mask from initial mesh: deal with land and ocean masks (land
+ 	%includes grounded ice).  %{{{
+ 	%first, transform land element mask into vertex-driven one
+ 	land=md.private.bamg.landmask;
+@@ -212,7 +212,7 @@
+ 	connectedisonocean=~land(connectedels);
+ 	sumconnectedisonocean=sum(connectedisonocean,2);
+ 
+-	%figure out which land elements are connected to the ocean: 
++	%figure out which land elements are connected to the ocean:
+ 	landelsconocean=landels(find(sumconnectedisonocean));
+ 
+ 	ind1=[md.mesh.elements(landelsconocean,1);
+@@ -222,7 +222,7 @@
+ 	md.mesh.elements(landelsconocean,3);
+ 	md.mesh.elements(landelsconocean,1)];
+ 
+-	%edge ind1 and ind2: 
++	%edge ind1 and ind2:
+ 	for i=1:length(ind1),
+ 		els1=md.mesh.vertexconnectivity(ind1(i),1: md.mesh.vertexconnectivity(ind1(i),end));
+ 		els2=md.mesh.vertexconnectivity(ind2(i),1: md.mesh.vertexconnectivity(ind2(i),end));
+@@ -229,7 +229,7 @@
+ 		els=intersect(els1,els2);
+ 
+ 		if length(find(land(els)))==1,
+-			%this edge is on the beach, 0 the edge: 
++			%this edge is on the beach, 0 the edge:
+ 			land_mask(ind1(i))=0;
+ 			land_mask(ind2(i))=0;
+ 		end
+@@ -236,7 +236,7 @@
+ 	end
+ 
+ 	md.mask.ocean_levelset=land_mask;
+-	md.mask.ice_levelset=ones(md.mesh.numberofvertices,1);   %if there are glaciers, we'll adjust 
++	md.mask.ice_levelset=ones(md.mesh.numberofvertices,1);   %if there are glaciers, we'll adjust
+ 
+ 	if testagainst2002,
+ 		% {{{
+@@ -250,7 +250,7 @@
+ 	%slc loading/calibration:  {{{
+ 	md.masstransport.spcthickness=zeros(md.mesh.numberofvertices,1);
+ 
+-	if testagainst2002, 
++	if testagainst2002,
+ 		% {{{
+ 		%greenland
+ 		late=sum(md.mesh.lat(md.mesh.elements),2)/3;
+@@ -260,7 +260,7 @@
+ 		md.masstransport.spcthickness(md.mesh.elements(pos,:))= md.masstransport.spcthickness(md.mesh.elements(pos,:))-100*ratio;
+ 		%md.masstransport.spcthickness(pos)=-100*ratio;
+ 
+-		%correct mask: 
++		%correct mask:
+ 		md.mask.ice_levelset(md.mesh.elements(pos,:))=-1;
+ 		% }}}
+ 	else
+@@ -280,8 +280,8 @@
+ 		latGLA=delH(:,2);
+ 		delHGLA=sum(delH(:,3:end),2);
+ 		index=BamgTriangulate(longGLA, latGLA);
+-		lat=md.mesh.lat; 
+-		long=md.mesh.long+360; 
++		lat=md.mesh.lat;
++		long=md.mesh.long+360;
+ 		pos=find(long>360);
+ 		long(pos)=long(pos)-360;
+ 		delHGLA=InterpFromMeshToMesh2d(index,longGLA,latGLA,delHGLA,long,lat);
+@@ -291,8 +291,8 @@
+ 		pos=find(delHGLA);
+ 		md.masstransport.spcthickness(pos)= md.masstransport.spcthickness(pos)-delHGLA(pos)/100;
+ 
+-		%adjust mask accordingly: 
+-		pos=find(md.masstransport.spcthickness); 
++		%adjust mask accordingly:
++		pos=find(md.masstransport.spcthickness);
+ 		md.mask.ice_levelset(pos)=-1;
+ 		md.mask.ocean_levelset(pos)=1;
+ 	end
+@@ -321,18 +321,18 @@
+ 
+ %%Assemble Earth in 3D {{{
+ 
+-%parameters: 
++%parameters:
+ plotting=0;
+ tolerance=100;
+-loneedgesdetect=0; 
++loneedgesdetect=0;
+ 
+-%create Earth model by concatenating all the icecaps in 3D: 
++%create Earth model by concatenating all the icecaps in 3D:
+ sl.caticecaps('tolerance',tolerance,'loneedgesdetect',loneedgesdetect);
+ 
+-%figure out how each icecap's mesh connects to the larger Earth mesh: 
++%figure out how each icecap's mesh connects to the larger Earth mesh:
+ sl.intersections('force',1);
+ 
+-%figure out connectivity: 
++%figure out connectivity:
+ disp('Mesh connectivity');
+ sl.earth.mesh.vertexconnectivity=NodeConnectivity(sl.earth.mesh.elements,sl.earth.mesh.numberofvertices);
+ 
+@@ -340,7 +340,7 @@
+ disp('Mesh nodal areas');
+ sl.earth.mesh.area=averaging(sl.earth,GetAreas3DTria(sl.earth.mesh.elements,sl.earth.mesh.x,sl.earth.mesh.y,sl.earth.mesh.z),4);
+ 
+-%transfer a list of fields from each icecap and continent back to Earth: 
++%transfer a list of fields from each icecap and continent back to Earth:
+ sl.transfer('mask.ice_levelset');
+ sl.transfer('mask.ocean_levelset');
+ sl.transfer('geometry.bed');
+@@ -354,7 +354,7 @@
+ sl.transfer('dsl.sea_surface_height_above_geoid');
+ sl.transfer('dsl.sea_water_pressure_at_sea_floor');
+ 
+-%radius: 
++%radius:
+ sl.earth.mesh.r=sqrt(sl.earth.mesh.x.^2+sl.earth.mesh.y.^2+sl.earth.mesh.z.^2);
+ 
+ %check on the mesh transitions: {{{
+@@ -372,12 +372,12 @@
+ %Solve Sea-level eqEricuation on Earth only:  {{{
+ md=sl.earth; %we don't do computations on ice sheets or land.
+ 
+-%Materials: 
++%Materials:
+ md.materials=materials('hydro');
+ 
+-%elastic loading from love numbers: 
++%elastic loading from love numbers:
+ md.solidearth.lovenumbers=lovenumbers('maxdeg',100);
+-md.solidearth.settings.ocean_area_scaling = 0; 
++md.solidearth.settings.ocean_area_scaling = 0;
+ 
+ %Miscellaneous
+ md.miscellaneous.name='test2004';
+@@ -394,14 +394,14 @@
+ md.solidearth.settings.grdmodel=1;
+ md.timestepping.time_step=1;
+ 
+-%Physics: 
+-md.transient.issmb=0; 
++%Physics:
++md.transient.issmb=0;
+ md.transient.isstressbalance=0;
+ md.transient.isthermal=0;
+ md.transient.ismasstransport=1;
+ md.transient.isslc=1;
+ 
+-%Initializations: 
++%Initializations:
+ md.basalforcings.groundedice_melting_rate=zeros(md.mesh.numberofvertices,1);
+ md.basalforcings.floatingice_melting_rate=zeros(md.mesh.numberofvertices,1);
+ md.initialization.vx=zeros(md.mesh.numberofvertices,1);
+Index: ../trunk-jpl/test/NightlyRun/test2004.py
+===================================================================
+--- ../trunk-jpl/test/NightlyRun/test2004.py	(revision 27166)
++++ ../trunk-jpl/test/NightlyRun/test2004.py	(revision 27167)
+@@ -1,9 +1,9 @@
+ # Test Name: Sea-Level-Partitions
+ #
+ # TODO:
+-# - Save boundaries by name to some data structure with tag so that they can be 
+-#   copied to basins that use identical shapefiles and projections (will need 
+-#   to check if the cost of the additional structure, checks, and copying are 
++# - Save boundaries by name to some data structure with tag so that they can be
++#   copied to basins that use identical shapefiles and projections (will need
++#   to check if the cost of the additional structure, checks, and copying are
+ #   greater than the cost of projecting).
+ #
+ from averaging import averaging
+@@ -40,7 +40,7 @@
+ #}}}
+ #HemisphereWest #{{{
+ sl.addbasin(
+-    basin('continent', 'hemispherewest', 'name', 'hemispherewest', 'proj', laea(0, -90), 'boundaries', [ # Peru projection 3587
++    basin('continent', 'hemispherewest', 'name', 'hemispherewest', 'proj', laea(0, -90), 'boundaries', [  # Peru projection 3587
+         boundary('shppath', shppath, 'shpfilename', 'HemisphereSplit', 'proj', proj4326, 'orientation', 'reverse'),
+         boundary('shppath', shppath, 'shpfilename', 'NorthAntarctica', 'proj', proj3031),
+         boundary('shppath', shppath, 'shpfilename', 'RonneBrunt', 'proj', proj3031, 'orientation', 'reverse'),
+@@ -48,8 +48,7 @@
+         boundary('shppath', shppath, 'shpfilename', 'RonneFront', 'proj', proj3031, 'orientation', 'reverse'),
+         boundary('shppath', shppath, 'shpfilename', 'RonneWestSummit', 'proj', proj3031),
+         boundary('shppath', shppath, 'shpfilename', 'WestAntarctica2', 'proj', proj3031, 'orientation', 'reverse'),
+-        boundary('shppath', shppath, 'shpfilename', 'SouthAntarctica', 'proj', proj3031)
+-        ]
++        boundary('shppath', shppath, 'shpfilename', 'SouthAntarctica', 'proj', proj3031)]
+     )
+ )
+ #}}}
+@@ -58,22 +57,20 @@
+     basin('continent', 'antarctica', 'name', 'ross', 'proj', proj3031, 'boundaries', [
+         boundary('shppath', shppath, 'shpfilename', 'SouthAntarctica', 'proj', proj3031),
+         boundary('shppath', shppath, 'shpfilename', 'RossIceShelf', 'proj', proj3031),
+-        boundary('shppath', shppath, 'shpfilename', 'RossWestFront','proj', proj3031),
+-        boundary('shppath', shppath, 'shpfilename', 'RossFront', 'proj', proj3031, 'orientation', 'reverse')
+-        ]
++        boundary('shppath', shppath, 'shpfilename', 'RossWestFront', 'proj', proj3031),
++        boundary('shppath', shppath, 'shpfilename', 'RossFront', 'proj', proj3031, 'orientation', 'reverse')]
+     )
+ )
+ #}}}
+ #HemisphereEast: {{{
+ sl.addbasin(
+-    basin('continent', 'hemisphereeast', 'name', 'hemisphereeast', 'proj', laea(0, +90), 'boundaries', [ #Australian projection lat, long
++    basin('continent', 'hemisphereeast', 'name', 'hemisphereeast', 'proj', laea(0, +90), 'boundaries', [  #Australian projection lat, long
+         boundary('shppath', shppath, 'shpfilename', 'HemisphereSplit', 'proj', proj4326),
+         boundary('shppath', shppath, 'shpfilename', 'SouthAntarctica', 'proj', proj3031),
+-        boundary('shppath', shppath, 'shpfilename','RossFront', 'proj', proj3031),
++        boundary('shppath', shppath, 'shpfilename', 'RossFront', 'proj', proj3031),
+         boundary('shppath', shppath, 'shpfilename', 'RossWestFront', 'proj', proj3031),
+-        boundary('shppath', shppath, 'shpfilename', 'EastAntarctica2', 'proj', proj3031,'orientation', 'reverse'),
+-        boundary('shppath', shppath, 'shpfilename', 'NorthAntarctica', 'proj', proj3031)
+-        ]
++        boundary('shppath', shppath, 'shpfilename', 'EastAntarctica2', 'proj', proj3031, 'orientation', 'reverse'),
++        boundary('shppath', shppath, 'shpfilename', 'NorthAntarctica', 'proj', proj3031)]
+     )
+ )
+ #}}}
+@@ -89,8 +86,7 @@
+         boundary('shppath', shppath, 'shpfilename', 'RonneWestSummit', 'proj', proj3031),
+         boundary('shppath', shppath, 'shpfilename', 'RonneIceShelf', 'proj', proj3031),
+         boundary('shppath', shppath, 'shpfilename', 'RonneEastSummit', 'proj', proj3031),
+-        boundary('shppath', shppath, 'shpfilename', 'RonneBrunt', 'proj', proj3031)
+-        ]
++        boundary('shppath', shppath, 'shpfilename', 'RonneBrunt', 'proj', proj3031)]
+     )
+ )
+ #}}}
+@@ -100,8 +96,7 @@
+         boundary('shppath', shppath, 'shpfilename', 'RonneWestSummit', 'proj', proj3031),
+         boundary('shppath', shppath, 'shpfilename', 'RonneIceShelf', 'proj', proj3031),
+         boundary('shppath', shppath, 'shpfilename', 'RonneEastSummit', 'proj', proj3031),
+-        boundary('shppath', shppath, 'shpfilename', 'RonneFront', 'proj', proj3031, 'orientation', 'reverse')
+-        ]
++        boundary('shppath', shppath, 'shpfilename', 'RonneFront', 'proj', proj3031, 'orientation', 'reverse')]
+     )
+ )
+ #}}}
+@@ -113,13 +108,11 @@
+ hmax = 700
+ hmin = hmin * 1000
+ hmax = hmax * 1000
+-tolerance = 100 # tolerance of 100m on Earth position when merging 3d meshes
++tolerance = 100  # tolerance of 100m on Earth position when merging 3d meshes
+ threshold = 5
+-defaultoptions = [
+-    'KeepVertices', 0,
+-    'MaxCornerAngle', 0.0000000001,
+-    'NoBoundaryRefinement', 1
+-]
++defaultoptions = ['KeepVertices', 0,
++                  'MaxCornerAngle', 0.0000000001,
++                  'NoBoundaryRefinement', 1]
+ alreadyloaded = 0
+ #}}}
+ for ind in sl.basinindx('basin', 'all'):
+@@ -133,7 +126,7 @@
+     coastline = bas.shapefilecrop('shapefile', gshhsshapefile, 'epsgshapefile', 4326, 'threshold', threshold)
+ 
+     # Mesh
+-    md = bamg(model(), 'domain', domain, 'subdomains', coastline, 'hmin', hmin, 'hmax', hmax, *defaultoptions) # NOTE: Unpacking defaultoptions with '*'
++    md = bamg(model(), 'domain', domain, 'subdomains', coastline, 'hmin', hmin, 'hmax', hmax, *defaultoptions)  # NOTE: Unpacking defaultoptions with '*'
+ 
+     # Miscellaneous
+     md.mesh.proj = bas.proj
+@@ -253,16 +246,12 @@
+     # Figure out which land elements are connected to the ocean
+     landelsconocean = landels[np.nonzero(sumconnectedisonocean)[0]]
+ 
+-    ind1 = np.hstack((
+-        md.mesh.elements[landelsconocean, 0],
+-        md.mesh.elements[landelsconocean, 1],
+-        md.mesh.elements[landelsconocean, 2]
+-    ))
+-    ind2 = np.hstack((
+-        md.mesh.elements[landelsconocean, 1],
+-        md.mesh.elements[landelsconocean, 2],
+-        md.mesh.elements[landelsconocean, 0]
+-    ))
++    ind1 = np.hstack((md.mesh.elements[landelsconocean, 0],
++                      md.mesh.elements[landelsconocean, 1],
++                      md.mesh.elements[landelsconocean, 2]))
++    ind2 = np.hstack((md.mesh.elements[landelsconocean, 1],
++                      md.mesh.elements[landelsconocean, 2],
++                      md.mesh.elements[landelsconocean, 0]))
+ 
+     # Edge ind1 and ind2
+     for i in range(len(ind1)):
+@@ -324,8 +313,8 @@
+         longe[pos] = longe[pos] - 360
+         delHGLA = InterpFromMeshToMesh2d(index, longGLA, latGLA, delHGLA, longe, late)
+ 
+-        # NOTE: For some reason, cannot apply pos to multiple arrays in a 
+-        #       singlelike we might do in MATLAB. Instead, we iterate over 
++        # NOTE: For some reason, cannot apply pos to multiple arrays in a
++        #       singlelike we might do in MATLAB. Instead, we iterate over
+         #       elements of pos.
+         #
+         pos = np.nonzero(delHGIS)[0]
+@@ -460,14 +449,12 @@
+ md.solidearth.settings.elastic = 0
+ md.solidearth.settings.rotation = 0
+ md.solidearth.settings.viscous = 0
+-md.solidearth.requested_outputs = [
+-    'default',
+-    'DeltaIceThickness',
+-    'Sealevel',
+-    'Bed',
+-    'SealevelBarystaticIceMask',
+-    'SealevelBarystaticOceanMask',
+-]
++md.solidearth.requested_outputs = ['default',
++                                   'DeltaIceThickness',
++                                   'Sealevel',
++                                   'Bed',
++                                   'SealevelBarystaticIceMask',
++                                   'SealevelBarystaticOceanMask']
+ md = solve(md, 'Transient')
+ Seustatic = md.results.TransientSolution.Sealevel
+ 
+Index: ../trunk-jpl/test/NightlyRun/test243.py
+===================================================================
+--- ../trunk-jpl/test/NightlyRun/test243.py	(revision 27166)
++++ ../trunk-jpl/test/NightlyRun/test243.py	(revision 27167)
+@@ -1,9 +1,7 @@
+ #Test Name: SquareShelfSMBGemb
+ from socket import gethostname
+ import sys
+-
+ import numpy as np
+-
+ from model import *
+ from parameterize import *
+ from setflowequation import *
+@@ -43,14 +41,12 @@
+ md.smb.C = np.tile(np.conjugate(inputs[b'LP']['C']), (md.mesh.numberofelements, 1)).flatten()
+ 
+ #smb settings
+-md.smb.requested_outputs = [
+-        'SmbDz','SmbT','SmbD','SmbRe','SmbGdn','SmbGsp','SmbEC',
+-        'SmbA','SmbMassBalance','SmbMAdd','SmbDzAdd','SmbFAC','SmbMeanSHF','SmbMeanLHF',
+-        'SmbMeanULW','SmbNetLW','SmbNetSW','SmbWAdd','SmbRunoff','SmbRefreeze','SmbMelt',
+-        'SmbEC','SmbPrecipitation','SmbRain','SmbAccumulatedMassBalance','SmbAccumulatedRunoff',
+-        'SmbAccumulatedMelt','SmbAccumulatedEC','SmbAccumulatedPrecipitation','SmbAccumulatedRain',
+-        'SmbAccumulatedPrecipitation','SmbAccumulatedRefreeze'
+-    ]
++md.smb.requested_outputs = ['SmbDz','SmbT','SmbD','SmbRe','SmbGdn','SmbGsp','SmbEC',
++                            'SmbA','SmbMassBalance','SmbMAdd','SmbDzAdd','SmbFAC','SmbMeanSHF','SmbMeanLHF',
++                            'SmbMeanULW','SmbNetLW','SmbNetSW','SmbWAdd','SmbRunoff','SmbRefreeze','SmbMelt',
++                            'SmbEC','SmbPrecipitation','SmbRain','SmbAccumulatedMassBalance','SmbAccumulatedRunoff',
++                            'SmbAccumulatedMelt','SmbAccumulatedEC','SmbAccumulatedPrecipitation','SmbAccumulatedRain',
++                            'SmbAccumulatedPrecipitation','SmbAccumulatedRefreeze']
+ 
+ #only run smb core:
+ md.transient.isstressbalance = 0
+@@ -71,7 +67,7 @@
+     nlayers=np.minimum(md.results.TransientSolution[i].SmbT.shape[1], nlayers)
+ 
+ #Fields and tolerances to track changes
+-field_names = ['Layers','SmbDz','SmbT','SmbD','SmbRe','SmbGdn','SmbGsp','SmbA' ,'SmbEC','SmbMassBalance','SmbMAdd','SmbDzAdd','SmbFAC','SmbMeanSHF','SmbMeanLHF','SmbMeanULW','SmbNetLW','SmbNetSW','SmbAccumulatedMassBalance','SmbAccumulatedRunoff','SmbAccumulatedMelt','SmbAccumulatedEC','SmbAccumulatedPrecipitation','SmbAccumulatedRain','SmbAccumulatedRefreeze','SmbRunoff','SmbMelt','SmbEC','SmbPrecipitation','SmbRain','SmbRefreeze','SmbWAdd']
++field_names = ['Layers', 'SmbDz', 'SmbT', 'SmbD', 'SmbRe', 'SmbGdn', 'SmbGsp', 'SmbA', 'SmbEC', 'SmbMassBalance', 'SmbMAdd', 'SmbDzAdd', 'SmbFAC', 'SmbMeanSHF', 'SmbMeanLHF', 'SmbMeanULW', 'SmbNetLW', 'SmbNetSW', 'SmbAccumulatedMassBalance', 'SmbAccumulatedRunoff', 'SmbAccumulatedMelt', 'SmbAccumulatedEC', 'SmbAccumulatedPrecipitation', 'SmbAccumulatedRain', 'SmbAccumulatedRefreeze', 'SmbRunoff', 'SmbMelt', 'SmbEC', 'SmbPrecipitation', 'SmbRain', 'SmbRefreeze', 'SmbWAdd']
+ field_tolerances = [1e-12, 2e-12, 1e-12, 2e-11, 1e-11, 2e-11, 1e-11, 1e-12, 1e-11, 1e-12, 1e-12, 1e-12, 1e-11, 2e-11, 2e-11, 1e-11, 9e-10, 2e-11, 1e-11, 9e-10, 2e-11, 1e-11, 1e-11, 1e-11, 1e-11, 1e-11, 1e-11, 1e-11, 1e-11, 1e-11, 1e-11, 1e-11]
+ 
+ 
+Index: ../trunk-jpl/test/NightlyRun/test252.py
+===================================================================
+--- ../trunk-jpl/test/NightlyRun/test252.py	(revision 27166)
++++ ../trunk-jpl/test/NightlyRun/test252.py	(revision 27167)
+@@ -78,61 +78,57 @@
+                'SmbDz2', 'SmbT2', 'SmbD2', 'SmbRe2', 'SmbGdn2', 'SmbGsp2', 'SmbA2', 'SmbEC2', 'SmbMassBalance2', 'SmbMAdd2', 'SmbDzAdd2', 'SmbFAC2',
+                'SmbDz3', 'SmbT3', 'SmbD3', 'SmbRe3', 'SmbGdn3', 'SmbGsp3', 'SmbA3', 'SmbEC3', 'SmbMassBalance3', 'SmbMAdd3', 'SmbDzAdd3', 'SmbFAC3',
+                'SmbDz4', 'SmbT4', 'SmbD4', 'SmbRe4', 'SmbGdn4', 'SmbGsp4', 'SmbA4', 'SmbEC4', 'SmbMassBalance4', 'SmbMAdd4', 'SmbDzAdd4', 'SmbFAC4']
+-field_tolerances = [
+-    1e-12,1e-12,1e-12,1e-12,1e-12,1e-12,1e-12,1e-12,1e-12,1e-12,1e-12,1e-12,1e-12,
+-    1e-12,1e-12,1e-11,1e-10,2e-11,1e-11,1e-12,1e-11,1e-12,1e-12,1e-12,1e-11,
+-    1e-12,1e-12,2e-12,2e-11,4e-11,1e-11,1e-12,1e-11,1e-11,1e-12,1e-12,1e-11,
+-    1e-11,1e-11,4e-11,4e-11,1e-12,4e-11,1e-12,3e-12,1e-10,1e-12,1e-12,2e-11
+-]
++field_tolerances = [1e-12, 1e-12, 1e-12, 1e-12, 1e-12, 1e-12, 1e-12, 1e-12, 1e-12, 1e-12, 1e-12, 1e-12, 1e-12,
++                    1e-12, 1e-12, 1e-11, 1e-10, 2e-11, 1e-11, 1e-12, 1e-11, 1e-12, 1e-12, 1e-12, 1e-11,
++                    1e-12, 1e-12, 2e-12, 2e-11, 4e-11, 1e-11, 1e-12, 1e-11, 1e-11, 1e-12, 1e-12, 1e-11,
++                    1e-11, 1e-11, 4e-11, 4e-11, 1e-12, 4e-11, 1e-12, 3e-12, 1e-10, 1e-12, 1e-12, 2e-11]
+ # Shape is different in python solution (fixed using reshape) which can cause test failure
+-field_values = [
+-    nlayers,
+-    md.results.TransientSolution[0].SmbDz[0, 0:nlayers].reshape(1, -1),
+-    md.results.TransientSolution[0].SmbT[0, 0:nlayers].reshape(1, -1),
+-    md.results.TransientSolution[0].SmbD[0, 0:nlayers].reshape(1, -1),
+-    md.results.TransientSolution[0].SmbRe[0, 0:nlayers].reshape(1, -1),
+-    md.results.TransientSolution[0].SmbGdn[0, 0:nlayers].reshape(1, -1),
+-    md.results.TransientSolution[0].SmbGsp[0, 0:nlayers].reshape(1, -1),
+-    md.results.TransientSolution[0].SmbA[0, 0:nlayers].reshape(1, -1),
+-    md.results.TransientSolution[0].SmbEC[0],
+-    md.results.TransientSolution[0].SmbMassBalance[0],
+-    md.results.TransientSolution[0].SmbMAdd[0],
+-    md.results.TransientSolution[0].SmbDzAdd[0],
+-    md.results.TransientSolution[0].SmbFAC[0],
+-    md.results.TransientSolution[145].SmbDz[0, 0:nlayers].reshape(1, -1),
+-    md.results.TransientSolution[145].SmbT[0, 0:nlayers].reshape(1, -1),
+-    md.results.TransientSolution[145].SmbD[0, 0:nlayers].reshape(1, -1),
+-    md.results.TransientSolution[145].SmbRe[0, 0:nlayers].reshape(1, -1),
+-    md.results.TransientSolution[145].SmbGdn[0, 0:nlayers].reshape(1, -1),
+-    md.results.TransientSolution[145].SmbGsp[0, 0:nlayers].reshape(1, -1),
+-    md.results.TransientSolution[145].SmbA[0, 0:nlayers].reshape(1, -1),
+-    md.results.TransientSolution[145].SmbEC[0],
+-    md.results.TransientSolution[145].SmbMassBalance[0],
+-    md.results.TransientSolution[145].SmbMAdd[0],
+-    md.results.TransientSolution[145].SmbDzAdd[0],
+-    md.results.TransientSolution[145].SmbFAC[0],
+-    md.results.TransientSolution[146].SmbDz[0, 0:nlayers].reshape(1, -1),
+-    md.results.TransientSolution[146].SmbT[0, 0:nlayers].reshape(1, -1),
+-    md.results.TransientSolution[146].SmbD[0, 0:nlayers].reshape(1, -1),
+-    md.results.TransientSolution[146].SmbRe[0, 0:nlayers].reshape(1, -1),
+-    md.results.TransientSolution[146].SmbGdn[0, 0:nlayers].reshape(1, -1),
+-    md.results.TransientSolution[146].SmbGsp[0, 0:nlayers].reshape(1, -1),
+-    md.results.TransientSolution[146].SmbA[0, 0:nlayers].reshape(1, -1),
+-    md.results.TransientSolution[146].SmbEC[0],
+-    md.results.TransientSolution[146].SmbMassBalance[0],
+-    md.results.TransientSolution[146].SmbMAdd[0],
+-    md.results.TransientSolution[146].SmbDzAdd[0],
+-    md.results.TransientSolution[146].SmbFAC[0],
+-    md.results.TransientSolution[-1].SmbDz[0, 0:nlayers].reshape(1, -1),
+-    md.results.TransientSolution[-1].SmbT[0, 0:nlayers].reshape(1, -1),
+-    md.results.TransientSolution[-1].SmbD[0, 0:nlayers].reshape(1, -1),
+-    md.results.TransientSolution[-1].SmbRe[0, 0:nlayers].reshape(1, -1),
+-    md.results.TransientSolution[-1].SmbGdn[0, 0:nlayers].reshape(1, -1),
+-    md.results.TransientSolution[-1].SmbGsp[0, 0:nlayers].reshape(1, -1),
+-    md.results.TransientSolution[-1].SmbA[0, 0:nlayers].reshape(1, -1),
+-    md.results.TransientSolution[-1].SmbEC[0],
+-    md.results.TransientSolution[-1].SmbMassBalance[0],
+-    md.results.TransientSolution[-1].SmbMAdd[0],
+-    md.results.TransientSolution[-1].SmbDzAdd[0],
+-    md.results.TransientSolution[-1].SmbFAC[0]
+-]
++field_values = [nlayers,
++                md.results.TransientSolution[0].SmbDz[0, 0:nlayers].reshape(1, -1),
++                md.results.TransientSolution[0].SmbT[0, 0:nlayers].reshape(1, -1),
++                md.results.TransientSolution[0].SmbD[0, 0:nlayers].reshape(1, -1),
++                md.results.TransientSolution[0].SmbRe[0, 0:nlayers].reshape(1, -1),
++                md.results.TransientSolution[0].SmbGdn[0, 0:nlayers].reshape(1, -1),
++                md.results.TransientSolution[0].SmbGsp[0, 0:nlayers].reshape(1, -1),
++                md.results.TransientSolution[0].SmbA[0, 0:nlayers].reshape(1, -1),
++                md.results.TransientSolution[0].SmbEC[0],
++                md.results.TransientSolution[0].SmbMassBalance[0],
++                md.results.TransientSolution[0].SmbMAdd[0],
++                md.results.TransientSolution[0].SmbDzAdd[0],
++                md.results.TransientSolution[0].SmbFAC[0],
++                md.results.TransientSolution[145].SmbDz[0, 0:nlayers].reshape(1, -1),
++                md.results.TransientSolution[145].SmbT[0, 0:nlayers].reshape(1, -1),
++                md.results.TransientSolution[145].SmbD[0, 0:nlayers].reshape(1, -1),
++                md.results.TransientSolution[145].SmbRe[0, 0:nlayers].reshape(1, -1),
++                md.results.TransientSolution[145].SmbGdn[0, 0:nlayers].reshape(1, -1),
++                md.results.TransientSolution[145].SmbGsp[0, 0:nlayers].reshape(1, -1),
++                md.results.TransientSolution[145].SmbA[0, 0:nlayers].reshape(1, -1),
++                md.results.TransientSolution[145].SmbEC[0],
++                md.results.TransientSolution[145].SmbMassBalance[0],
++                md.results.TransientSolution[145].SmbMAdd[0],
++                md.results.TransientSolution[145].SmbDzAdd[0],
++                md.results.TransientSolution[145].SmbFAC[0],
++                md.results.TransientSolution[146].SmbDz[0, 0:nlayers].reshape(1, -1),
++                md.results.TransientSolution[146].SmbT[0, 0:nlayers].reshape(1, -1),
++                md.results.TransientSolution[146].SmbD[0, 0:nlayers].reshape(1, -1),
++                md.results.TransientSolution[146].SmbRe[0, 0:nlayers].reshape(1, -1),
++                md.results.TransientSolution[146].SmbGdn[0, 0:nlayers].reshape(1, -1),
++                md.results.TransientSolution[146].SmbGsp[0, 0:nlayers].reshape(1, -1),
++                md.results.TransientSolution[146].SmbA[0, 0:nlayers].reshape(1, -1),
++                md.results.TransientSolution[146].SmbEC[0],
++                md.results.TransientSolution[146].SmbMassBalance[0],
++                md.results.TransientSolution[146].SmbMAdd[0],
++                md.results.TransientSolution[146].SmbDzAdd[0],
++                md.results.TransientSolution[146].SmbFAC[0],
++                md.results.TransientSolution[-1].SmbDz[0, 0:nlayers].reshape(1, -1),
++                md.results.TransientSolution[-1].SmbT[0, 0:nlayers].reshape(1, -1),
++                md.results.TransientSolution[-1].SmbD[0, 0:nlayers].reshape(1, -1),
++                md.results.TransientSolution[-1].SmbRe[0, 0:nlayers].reshape(1, -1),
++                md.results.TransientSolution[-1].SmbGdn[0, 0:nlayers].reshape(1, -1),
++                md.results.TransientSolution[-1].SmbGsp[0, 0:nlayers].reshape(1, -1),
++                md.results.TransientSolution[-1].SmbA[0, 0:nlayers].reshape(1, -1),
++                md.results.TransientSolution[-1].SmbEC[0],
++                md.results.TransientSolution[-1].SmbMassBalance[0],
++                md.results.TransientSolution[-1].SmbMAdd[0],
++                md.results.TransientSolution[-1].SmbDzAdd[0],
++                md.results.TransientSolution[-1].SmbFAC[0]]
Index: /issm/oecreview/Archive/27032-27229/ISSM-27167-27168.diff
===================================================================
--- /issm/oecreview/Archive/27032-27229/ISSM-27167-27168.diff	(revision 27230)
+++ /issm/oecreview/Archive/27032-27229/ISSM-27167-27168.diff	(revision 27230)
@@ -0,0 +1,70 @@
+Index: ../trunk-jpl/src/c/modules/Reducevectorgtofx/Reducevectorgtofx.cpp
+===================================================================
+--- ../trunk-jpl/src/c/modules/Reducevectorgtofx/Reducevectorgtofx.cpp	(revision 27167)
++++ ../trunk-jpl/src/c/modules/Reducevectorgtofx/Reducevectorgtofx.cpp	(revision 27168)
+@@ -15,7 +15,9 @@
+ 
+ 	/*If fsize is 0, return NULL vector*/
+ 	if(fsize==0){
+-		*puf=NULL;
++		Vector<IssmDouble>* uf=new Vector<IssmDouble>(0);
++		*puf=uf;
++		//*puf=NULL;
+ 		return;
+ 	}
+ 
+Index: ../trunk-jpl/src/c/solutionsequences/convergence.cpp
+===================================================================
+--- ../trunk-jpl/src/c/solutionsequences/convergence.cpp	(revision 27167)
++++ ../trunk-jpl/src/c/solutionsequences/convergence.cpp	(revision 27168)
+@@ -1,6 +1,6 @@
+ /*!\file: convergence.cpp
+  * \brief: figure out if convergence has been reached
+- */ 
++ */
+ 
+ #include "../classes/classes.h"
+ #include "../modules/modules.h"
+@@ -23,7 +23,7 @@
+ 
+ 	if(VerboseModule()) _printf0_("   checking convergence\n");
+ 
+-	/*If uf is NULL in input, f-set is nil, model is fully constrained, therefore converged from 
++	/*If uf is NULL in input, f-set is nil, model is fully constrained, therefore converged from
+ 	 * the get go: */
+ 	if(uf->IsEmpty()){
+ 		*pconverged=true;
+@@ -38,6 +38,7 @@
+ 	KUoldF=KUold->Duplicate();KUold->Copy(KUoldF); KUoldF->AYPX(pf,-1.0);
+ 	nKUoldF=KUoldF->Norm(NORM_TWO);
+ 	nF=pf->Norm(NORM_TWO);
++	nF+=1.0e14;
+ 	res=nKUoldF/nF;
+ 	if (xIsNan<IssmDouble>(res)){
+ 		_printf0_("norm nf = " << nF << "f and norm kuold = " << nKUoldF << "f\n");
+@@ -53,7 +54,7 @@
+ 		if(VerboseConvergence()) _printf0_(setw(50)<<left<<"   mechanical equilibrium convergence criterion"<<res*100<< " < "<<eps_res*100<<" %\n");
+ 		converged=true;
+ 	}
+-	else{ 
++	else{
+ 		if(VerboseConvergence()) _printf0_(setw(50)<<left<<"   mechanical equilibrium convergence criterion"<<res*100<<" > "<<eps_res*100<<" %\n");
+ 		converged=false;
+ 	}
+@@ -64,7 +65,6 @@
+ 		//compute norm(du)/norm(u)
+ 		duf=old_uf->Duplicate(); old_uf->Copy(duf); duf->AYPX(uf,-1.0);
+ 		ndu=duf->Norm(NORM_TWO); nu=old_uf->Norm(NORM_TWO);
+-
+ 		if (xIsNan<IssmDouble>(ndu) || xIsNan<IssmDouble>(nu)) _error_("convergence criterion is NaN!");
+ 
+ 		//clean up
+@@ -75,7 +75,7 @@
+ 			if((ndu/nu)<eps_rel){
+ 				if(VerboseConvergence()) _printf0_(setw(50) << left << "   Convergence criterion: norm(du)/norm(u)" << ndu/nu*100 << " < " << eps_rel*100 << " %\n");
+ 			}
+-			else{ 
++			else{
+ 				if(VerboseConvergence()) _printf0_(setw(50) << left << "   Convergence criterion: norm(du)/norm(u)" << ndu/nu*100 << " > " << eps_rel*100 << " %\n");
+ 				converged=false;
+ 			}
Index: /issm/oecreview/Archive/27032-27229/ISSM-27168-27169.diff
===================================================================
--- /issm/oecreview/Archive/27032-27229/ISSM-27168-27169.diff	(revision 27230)
+++ /issm/oecreview/Archive/27032-27229/ISSM-27168-27169.diff	(revision 27230)
@@ -0,0 +1,37 @@
+Index: ../trunk-jpl/src/c/classes/Cfdragcoeffabsgrad.cpp
+===================================================================
+--- ../trunk-jpl/src/c/classes/Cfdragcoeffabsgrad.cpp	(revision 27168)
++++ ../trunk-jpl/src/c/classes/Cfdragcoeffabsgrad.cpp	(revision 27169)
+@@ -68,7 +68,15 @@
+ }
+ /*}}}*/
+ void Cfdragcoeffabsgrad::Marshall(MarshallHandle* marshallhandle){/*{{{*/
+-	_error_("not implemented yet!"); 
++
++	/*ok, marshall operations: */
++   int object_enum=CfdragcoeffabsgradEnum;
++   marshallhandle->call(object_enum);
++
++	marshallhandle->call(this->definitionenum);
++	marshallhandle->call(this->name);
++	marshallhandle->call(this->weights_enum);
++	marshallhandle->call(this->timepassedflag);
+ } 
+ /*}}}*/
+ int Cfdragcoeffabsgrad::ObjectEnum(void){/*{{{*/
+Index: ../trunk-jpl/src/c/datastructures/DataSet.cpp
+===================================================================
+--- ../trunk-jpl/src/c/datastructures/DataSet.cpp	(revision 27168)
++++ ../trunk-jpl/src/c/datastructures/DataSet.cpp	(revision 27169)
+@@ -265,6 +265,11 @@
+ 				cfsurf->Marshall(marshallhandle);
+ 				this->AddObject(cfsurf);
+ 			}
++			else if(obj_enum==CfdragcoeffabsgradEnum){
++				Cfdragcoeffabsgrad* cfdragcoeff=new Cfdragcoeffabsgrad();
++				cfdragcoeff->Marshall(marshallhandle);
++				this->AddObject(cfdragcoeff);
++			}
+ 			else if(obj_enum==MassfluxatgateEnum){
+ 				Massfluxatgate<IssmDouble>* massfluxgate=new Massfluxatgate<IssmDouble>();
+ 				massfluxgate->Marshall(marshallhandle);
Index: /issm/oecreview/Archive/27032-27229/ISSM-27169-27170.diff
===================================================================
--- /issm/oecreview/Archive/27032-27229/ISSM-27169-27170.diff	(revision 27230)
+++ /issm/oecreview/Archive/27032-27229/ISSM-27169-27170.diff	(revision 27230)
@@ -0,0 +1,70 @@
+Index: ../trunk-jpl/src/c/modules/Reducevectorgtofx/Reducevectorgtofx.cpp
+===================================================================
+--- ../trunk-jpl/src/c/modules/Reducevectorgtofx/Reducevectorgtofx.cpp	(revision 27169)
++++ ../trunk-jpl/src/c/modules/Reducevectorgtofx/Reducevectorgtofx.cpp	(revision 27170)
+@@ -15,9 +15,7 @@
+ 
+ 	/*If fsize is 0, return NULL vector*/
+ 	if(fsize==0){
+-		Vector<IssmDouble>* uf=new Vector<IssmDouble>(0);
+-		*puf=uf;
+-		//*puf=NULL;
++		*puf=NULL;
+ 		return;
+ 	}
+ 
+Index: ../trunk-jpl/src/c/solutionsequences/convergence.cpp
+===================================================================
+--- ../trunk-jpl/src/c/solutionsequences/convergence.cpp	(revision 27169)
++++ ../trunk-jpl/src/c/solutionsequences/convergence.cpp	(revision 27170)
+@@ -1,6 +1,6 @@
+ /*!\file: convergence.cpp
+  * \brief: figure out if convergence has been reached
+- */
++ */ 
+ 
+ #include "../classes/classes.h"
+ #include "../modules/modules.h"
+@@ -23,7 +23,7 @@
+ 
+ 	if(VerboseModule()) _printf0_("   checking convergence\n");
+ 
+-	/*If uf is NULL in input, f-set is nil, model is fully constrained, therefore converged from
++	/*If uf is NULL in input, f-set is nil, model is fully constrained, therefore converged from 
+ 	 * the get go: */
+ 	if(uf->IsEmpty()){
+ 		*pconverged=true;
+@@ -38,7 +38,6 @@
+ 	KUoldF=KUold->Duplicate();KUold->Copy(KUoldF); KUoldF->AYPX(pf,-1.0);
+ 	nKUoldF=KUoldF->Norm(NORM_TWO);
+ 	nF=pf->Norm(NORM_TWO);
+-	nF+=1.0e14;
+ 	res=nKUoldF/nF;
+ 	if (xIsNan<IssmDouble>(res)){
+ 		_printf0_("norm nf = " << nF << "f and norm kuold = " << nKUoldF << "f\n");
+@@ -54,7 +53,7 @@
+ 		if(VerboseConvergence()) _printf0_(setw(50)<<left<<"   mechanical equilibrium convergence criterion"<<res*100<< " < "<<eps_res*100<<" %\n");
+ 		converged=true;
+ 	}
+-	else{
++	else{ 
+ 		if(VerboseConvergence()) _printf0_(setw(50)<<left<<"   mechanical equilibrium convergence criterion"<<res*100<<" > "<<eps_res*100<<" %\n");
+ 		converged=false;
+ 	}
+@@ -65,6 +64,7 @@
+ 		//compute norm(du)/norm(u)
+ 		duf=old_uf->Duplicate(); old_uf->Copy(duf); duf->AYPX(uf,-1.0);
+ 		ndu=duf->Norm(NORM_TWO); nu=old_uf->Norm(NORM_TWO);
++
+ 		if (xIsNan<IssmDouble>(ndu) || xIsNan<IssmDouble>(nu)) _error_("convergence criterion is NaN!");
+ 
+ 		//clean up
+@@ -75,7 +75,7 @@
+ 			if((ndu/nu)<eps_rel){
+ 				if(VerboseConvergence()) _printf0_(setw(50) << left << "   Convergence criterion: norm(du)/norm(u)" << ndu/nu*100 << " < " << eps_rel*100 << " %\n");
+ 			}
+-			else{
++			else{ 
+ 				if(VerboseConvergence()) _printf0_(setw(50) << left << "   Convergence criterion: norm(du)/norm(u)" << ndu/nu*100 << " > " << eps_rel*100 << " %\n");
+ 				converged=false;
+ 			}
Index: /issm/oecreview/Archive/27032-27229/ISSM-27170-27171.diff
===================================================================
--- /issm/oecreview/Archive/27032-27229/ISSM-27170-27171.diff	(revision 27230)
+++ /issm/oecreview/Archive/27032-27229/ISSM-27170-27171.diff	(revision 27230)
@@ -0,0 +1,13 @@
+Index: ../trunk-jpl/src/c/solutionsequences/convergence.cpp
+===================================================================
+--- ../trunk-jpl/src/c/solutionsequences/convergence.cpp	(revision 27170)
++++ ../trunk-jpl/src/c/solutionsequences/convergence.cpp	(revision 27171)
+@@ -37,7 +37,7 @@
+ 	KUold=uf->Duplicate(); Kff->MatMult(old_uf,KUold);
+ 	KUoldF=KUold->Duplicate();KUold->Copy(KUoldF); KUoldF->AYPX(pf,-1.0);
+ 	nKUoldF=KUoldF->Norm(NORM_TWO);
+-	nF=pf->Norm(NORM_TWO);
++	nF=pf->Norm(NORM_TWO)+1.e-14;
+ 	res=nKUoldF/nF;
+ 	if (xIsNan<IssmDouble>(res)){
+ 		_printf0_("norm nf = " << nF << "f and norm kuold = " << nKUoldF << "f\n");
Index: /issm/oecreview/Archive/27032-27229/ISSM-27171-27172.diff
===================================================================
--- /issm/oecreview/Archive/27032-27229/ISSM-27171-27172.diff	(revision 27230)
+++ /issm/oecreview/Archive/27032-27229/ISSM-27171-27172.diff	(revision 27230)
@@ -0,0 +1,42 @@
+Index: ../trunk-jpl/examples/UncertaintyQuantification/runme.m
+===================================================================
+--- ../trunk-jpl/examples/UncertaintyQuantification/runme.m	(revision 27171)
++++ ../trunk-jpl/examples/UncertaintyQuantification/runme.m	(revision 27172)
+@@ -4,6 +4,7 @@
+ if any(steps==1)
+ 	disp('   Step 1: plot flux gates');
+ 
++	% NOTE: Need to run all steps of ../Pig/runme.m first!
+ 	md = loadmodel('../Pig/Models/PIG_Control_drag');
+ 
+ 	texts=cell(1,13);
+Index: ../trunk-jpl/src/m/classes/clusters/generic_static.m
+===================================================================
+--- ../trunk-jpl/src/m/classes/clusters/generic_static.m	(revision 27171)
++++ ../trunk-jpl/src/m/classes/clusters/generic_static.m	(revision 27172)
+@@ -40,6 +40,10 @@
+ 			disp(sprintf('    shell: %s',cluster.shell));
+ 		end
+ 		%}}}
++		function numprocs=nprocs(cluster) % {{{
++			numprocs=cluster.np;
++		end
++		%}}}
+ 		function md = checkconsistency(cluster,md,solution,analyses) % {{{
+ 			if cluster.np<1
+ 				md = checkmessage(md,['number of processors should be at least 1']);
+Index: ../trunk-jpl/src/m/classes/clusters/generic_static.py
+===================================================================
+--- ../trunk-jpl/src/m/classes/clusters/generic_static.py	(revision 27171)
++++ ../trunk-jpl/src/m/classes/clusters/generic_static.py	(revision 27172)
+@@ -53,6 +53,10 @@
+         return s
+     # }}}
+ 
++    def nprocs(self):  # {{{
++        return self.np
++    # }}}
++
+     def checkconsistency(self, md, solution, analyses):  # {{{
+         if self.np < 1:
+             md.checkmessage('number of processors should be at least 1')
Index: /issm/oecreview/Archive/27032-27229/ISSM-27172-27173.diff
===================================================================
--- /issm/oecreview/Archive/27032-27229/ISSM-27172-27173.diff	(revision 27230)
+++ /issm/oecreview/Archive/27032-27229/ISSM-27172-27173.diff	(revision 27230)
@@ -0,0 +1,28 @@
+Index: ../trunk-jpl/src/m/classes/frictionschoof.py
+===================================================================
+--- ../trunk-jpl/src/m/classes/frictionschoof.py	(revision 27172)
++++ ../trunk-jpl/src/m/classes/frictionschoof.py	(revision 27173)
+@@ -1,5 +1,4 @@
+ import numpy as np
+-
+ from checkfield import checkfield
+ from fielddisplay import fielddisplay
+ from project3d import project3d
+@@ -21,7 +20,7 @@
+         self.coupling                 = 0
+         self.effective_pressure       = np.nan
+         self.effective_pressure_limit = 0
+-        
++
+         nargs = len(args)
+         if nargs == 0:
+             self.setdefaultparameters()
+@@ -54,7 +53,7 @@
+         self.C = project3d(md, 'vector', self.C, 'type', 'node')
+         self.Cmax = project3d(md, 'vector', self.Cmax, 'type', 'node')
+         self.m = project3d(md, 'vector', self.m, 'type', 'element')
+-        if self.coupling in[3, 4]:
++        if self.coupling in [3, 4]:
+             self.effective_pressure = project3d(md, 'vector', self.effective_pressure, 'type', 'node', 'layer', 1)
+         return self
+     #}}}
Index: /issm/oecreview/Archive/27032-27229/ISSM-27173-27174.diff
===================================================================
--- /issm/oecreview/Archive/27032-27229/ISSM-27173-27174.diff	(revision 27230)
+++ /issm/oecreview/Archive/27032-27229/ISSM-27173-27174.diff	(revision 27230)
@@ -0,0 +1,87 @@
+Index: ../trunk-jpl/src/m/mesh/planet/gmsh/gmshplanet.m
+===================================================================
+--- ../trunk-jpl/src/m/mesh/planet/gmsh/gmshplanet.m	(revision 27173)
++++ ../trunk-jpl/src/m/mesh/planet/gmsh/gmshplanet.m	(revision 27174)
+@@ -14,6 +14,22 @@
+ %      md.mesh=gmshplanet('radius',6000,'resolution',100);
+ %      md.mesh=gmshplanet('radius',6000,'resolution',100);
+ 
++	%Find path to gmsh
++	paths = {[issmdir() 'bin/gmsh'],...
++		 [issmdir() 'externalpackages/gmsh/install/gmsh'],...
++		 ['/usr/bin/gmsh']...
++		};
++	gmshpath = '';
++	for i=paths
++		if exist(i{1},'file'),
++			gmshpath = i{1};
++			break;
++		end
++	end
++	if isempty(gmshpath),
++		error('gmsh not found, make sure it is properly installed');
++	end
++
+ 	% Get Gmsh version
+ 	[s,r]=system(['gmsh -info 2>&1 | command grep ''Version'' | sed -e ''s/Version[[:blank:]]*:[[:blank:]]//'' | cut -d ''.'' -f1']);
+ 	if s~=0,
+@@ -50,11 +66,11 @@
+ 	fid=fopen('sphere.geo','w');
+ 
+ 	% NOTE:
+-	% - The default format in Gmsh 3 is "msh2". Rather than conditionally 
+-	% modifying our parsing scheme for Gmsh 4, for now, we simply set the 
++	% - The default format in Gmsh 3 is "msh2". Rather than conditionally
++	% modifying our parsing scheme for Gmsh 4, for now, we simply set the
+ 	% 'Mesh.MshFileVersion' option.
+-	% - Decreasing the value of the 'Mesh.RandomFactor' option leads to an 
+-	% equal number of nodes and elements being produced under macOS and Linux 
++	% - Decreasing the value of the 'Mesh.RandomFactor' option leads to an
++	% equal number of nodes and elements being produced under macOS and Linux
+ 	% at certain resolutions using certain meshing algorithms.
+ 	%
+ 	fprintf(fid,'Mesh.Algorithm = 1;\n'); % MeshAdapt
+@@ -141,6 +157,11 @@
+ 	end
+ 
+ 	% Call gmsh
++	%
++	% NOTE: The default format in Gmsh 3 is "msh2". Rather than conditionally
++	%		modifying our parsing scheme for Gmsh 4, for now, we simply set the
++	%		"-format" option.
++	%
+ 	if  exist(options,'refine'),
+ 		system(['gmsh -2 sphere.geo -bgm sphere.pos']);
+ 	else
+@@ -194,11 +215,11 @@
+ 	fclose(fid);
+ 	%}}}
+ 
+-	%a little technicality here. the mesh generate is not exactly on the 
+-	%sphere. we create lat,long coordinates, and reproject on an exact sphere. 
++	%a little technicality here. the mesh generate is not exactly on the
++	%sphere. we create lat,long coordinates, and reproject on an exact sphere.
+ 	mesh.r=sqrt(mesh.x.^2+mesh.y.^2+mesh.z.^2);
+ 
+-	%make sure we don't have south and north pole: 
++	%make sure we don't have south and north pole:
+ 	pos=find(mesh.x==0 & mesh.y==0);
+ 	mesh.lat = asind(mesh.z./mesh.r);
+ 	mesh.long = atan2d(mesh.y,mesh.x);
+Index: ../trunk-jpl/src/m/mesh/planet/gmsh/gmshplanet.py
+===================================================================
+--- ../trunk-jpl/src/m/mesh/planet/gmsh/gmshplanet.py	(revision 27173)
++++ ../trunk-jpl/src/m/mesh/planet/gmsh/gmshplanet.py	(revision 27174)
+@@ -25,7 +25,11 @@
+     subproc_args = 'gmsh -info 2>&1 | command grep \'Version\' | sed -e \'s/Version[[:blank:]]*:[[:blank:]]//\' | cut -d \'.\' -f1'
+     subproc = subprocess.Popen(subproc_args, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE, universal_newlines=True)
+     outs, errs = subproc.communicate()
+-    if ((not isinstance(errs, bytes)) & (errs != '')) or (isinstance(errs, bytes) & (errs.decode() != '')):
++    try:
++        strErrs = errs.decode()
++    except AttributeError:  #this is not a byte variable, let's assume string
++        strErrs = errs
++    if strErrs != '':
+         raise Exception('gmshplanet: call to gmsh failed: {}'.format(errs))
+     gmshmajorversion = int(outs)
+     if gmshmajorversion not in [3, 4]:
Index: /issm/oecreview/Archive/27032-27229/ISSM-27174-27175.diff
===================================================================
--- /issm/oecreview/Archive/27032-27229/ISSM-27174-27175.diff	(revision 27230)
+++ /issm/oecreview/Archive/27032-27229/ISSM-27174-27175.diff	(revision 27230)
@@ -0,0 +1,92 @@
+Index: ../trunk-jpl/src/m/classes/initialization.py
+===================================================================
+--- ../trunk-jpl/src/m/classes/initialization.py	(revision 27174)
++++ ../trunk-jpl/src/m/classes/initialization.py	(revision 27175)
+@@ -13,7 +13,7 @@
+         initialization = initialization()
+     """
+ 
+-    def __init__(self): #{{{
++    def __init__(self):  #{{{
+         self.vx = np.nan
+         self.vy = np.nan
+         self.vz = np.nan
+@@ -36,7 +36,8 @@
+ 
+         self.setdefaultparameters()
+     #}}}
+-    def __repr__(self): #{{{
++
++    def __repr__(self):  #{{{
+         s = '   initial field values:\n'
+         s += '{}\n'.format(fielddisplay(self, 'vx', 'x component of velocity [m/yr]'))
+         s += '{}\n'.format(fielddisplay(self, 'vy', 'y component of velocity [m/yr]'))
+@@ -52,13 +53,15 @@
+         s += '{}\n'.format(fielddisplay(self, 'epl_thickness', 'thickness of the epl [m]'))
+         s += '{}\n'.format(fielddisplay(self, 'hydraulic_potential', 'Hydraulic potential (for GlaDS) [Pa]'))
+         s += '{}\n'.format(fielddisplay(self, 'channelarea', 'subglaciale water channel area (for GlaDS) [m2]'))
+-        s += '{}\n'.format(fielddisplay(self,'sample', 'Realization of a Gaussian random field'))
++        s += '{}\n'.format(fielddisplay(self, 'sample', 'Realization of a Gaussian random field'))
+         return s
+     #}}}
+-    def setdefaultparameters(self): #{{{
++
++    def setdefaultparameters(self):  #{{{
+         return
+     #}}}
+-    def checkconsistency(self, md, solution, analyses): #{{{
++
++    def checkconsistency(self, md, solution, analyses):  #{{{
+         if 'StressbalanceAnalysis' in analyses and not solution == 'TransientSolution' and not md.transient.isstressbalance:
+             if not np.any(np.logical_or(np.isnan(md.initialization.vx), np.isnan(md.initialization.vy))):
+                 md = checkfield(md, 'fieldname', 'initialization.vx', 'NaN', 1, 'Inf', 1, 'size', [md.mesh.numberofvertices])
+@@ -92,17 +95,21 @@
+             if(pos.size):
+                 md = checkfield(md, 'fieldname', 'delta Tpmp', 'field', np.absolute(md.initialization.temperature[pos] - (md.materials.meltingpoint - md.materials.beta * md.initialization.pressure[pos])), '<', 1e-11, 'message', 'set temperature to pressure melting point at locations with waterfraction > 0')
+         if 'HydrologyShreveAnalysis' in analyses:
+-            if hasattr(md.hydrology, 'hydrologyshreve'):
++            if type(md.hydrology).__name__ == 'hydrologyshreve':
+                 if (solution == 'TransientSolution' and md.transient.ishydrology) or solution == 'HydrologySolution':
+                     md = checkfield(md, 'fieldname', 'initialization.watercolumn', 'NaN', 1, 'Inf', 1, 'size', [md.mesh.numberofvertices])
++        if 'HydrologyDCAnalysis' in analyses:
++            if type(md.hydrology).__name__ == 'hydrologydc':
++                if (solution == 'TransientSolution' and md.transient.ishydrology) or solution == 'HydrologySolution':
++                    md = checkfield(md, 'fieldname', 'initialization.sediment_head', 'NaN', 1, 'Inf', 1, 'size', [md.mesh.numberofvertices])
+         if 'HydrologyTwsAnalysis' in analyses:
+-            if hasattr(md.hydrology, 'hydrologytws'):
++            if type(md.hydrology).__name__ == 'hydrologytws':
+                 md = checkfield(md, 'fieldname', 'initialization.watercolumn', 'NaN', 1, 'Inf', 1, 'size', [md.mesh.numberofvertices])
+         if 'SealevelchangeAnalysis' in analyses:
+             if solution == 'TransientSolution' and md.transient.isslc:
+                 md = checkfield(md, 'fieldname', 'initialization.sealevel', 'NaN', 1, 'Inf', 1, 'size', [md.mesh.numberofvertices])
+         if 'HydrologyGlaDSAnalysis' in analyses:
+-            if hasattr(md.hydrology, 'hydrologyglads'):
++            if type(md.hydrology).__name__ == 'hydrologyglads':
+                 md = checkfield(md, 'fieldname', 'initialization.watercolumn', 'NaN', 1, 'Inf', 1, 'size', [md.mesh.numberofvertices])
+                 md = checkfield(md, 'fieldname', 'initialization.hydraulic_potential', 'NaN', 1, 'Inf', 1, 'size', [md.mesh.numberofvertices])
+                 md = checkfield(md, 'fieldname', 'initialization.channelarea', 'NaN', 1, 'Inf', 1, '>=', 0, 'size', [md.mesh.numberofelements])
+@@ -111,6 +118,7 @@
+                 md = checkfield(md, 'fieldname', 'initialization.sample', 'NaN', 1,'Inf', 1, 'size', [md.mesh.numberofvertices])
+         return md
+     #}}}
++
+     def marshall(self, prefix, md, fid): #{{{
+         yts = md.constants.yts
+ 
+@@ -118,7 +126,7 @@
+         WriteData(fid, prefix, 'object', self, 'fieldname', 'vy', 'format', 'DoubleMat', 'mattype', 1, 'scale', 1 / yts)
+         WriteData(fid, prefix, 'object', self, 'fieldname', 'vz', 'format', 'DoubleMat', 'mattype', 1, 'scale', 1 / yts)
+         WriteData(fid, prefix, 'object', self, 'fieldname', 'pressure', 'format', 'DoubleMat', 'mattype', 1)
+-        WriteData(fid, prefix, 'object', self, 'fieldname', 'sealevel', 'format', 'DoubleMat', 'mattype', 1,'timeserieslength', md.mesh.numberofvertices + 1, 'yts', yts)
++        WriteData(fid, prefix, 'object', self, 'fieldname', 'sealevel', 'format', 'DoubleMat', 'mattype', 1, 'timeserieslength', md.mesh.numberofvertices + 1, 'yts', yts)
+         WriteData(fid, prefix, 'object', self, 'fieldname', 'bottompressure', 'format', 'DoubleMat', 'mattype', 1)
+         WriteData(fid, prefix, 'object', self, 'fieldname', 'str', 'format', 'DoubleMat', 'mattype', 1)
+         WriteData(fid, prefix, 'object', self, 'fieldname', 'dsl', 'format', 'DoubleMat', 'mattype', 1)
+@@ -142,6 +150,7 @@
+ 
+             WriteData(fid, prefix, 'data', self.enthalpy, 'format', 'DoubleMat', 'mattype', 1, 'name', 'md.initialization.enthalpy')
+     #}}}
++
+     def extrude(self, md): #{{{
+         self.vx = project3d(md, 'vector', self.vx, 'type', 'node')
+         self.vy = project3d(md, 'vector', self.vy, 'type', 'node')
Index: /issm/oecreview/Archive/27032-27229/ISSM-27175-27176.diff
===================================================================
--- /issm/oecreview/Archive/27032-27229/ISSM-27175-27176.diff	(revision 27230)
+++ /issm/oecreview/Archive/27032-27229/ISSM-27175-27176.diff	(revision 27230)
@@ -0,0 +1,80 @@
+Index: ../trunk-jpl/src/c/modules/Reducevectorgtofx/Reducevectorgtofx.cpp
+===================================================================
+--- ../trunk-jpl/src/c/modules/Reducevectorgtofx/Reducevectorgtofx.cpp	(revision 27175)
++++ ../trunk-jpl/src/c/modules/Reducevectorgtofx/Reducevectorgtofx.cpp	(revision 27176)
+@@ -15,7 +15,9 @@
+ 
+ 	/*If fsize is 0, return NULL vector*/
+ 	if(fsize==0){
+-		*puf=NULL;
++		Vector<IssmDouble>* uf=new Vector<IssmDouble>(0);
++		*puf=uf;
++		//*puf=NULL;
+ 		return;
+ 	}
+ 
+Index: ../trunk-jpl/src/c/solutionsequences/convergence.cpp
+===================================================================
+--- ../trunk-jpl/src/c/solutionsequences/convergence.cpp	(revision 27175)
++++ ../trunk-jpl/src/c/solutionsequences/convergence.cpp	(revision 27176)
+@@ -1,6 +1,6 @@
+ /*!\file: convergence.cpp
+  * \brief: figure out if convergence has been reached
+- */ 
++ */
+ 
+ #include "../classes/classes.h"
+ #include "../modules/modules.h"
+@@ -20,16 +20,23 @@
+ 	IssmDouble nF;
+ 	IssmDouble res;
+ 	int analysis_type;
++	int ufsize;
+ 
+ 	if(VerboseModule()) _printf0_("   checking convergence\n");
+ 
+-	/*If uf is NULL in input, f-set is nil, model is fully constrained, therefore converged from 
++	/*If uf is NULL in input, f-set is nil, model is fully constrained, therefore converged from
+ 	 * the get go: */
+-	if(uf->IsEmpty()){
++	uf->GetSize(&ufsize);
++	if(ufsize==0){
+ 		*pconverged=true;
+ 		return;
+ 	}
+ 
++	/* if(uf->IsEmpty()){ */
++	/* 	*pconverged=true; */
++	/* 	return; */
++	/* } */
++
+ 	/*Force equilibrium (Mandatory)*/
+ 
+ 	/*compute K[n]U[n-1]F = K[n]U[n-1] - F*/
+@@ -53,7 +60,7 @@
+ 		if(VerboseConvergence()) _printf0_(setw(50)<<left<<"   mechanical equilibrium convergence criterion"<<res*100<< " < "<<eps_res*100<<" %\n");
+ 		converged=true;
+ 	}
+-	else{ 
++	else{
+ 		if(VerboseConvergence()) _printf0_(setw(50)<<left<<"   mechanical equilibrium convergence criterion"<<res*100<<" > "<<eps_res*100<<" %\n");
+ 		converged=false;
+ 	}
+@@ -63,7 +70,7 @@
+ 
+ 		//compute norm(du)/norm(u)
+ 		duf=old_uf->Duplicate(); old_uf->Copy(duf); duf->AYPX(uf,-1.0);
+-		ndu=duf->Norm(NORM_TWO); nu=old_uf->Norm(NORM_TWO);
++		ndu=duf->Norm(NORM_TWO); nu=old_uf->Norm(NORM_TWO)+1.e-14;
+ 
+ 		if (xIsNan<IssmDouble>(ndu) || xIsNan<IssmDouble>(nu)) _error_("convergence criterion is NaN!");
+ 
+@@ -75,7 +82,7 @@
+ 			if((ndu/nu)<eps_rel){
+ 				if(VerboseConvergence()) _printf0_(setw(50) << left << "   Convergence criterion: norm(du)/norm(u)" << ndu/nu*100 << " < " << eps_rel*100 << " %\n");
+ 			}
+-			else{ 
++			else{
+ 				if(VerboseConvergence()) _printf0_(setw(50) << left << "   Convergence criterion: norm(du)/norm(u)" << ndu/nu*100 << " > " << eps_rel*100 << " %\n");
+ 				converged=false;
+ 			}
Index: /issm/oecreview/Archive/27032-27229/ISSM-27176-27177.diff
===================================================================
--- /issm/oecreview/Archive/27032-27229/ISSM-27176-27177.diff	(revision 27230)
+++ /issm/oecreview/Archive/27032-27229/ISSM-27176-27177.diff	(revision 27230)
@@ -0,0 +1,653 @@
+Index: ../trunk-jpl/src/c/analyses/HydrologyDCEfficientAnalysis.cpp
+===================================================================
+--- ../trunk-jpl/src/c/analyses/HydrologyDCEfficientAnalysis.cpp	(revision 27176)
++++ ../trunk-jpl/src/c/analyses/HydrologyDCEfficientAnalysis.cpp	(revision 27177)
+@@ -10,10 +10,15 @@
+ }/*}}}*/
+ void HydrologyDCEfficientAnalysis::UpdateParameters(Parameters* parameters,IoModel* iomodel,int solution_enum,int analysis_enum){/*{{{*/
+ 
++	bool        isefficientlayer;
+ 	int         hydrology_model;
+ 	int         eplflip_lock;
+ 	int         eplthickcomp;
+-	bool        isefficientlayer;
++	IssmDouble  eplinitthick;
++	IssmDouble  eplcolapsethick;
++	IssmDouble  eplmaxthick;
++	IssmDouble  eplcond;
++
+ 	/*retrieve some parameters: */
+ 	iomodel->FindConstant(&hydrology_model,"md.hydrology.model");
+ 
+@@ -26,12 +31,22 @@
+ 	/*If not return*/
+ 	if(!isefficientlayer) return;
+ 
+-	/*If yes, initialize a flip flop counter*/
++	/*If yes, get the parameters*/
+ 	iomodel->FetchData(&eplflip_lock,"md.hydrology.eplflip_lock");
++	iomodel->FetchData(&eplthickcomp,"md.hydrology.epl_thick_comp");
++
+ 	parameters->AddObject(new IntParam(HydrologydcEplflipLockEnum,eplflip_lock));
++	parameters->AddObject(new IntParam(HydrologydcEplThickCompEnum,eplthickcomp));
+ 
+-	iomodel->FetchData(&eplthickcomp,"md.hydrology.epl_thick_comp");
+-	parameters->AddObject(new IntParam(HydrologydcEplThickCompEnum,eplthickcomp));
++	iomodel->FetchData(&eplinitthick,"md.hydrology.epl_initial_thickness");
++	iomodel->FetchData(&eplcolapsethick,"md.hydrology.epl_colapse_thickness");
++	iomodel->FetchData(&eplmaxthick,"md.hydrology.epl_max_thickness");
++	iomodel->FetchData(&eplcond,"md.hydrology.epl_conductivity");
++	parameters->AddObject(new DoubleParam(HydrologydcEplInitialThicknessEnum,eplinitthick));
++	parameters->AddObject(new DoubleParam(HydrologydcEplColapseThicknessEnum,eplcolapsethick));
++	parameters->AddObject(new DoubleParam(HydrologydcEplMaxThicknessEnum,eplmaxthick));
++	parameters->AddObject(new DoubleParam(HydrologydcEplConductivityEnum,eplcond));
++
+ }/*}}}*/
+ void HydrologyDCEfficientAnalysis::UpdateElements(Elements* elements,Inputs* inputs,IoModel* iomodel,int analysis_counter,int analysis_type){/*{{{*/
+ 
+Index: ../trunk-jpl/src/c/analyses/HydrologyDCInefficientAnalysis.cpp
+===================================================================
+--- ../trunk-jpl/src/c/analyses/HydrologyDCInefficientAnalysis.cpp	(revision 27176)
++++ ../trunk-jpl/src/c/analyses/HydrologyDCInefficientAnalysis.cpp	(revision 27177)
+@@ -22,10 +22,13 @@
+ 	int         averaging_method;
+ 	int         numoutputs;
+ 	bool        isefficientlayer;
++	bool        sliceadapt;
+ 	IssmDouble  penalty_factor;
+ 	IssmDouble  rel_tol;
+ 	IssmDouble  leakagefactor;
+ 	IssmDouble  sedimentlimit;
++	IssmDouble  sed_poro;
++	IssmDouble  sed_thick;
+ 	char**      requestedoutputs = NULL;
+ 
+ 	/*retrieve some parameters: */
+@@ -42,6 +45,7 @@
+ 	iomodel->FetchData(&penalty_lock,       "md.hydrology.penalty_lock" );
+ 	iomodel->FetchData(&hydro_maxiter,      "md.hydrology.max_iter" );
+ 	iomodel->FetchData(&hydroslices,        "md.hydrology.steps_per_step");
++	iomodel->FetchData(&sliceadapt,         "md.hydrology.step_adapt");
+ 	iomodel->FetchData(&averaging_method,   "md.hydrology.averaging");
+ 	iomodel->FetchData(&isefficientlayer,   "md.hydrology.isefficientlayer");
+ 	iomodel->FetchData(&penalty_factor,     "md.hydrology.penalty_factor" );
+@@ -54,11 +58,18 @@
+ 	parameters->AddObject(new IntParam(HydrologydcPenaltyLockEnum,penalty_lock));
+ 	parameters->AddObject(new IntParam(HydrologydcMaxIterEnum,hydro_maxiter));
+ 	parameters->AddObject(new IntParam(HydrologyStepsPerStepEnum,hydroslices));
++	parameters->AddObject(new BoolParam(HydrologyStepAdaptEnum,sliceadapt));
+ 	parameters->AddObject(new IntParam(HydrologyAveragingEnum,averaging_method));
+-
+ 	parameters->AddObject(new BoolParam(HydrologydcIsefficientlayerEnum,isefficientlayer));
+ 	parameters->AddObject(new DoubleParam(HydrologydcPenaltyFactorEnum,penalty_factor));
+ 	parameters->AddObject(new DoubleParam(HydrologydcRelTolEnum,rel_tol));
++
++	iomodel->FetchData(&sed_poro,  "md.hydrology.sediment_porosity" );
++	iomodel->FetchData(&sed_thick, "md.hydrology.sediment_thickness" );
++
++	parameters->AddObject(new DoubleParam(HydrologydcSedimentPorosityEnum,sed_poro));
++	parameters->AddObject(new DoubleParam(HydrologydcSedimentThicknessEnum,sed_thick));
++
+ 	if(transfer_flag==1){
+ 		iomodel->FetchData(&leakagefactor,"md.hydrology.leakage_factor");
+ 		parameters->AddObject(new DoubleParam(HydrologydcLeakageFactorEnum,leakagefactor));
+@@ -109,6 +120,8 @@
+ 	iomodel->FetchDataToInput(inputs,elements,"md.initialization.sediment_head",SedimentHeadSubstepEnum);
+ 	iomodel->FetchDataToInput(inputs,elements,"md.hydrology.sediment_transmitivity",HydrologydcSedimentTransmitivityEnum);
+ 	iomodel->FetchDataToInput(inputs,elements,"md.hydrology.mask_thawed_node",HydrologydcMaskThawedNodeEnum);
++
++
+ 	if(iomodel->domaintype!=Domain2DhorizontalEnum){
+ 		iomodel->FetchDataToInput(inputs,elements,"md.mesh.vertexonbase",MeshVertexonbaseEnum);
+ 		iomodel->FetchDataToInput(inputs,elements,"md.mesh.vertexonsurface",MeshVertexonsurfaceEnum);
+Index: ../trunk-jpl/src/c/solutionsequences/solutionsequence_hydro_nonlinear.cpp
+===================================================================
+--- ../trunk-jpl/src/c/solutionsequences/solutionsequence_hydro_nonlinear.cpp	(revision 27176)
++++ ../trunk-jpl/src/c/solutionsequences/solutionsequence_hydro_nonlinear.cpp	(revision 27177)
+@@ -9,22 +9,22 @@
+ /*FIXME, dirty hack to get the solutionsequence linear needed to compute the slopes*/
+ #include "../solutionsequences/solutionsequences.h"
+ 
+-void solutionsequence_hydro_nonlinear(FemModel* femmodel){
++void solutionsequence_hydro_nonlinear(FemModel* femmodel, bool* pconv_fail){
+ 	/*solution : */
+ 	Vector<IssmDouble>* ug_sed=NULL;
+ 	Vector<IssmDouble>* uf_sed=NULL;
+ 	Vector<IssmDouble>* uf_sed_sub_iter=NULL;
+ 	Vector<IssmDouble>* ug_sed_main_iter=NULL;
++	Vector<IssmDouble>* ug_sed_init=NULL;
+ 
+ 	Vector<IssmDouble>* ug_epl=NULL;
+ 	Vector<IssmDouble>* uf_epl=NULL;
+ 	Vector<IssmDouble>* uf_epl_sub_iter=NULL;
+-	Vector<IssmDouble>* ug_epl_sub_iter=NULL;
+ 	Vector<IssmDouble>* ug_epl_main_iter=NULL;
++	Vector<IssmDouble>* ug_epl_init=NULL;
+ 
+ 	Vector<IssmDouble>* ys=NULL;
+ 	Vector<IssmDouble>* dug=NULL;
+-	Vector<IssmDouble>* duf=NULL;
+ 
+ 	Matrix<IssmDouble>* Kff=NULL;
+ 	Matrix<IssmDouble>* Kfs=NULL;
+@@ -37,12 +37,14 @@
+ 
+ 	bool       sedconverged,eplconverged,hydroconverged;
+ 	bool       isefficientlayer;
++	bool       sliceadapt;
+ 	int        constraints_converged;
+ 	int        num_unstable_constraints;
+ 	int        sedcount,eplcount,hydrocount;
+ 	int        hydro_maxiter;
++	int        epl_fsize,epl_sub_fsize,epl_main_fsize;
+ 	IssmDouble sediment_kmax;
+-	IssmDouble eps_hyd;
++	IssmDouble eps_res,eps_rel,eps_abs;
+ 	IssmDouble ndu_sed,nu_sed;
+ 	IssmDouble ndu_epl,nu_epl;
+ 	IssmDouble ThickCount,L2Count;
+@@ -49,8 +51,11 @@
+ 	/*Recover parameters: */
+ 	femmodel->SetCurrentConfiguration(HydrologyDCInefficientAnalysisEnum);
+ 	femmodel->parameters->FindParam(&isefficientlayer,HydrologydcIsefficientlayerEnum);
++	femmodel->parameters->FindParam(&sliceadapt,HydrologyStepAdaptEnum);
+ 	femmodel->parameters->FindParam(&hydro_maxiter,HydrologydcMaxIterEnum);
+-	femmodel->parameters->FindParam(&eps_hyd,HydrologydcRelTolEnum);
++	femmodel->parameters->FindParam(&eps_res,StressbalanceRestolEnum);
++	femmodel->parameters->FindParam(&eps_rel,HydrologydcRelTolEnum);
++	femmodel->parameters->FindParam(&eps_abs,StressbalanceAbstolEnum);
+ 	hydrocount=1;
+ 	hydroconverged=false;
+ 	/*We don't need the outer loop if only one layer is used*/
+@@ -58,23 +63,27 @@
+ 
+ 	/*{{{*//*Retrieve inputs as the initial state for the non linear iteration*/
+ 	GetBasalSolutionFromInputsx(&ug_sed,femmodel);
++	/*Initialize the IDS element mask to exclude frozen nodes*/
++	inefanalysis->ElementizeIdsMask(femmodel);
++
+ 	Reducevectorgtofx(&uf_sed, ug_sed, femmodel->nodes,femmodel->parameters);
++	ug_sed_init=ug_sed->Duplicate();
++	ug_sed->Copy(ug_sed_init);
++
+ 	if(isefficientlayer) {
+ 		inefanalysis = new HydrologyDCInefficientAnalysis();
+ 		effanalysis = new HydrologyDCEfficientAnalysis();
+ 		femmodel->SetCurrentConfiguration(HydrologyDCEfficientAnalysisEnum);
+ 		GetBasalSolutionFromInputsx(&ug_epl,femmodel);
+-		/*Initialize the EPL element mask*/
+ 		inefanalysis->ElementizeEplMask(femmodel);
+ 		effanalysis->InitZigZagCounter(femmodel);
+-		/*Initialize the IDS element mask*/
+-		femmodel->SetCurrentConfiguration(HydrologyDCInefficientAnalysisEnum);
+-		inefanalysis->ElementizeIdsMask(femmodel);
++		Reducevectorgtofx(&uf_epl, ug_epl, femmodel->nodes,femmodel->parameters);
++		ug_epl_init=ug_epl->Duplicate();
++		ug_epl->Copy(ug_epl_init);
+ 	}
+ 	/*}}}*/
+ 	/*The real computation starts here, outermost loop is on the two layer system*/
+ 	for(;;){
+-
+ 		sedcount=1;
+ 		eplcount=1;
+ 
+@@ -104,6 +113,7 @@
+ 			for(;;){
+ 				/*{{{*//*Core of the computation*/
+ 				if(VerboseSolution()) _printf0_("Building Sediment Matrix...\n");
++
+ 				femmodel->profiler->Start(SEDMatrix);
+ 				SystemMatricesx(&Kff,&Kfs,&pf,&df,&sediment_kmax,femmodel);
+ 				CreateNodalConstraintsx(&ys,femmodel->nodes);
+@@ -113,9 +123,8 @@
+ 
+ 				femmodel->profiler->Start(SOLVER);
+ 				Solverx(&uf_sed,Kff,pf,uf_sed_sub_iter,df,femmodel->parameters);
++				delete df;
+ 				femmodel->profiler->Stop(SOLVER);
+-
+-				delete Kff; delete pf; delete df;
+ 				delete ug_sed;
+ 				femmodel->profiler->Start(SEDUpdate);
+ 				Mergesolutionfromftogx(&ug_sed,uf_sed,ys,femmodel->nodes,femmodel->parameters); delete ys;
+@@ -124,10 +133,20 @@
+ 				femmodel->profiler->Stop(SEDUpdate);
+ 				/*}}}*/
+ 				if (!sedconverged){
++					/*First check that all the penalizations are applied*/
+ 					if(VerboseConvergence()) _printf0_("   # Sediment unstable constraints = " << num_unstable_constraints << "\n");
+-					if(num_unstable_constraints==0) sedconverged = true;
++					if(num_unstable_constraints==0) {
++						sedconverged = true;
++					}
++					else{//clean up
++						delete Kff;
++						delete pf;
++					}
+ 					if (sedcount>=hydro_maxiter){
++						delete ug_sed;delete uf_sed;delete inefanalysis; delete ug_sed_main_iter;
++						if(isefficientlayer)delete ug_epl;delete uf_epl;delete effanalysis; delete ug_epl_main_iter;
+ 						_error_("   maximum number of Sediment iterations (" << hydro_maxiter << ") exceeded");
++
+ 					}
+ 				}
+ 				/*Add an iteration and get out of the loop if the penalisation is converged*/
+@@ -134,25 +153,11 @@
+ 				sedcount++;
+ 				if(sedconverged)break;
+ 			}
+-
+ 			/*}}}*//*End of the sediment penalization loop*/
+ 			sedconverged=false;
+-
+ 			/*Checking convergence on the value of the sediment head*/
+-			duf=uf_sed_sub_iter->Duplicate();_assert_(duf);
+-			uf_sed_sub_iter->Copy(duf);
+-			duf->AYPX(uf_sed,-1.0);
+-			ndu_sed=duf->Norm(NORM_TWO);
+-			delete duf;
+-			nu_sed=uf_sed_sub_iter->Norm(NORM_TWO);
+-			if (xIsNan<IssmDouble>(ndu_sed) || xIsNan<IssmDouble>(nu_sed)) _error_("convergence criterion is NaN!");
+-			if (ndu_sed==0.0 && nu_sed==0.0) nu_sed=1.0e-6; /*Hacking the case where the layer is empty*/
+-			if(VerboseConvergence()) _printf0_(setw(50) << left << "   Inner Sediment Convergence criterion:" << ndu_sed/nu_sed*100 << "%, aiming lower than " << eps_hyd*10*100 << " %\n");
+-			if((ndu_sed/nu_sed)<eps_hyd*10.){
+-				if(VerboseConvergence()) _printf0_("   # Inner sediment convergence achieve \n");
+-				sedconverged=true;
+-			}
+-			delete uf_sed_sub_iter;
++			convergence(&sedconverged,Kff,pf,uf_sed,uf_sed_sub_iter,eps_res,eps_rel,eps_abs);
++			delete Kff; delete pf;delete uf_sed_sub_iter;
+ 			if(sedconverged){
+ 				femmodel->parameters->SetParam(sediment_kmax,HydrologySedimentKmaxEnum);
+ 				InputUpdateFromConstantx(femmodel,sedconverged,ConvergedEnum);
+@@ -175,8 +180,6 @@
+ 
+ 			for(;;){
+ 				eplconverged=false;
+-				ug_epl_sub_iter=ug_epl->Duplicate();_assert_(ug_epl_sub_iter);
+-				ug_epl->Copy(ug_epl_sub_iter);
+ 				/*{{{*//*Retrieve the EPL head slopes and compute EPL Thickness*/
+ 				if(VerboseSolution()) _printf0_("computing EPL Head slope...\n");
+ 				femmodel->profiler->Start(EPLMasking);
+@@ -194,47 +197,54 @@
+ 				/*}}}*/
+ 				femmodel->profiler->Stop(EPLMasking);
+ 				if(VerboseSolution()) _printf0_("Building EPL Matrix...\n");
++				uf_epl_sub_iter=uf_epl->Duplicate();_assert_(uf_epl_sub_iter);
++				uf_epl->Copy(uf_epl_sub_iter);
++				uf_epl->GetSize(&epl_sub_fsize);
+ 				femmodel->profiler->Start(EPLMatrices);
+ 				SystemMatricesx(&Kff,&Kfs,&pf,&df,NULL,femmodel);
+ 				CreateNodalConstraintsx(&ys,femmodel->nodes);
+-				Reduceloadx(pf,Kfs,ys); delete Kfs;
+-				delete uf_epl;
++				Reduceloadx(pf,Kfs,ys);
++				delete Kfs;delete uf_epl;
+ 				femmodel->profiler->Stop(EPLMatrices);
+ 				femmodel->profiler->Start(SOLVER);
+ 				Solverx(&uf_epl,Kff,pf,uf_epl_sub_iter,df,femmodel->parameters);
+ 				femmodel->profiler->Stop(SOLVER);
+-
+-				delete Kff; delete pf; delete df;
+-				delete uf_epl_sub_iter;
+-				uf_epl_sub_iter=uf_epl->Duplicate();_assert_(uf_epl_sub_iter);
+-				uf_epl->Copy(uf_epl_sub_iter);
+-				delete ug_epl;
++				delete df;delete ug_epl;
+ 				femmodel->profiler->Start(EPLUpdate);
+ 				Mergesolutionfromftogx(&ug_epl,uf_epl,ys,femmodel->nodes,femmodel->parameters); delete ys;
+ 				InputUpdateFromSolutionx(femmodel,ug_epl);
+ 				ConstraintsStatex(&constraints_converged,&num_unstable_constraints,femmodel);
+ 				femmodel->profiler->Stop(EPLUpdate);
++				uf_epl->GetSize(&epl_fsize);
++				if(epl_fsize-epl_sub_fsize==0){
++					convergence(&eplconverged,Kff,pf,uf_epl,uf_epl_sub_iter,eps_res,eps_rel,eps_abs);
++					delete Kff; delete pf;
++					/* if (ndu_epl==0.0 && nu_epl==0.0) nu_epl=1.0e-6; /\*Hacking the case where the EPL is used but empty*\/ */
++				}
++				else{
++					delete Kff; delete pf;
++				}
+ 
+-				dug=ug_epl_sub_iter->Duplicate();_assert_(dug);
+-				ug_epl_sub_iter->Copy(dug);
+-				dug->AYPX(ug_epl,-1.0);
+-				ndu_epl=dug->Norm(NORM_TWO);
+-				delete dug;
+-				nu_epl=ug_epl_sub_iter->Norm(NORM_TWO);
+-				if (xIsNan<IssmDouble>(ndu_epl) || xIsNan<IssmDouble>(nu_epl)) _error_("convergence criterion is NaN!");
+-				if (ndu_epl==0.0 && nu_epl==0.0) nu_epl=1.0e-6; /*Hacking the case where the EPL is used but empty*/
+-				if(VerboseConvergence()) _printf0_(setw(50) << left << "   Inner EPL Convergence criterion:" << ndu_epl/nu_epl*100 << "%, aiming lower than " << eps_hyd*10*100 << " %\n");
+-				if((ndu_epl/nu_epl)<eps_hyd*10.) eplconverged=true;
+-				if (eplcount>=hydro_maxiter){
++				if (eplcount>=hydro_maxiter*9/10 && sliceadapt && !eplconverged) {
++					if(VerboseSolution()) _printf0_("epl did not converged after "<<eplconverged<<" iteration, we refine the steping\n");
++					*pconv_fail = true;
++					InputUpdateFromSolutionx(femmodel,ug_epl_init);
++					delete ug_epl_init;
++					femmodel->SetCurrentConfiguration(HydrologyDCInefficientAnalysisEnum);
++					InputUpdateFromSolutionx(femmodel,ug_sed_init);
++					delete ug_sed_init;
++					break;
++				}
++				else if (eplcount>=hydro_maxiter){
++					delete ug_sed;delete uf_sed;delete inefanalysis;delete ug_sed_main_iter;
++					delete ug_epl;delete uf_epl;delete effanalysis;delete ug_epl_main_iter;
+ 					_error_("   maximum number of EPL iterations (" << hydro_maxiter << ") exceeded");
++
+ 				}
+ 				eplcount++;
+-
+-				delete ug_epl_sub_iter;
++				delete uf_epl_sub_iter;
+ 				if(eplconverged){
+ 					if(VerboseSolution()) _printf0_("eplconverged...\n");
+-					InputUpdateFromConstantx(femmodel,eplconverged,ConvergedEnum);
+-					InputUpdateFromSolutionx(femmodel,ug_epl);
+ 					effanalysis->ResetCounter(femmodel);
+ 					break;
+ 				}
+@@ -241,6 +251,9 @@
+ 			}
+ 		}
+ 		femmodel->profiler->Stop(EPLLOOP);
++		if(*pconv_fail){
++			break;
++		}
+ 		/*}}}*//*End of the global EPL loop*/
+ 		/*{{{*//*Now dealing with the convergence of the whole system*/
+ 		if(!hydroconverged){
+@@ -263,20 +276,34 @@
+ 			delete ug_epl_main_iter;
+ 			if (xIsNan<IssmDouble>(ndu_epl) || xIsNan<IssmDouble>(nu_epl)) _error_("EPL convergence criterion is NaN!");
+ 			if (ndu_epl==0.0 && nu_epl==0.0) nu_epl=1.0e-6; /*Hacking the case where the EPL is used but empty*/
+-			if (!xIsNan<IssmDouble>(eps_hyd)){
+-				if ((ndu_epl/nu_epl)<eps_hyd && (ndu_sed/nu_sed)<(eps_hyd)){
++			if (!xIsNan<IssmDouble>(eps_rel)){
++				if ((ndu_epl/nu_epl)<eps_rel && (ndu_sed/nu_sed)<(eps_rel)){
+ 					if (VerboseConvergence()) _printf0_(setw(50) << left << "   Converged after, " << hydrocount << " iterations \n");
+ 					hydroconverged=true;
+ 				}
+ 				else{
+-					if(VerboseConvergence()) _printf0_(setw(50) << left << "   Sediment Convergence criterion:" << ndu_sed/nu_sed*100 << "%, aiming lower than " << eps_hyd*100 << " %\n");
+-					if(VerboseConvergence()) _printf0_(setw(50) << left << "   EPL Convergence criterion:" << ndu_epl/nu_epl*100 << "%, aiming lower than " << eps_hyd*100 << " %\n");
++					if(VerboseConvergence()) _printf0_(setw(50) << left << "   for iteration:" << hydrocount << " \n");
++					if(VerboseConvergence()) _printf0_(setw(50) << left << "   Sediment Convergence criterion:" << ndu_sed/nu_sed*100 << "%, aiming lower than " << eps_rel*100 << " %\n");
++					if(VerboseConvergence()) _printf0_(setw(50) << left << "   EPL Convergence criterion:" << ndu_epl/nu_epl*100 << "%, aiming lower than " << eps_rel*100 << " %\n");
+ 					hydroconverged=false;
+ 				}
+ 			}
+ 			else _printf0_(setw(50) << left << "   Convergence criterion:" << ndu_sed/nu_sed*100 << " %\n");
++
++			if (hydrocount>=hydro_maxiter*9/10  && sliceadapt && !hydroconverged) {
++				if(VerboseSolution()) _printf0_("hydrology main loop  did not converged after "<<hydrocount<<" iteration, we refine the steping\n");
++				*pconv_fail = true;
++				InputUpdateFromSolutionx(femmodel,ug_epl_init);
++				delete ug_epl_init;
++				femmodel->SetCurrentConfiguration(HydrologyDCInefficientAnalysisEnum);
++				InputUpdateFromSolutionx(femmodel,ug_sed_init);
++				delete ug_sed_init;
++				break;
++			}
+ 			if (hydrocount>=hydro_maxiter){
+ 				_error_("   maximum number for hydrological global iterations (" << hydro_maxiter << ") exceeded");
++				delete ug_sed;delete uf_sed;delete effanalysis;
++				delete ug_epl;	delete uf_epl;	delete inefanalysis;
+ 			}
+ 		}
+ 		hydrocount++;
+@@ -283,15 +310,15 @@
+ 		if(hydroconverged)break;
+ 	}
+ 	/*}}}*/
+-	if(isefficientlayer)InputUpdateFromSolutionx(femmodel,ug_epl);
+-	femmodel->SetCurrentConfiguration(HydrologyDCInefficientAnalysisEnum);
+-	InputUpdateFromSolutionx(femmodel,ug_sed);
++	/*To deal with adaptative stepping we only save results if we are actually converged*/
++	if(hydroconverged){
++		if(isefficientlayer){
++			delete ug_epl_init;
++		}
++		delete ug_sed_init;
++	}
+ 	/*Free resources: */
+-	delete ug_epl;
+-	delete ug_sed;
+-	delete uf_sed;
+-	delete uf_epl;
+-	delete uf_epl_sub_iter;
+-	delete inefanalysis;
+-	delete effanalysis;
++	delete ug_epl;delete ug_sed;
++	delete uf_sed;	delete uf_epl;
++	delete inefanalysis;	delete effanalysis;
+ }
+Index: ../trunk-jpl/src/m/classes/hydrologydc.m
+===================================================================
+--- ../trunk-jpl/src/m/classes/hydrologydc.m	(revision 27176)
++++ ../trunk-jpl/src/m/classes/hydrologydc.m	(revision 27177)
+@@ -13,6 +13,7 @@
+ 		rel_tol                  = 0;
+ 		max_iter                 = 0;
+ 		steps_per_step           = 0;
++		step_adapt               = 0;
+ 		averaging                = 0;
+ 		sedimentlimit_flag       = 0;
+ 		sedimentlimit            = 0;
+@@ -65,7 +66,7 @@
+ 			if self.isefficientlayer,
+ 				list=[list,{'EplHead','HydrologydcMaskEplactiveNode','HydrologydcMaskEplactiveElt','EplHeadSlopeX','EplHeadSlopeY','HydrologydcEplThickness'}];
+ 			end
+-			if self.steps_per_step>1,
++			if self.steps_per_step>1 | self.step_adapt,
+ 				list = [list,'EffectivePressureSubstep','SedimentHeadSubstep'];
+ 				if self.isefficientlayer,
+ 					list = [list,'EplHeadSubstep','HydrologydcEplThicknessSubstep'];
+@@ -89,6 +90,7 @@
+ 			self.rel_tol                  = 1.0e-06;
+ 			self.max_iter                 = 100;
+ 			self.steps_per_step           = 1;
++			self.step_adapt               = 0;
+ 			self.averaging                = 0;
+ 			self.sedimentlimit_flag       = 0;
+ 			self.sedimentlimit            = 0;
+@@ -125,6 +127,7 @@
+ 			md = checkfield(md,'fieldname','hydrology.rel_tol','>',0,'numel',1);
+ 			md = checkfield(md,'fieldname','hydrology.max_iter','>',0,'numel',1);
+ 			md = checkfield(md,'fieldname','hydrology.steps_per_step','>',0,'numel',1);
++			md = checkfield(md,'fieldname','hydrology.step_adapt','numel',1,'values',[0 1]);
+ 			md = checkfield(md,'fieldname','hydrology.averaging','numel',[1],'values',[0 1 2]);
+ 			md = checkfield(md,'fieldname','hydrology.sedimentlimit_flag','numel',[1],'values',[0 1 2 3]);
+ 			md = checkfield(md,'fieldname','hydrology.transfer_flag','numel',[1],'values',[0 1]);
+@@ -171,6 +174,7 @@
+ 			fielddisplay(self,'rel_tol','tolerance of the nonlinear iteration for the transfer between layers [dimensionless]');
+ 			fielddisplay(self,'max_iter','maximum number of nonlinear iteration');
+ 			fielddisplay(self,'steps_per_step','number of hydrology steps per timestep');
++			fielddisplay(self,'step_adapt', 'adaptative sub stepping  [1: true 0: false] default is 0');
+ 			fielddisplay(self, 'averaging', 'averaging methods from short to long steps');
+ 			disp(sprintf('%55s  0: Arithmetic (default)'));
+ 			disp(sprintf('%55s  0: Geometric'));
+@@ -225,6 +229,7 @@
+ 			WriteData(fid,prefix,'object',self,'fieldname','rel_tol','format','Double');
+ 			WriteData(fid,prefix,'object',self,'fieldname','max_iter','format','Integer');
+ 			WriteData(fid,prefix,'object',self,'fieldname','steps_per_step','format','Integer');
++			WriteData(fid,prefix,'object',self,'fieldname','step_adapt','format','Boolean');
+ 			WriteData(fid,prefix,'object',self,'fieldname','averaging','format','Integer');
+ 			WriteData(fid,prefix,'object',self,'fieldname','sedimentlimit_flag','format','Integer');
+ 			WriteData(fid,prefix,'object',self,'fieldname','transfer_flag','format','Integer');
+Index: ../trunk-jpl/src/m/classes/hydrologydc.py
+===================================================================
+--- ../trunk-jpl/src/m/classes/hydrologydc.py	(revision 27176)
++++ ../trunk-jpl/src/m/classes/hydrologydc.py	(revision 27177)
+@@ -20,6 +20,7 @@
+         self.rel_tol = 0
+         self.max_iter = 0
+         self.steps_per_step = 0
++        self.step_adapt = 0
+         self.averaging = 0
+         self.sedimentlimit_flag = 0
+         self.sedimentlimit = 0
+@@ -52,7 +53,7 @@
+ 
+     def __repr__(self):  # {{{
+         # TODO:
+-        # - Convert all formatting to calls to <string>.format (see any 
++        # - Convert all formatting to calls to <string>.format (see any
+         #   already converted <class>.__repr__ method for examples)
+         #
+         string = '   hydrology Dual Porous Continuum Equivalent parameters:'
+@@ -64,6 +65,7 @@
+         string = "%s\n%s" % (string, fielddisplay(self, 'rel_tol', 'tolerance of the nonlinear iteration for the transfer between layers [dimensionless]'))
+         string = "%s\n%s" % (string, fielddisplay(self, 'max_iter', 'maximum number of nonlinear iteration'))
+         string = "%s\n%s" % (string, fielddisplay(self, 'steps_per_step', 'number of hydrology steps per time step'))
++        string = "%s\n%s" % (string, fielddisplay(self, 'step_adapt', 'adaptative sub stepping  [1: true 0: false] default is 0'))
+         string = "%s\n%s" % (string, fielddisplay(self, 'averaging', 'averaging methods from short to long steps'))
+         string = "%s\n\t\t%s" % (string, '0: Arithmetic (default)')
+         string = "%s\n\t\t%s" % (string, '1: Geometric')
+@@ -133,6 +135,7 @@
+         self.rel_tol = 1.0e-06
+         self.max_iter = 100
+         self.steps_per_step = 1
++        self.step_adapt = 0
+         self.averaging = 0
+         self.sedimentlimit_flag = 0
+         self.sedimentlimit = 0
+@@ -161,7 +164,7 @@
+         list = ['SedimentHead', 'SedimentHeadResidual', 'EffectivePressure']
+         if self.isefficientlayer == 1:
+             list.extend(['EplHead', 'HydrologydcMaskEplactiveNode', 'HydrologydcMaskEplactiveElt', 'EplHeadSlopeX', 'EplHeadSlopeY', 'HydrologydcEplThickness'])
+-        if self.steps_per_step > 1:
++        if self.steps_per_step > 1 or self.step_adapt:
+             list.extend(['EffectivePressureSubstep', 'SedimentHeadSubstep'])
+             if self.isefficientlayer == 1:
+                 list.extend(['EplHeadSubstep', 'HydrologydcEplThicknessSubstep'])
+@@ -189,6 +192,7 @@
+         md = checkfield(md, 'fieldname', 'hydrology.rel_tol', '>', 0., 'numel', [1])
+         md = checkfield(md, 'fieldname', 'hydrology.max_iter', '>', 0., 'numel', [1])
+         md = checkfield(md, 'fieldname', 'hydrology.steps_per_step', '>=', 1, 'numel', [1])
++        md = checkfield(md, 'fieldname', 'hydrology.step_adapt', 'numel', [1], 'values', [0, 1])
+         md = checkfield(md, 'fieldname', 'hydrology.averaging', 'numel', [1], 'values', [0, 1, 2])
+         md = checkfield(md, 'fieldname', 'hydrology.sedimentlimit_flag', 'numel', [1], 'values', [0, 1, 2, 3])
+         md = checkfield(md, 'fieldname', 'hydrology.transfer_flag', 'numel', [1], 'values', [0, 1])
+@@ -232,6 +236,7 @@
+         WriteData(fid, prefix, 'object', self, 'fieldname', 'rel_tol', 'format', 'Double')
+         WriteData(fid, prefix, 'object', self, 'fieldname', 'max_iter', 'format', 'Integer')
+         WriteData(fid, prefix, 'object', self, 'fieldname', 'steps_per_step', 'format', 'Integer')
++        WriteData(fid, prefix, 'object', self, 'fieldname', 'step_adapt', 'format', 'Boolean')
+         WriteData(fid, prefix, 'object', self, 'fieldname', 'averaging', 'format', 'Integer')
+         WriteData(fid, prefix, 'object', self, 'fieldname', 'sedimentlimit_flag', 'format', 'Integer')
+         WriteData(fid, prefix, 'object', self, 'fieldname', 'transfer_flag', 'format', 'Integer')
+Index: ../trunk-jpl/src/c/cores/hydrology_core.cpp
+===================================================================
+--- ../trunk-jpl/src/c/cores/hydrology_core.cpp	(revision 27176)
++++ ../trunk-jpl/src/c/cores/hydrology_core.cpp	(revision 27177)
+@@ -56,11 +56,11 @@
+ 		/*save current tws  before updating:*/
+ 		InputDuplicatex(femmodel,WatercolumnEnum,WaterColumnOldEnum);
+ 
+-		/*grab tws from the hydrology.spcwatercolumn field input and update 
++		/*grab tws from the hydrology.spcwatercolumn field input and update
+ 		 * the solution with it:*/
+ 		Vector<IssmDouble>*  ug  = NULL;
+ 		GetVectorFromInputsx(&ug,femmodel,HydrologyTwsSpcEnum,VertexPIdEnum);
+-		InputUpdateFromSolutionx(femmodel,ug); 
++		InputUpdateFromSolutionx(femmodel,ug);
+ 
+ 		/*solid earth considerations:*/
+ 		SolidEarthWaterUpdates(femmodel);
+@@ -82,15 +82,19 @@
+ 
+ 		if(ThawedNodes>0){
+ 			/*check if we need sub steps*/
+-			int        dtslices;
+-			femmodel->parameters->FindParam(&dtslices,HydrologyStepsPerStepEnum);
++			int  dtslices;
++			bool sliceadapt;
++         bool conv_fail=false;
++         femmodel->parameters->FindParam(&dtslices,HydrologyStepsPerStepEnum);
++         femmodel->parameters->FindParam(&sliceadapt,HydrologyStepAdaptEnum);
+ 
+-			if(dtslices>1){
+-				int        substep, numaveragedinput, hydro_averaging;
+-				IssmDouble global_time, subtime, yts;
++			if(dtslices>1 || sliceadapt){
++				int        step, substep, numaveragedinput, hydro_averaging, remainingslices;
++				IssmDouble global_time, subtime, yts, remainingtime, averagetime;
+ 				IssmDouble dt, subdt;
+ 
+             femmodel->parameters->FindParam(&global_time,TimeEnum);
++				femmodel->parameters->FindParam(&step,StepEnum);
+             femmodel->parameters->FindParam(&dt,TimesteppingTimeStepEnum);
+             femmodel->parameters->FindParam(&yts,ConstantsYtsEnum);
+ 				femmodel->parameters->FindParam(&hydro_averaging,HydrologyAveragingEnum);
+@@ -123,9 +127,11 @@
+ 					averagedinput.assign(averagelist,averagelist+2);
+ 				}
+ 				femmodel->InitTransientInputx(&transientinput[0],numaveragedinput);
++				averagetime=0;
+ 				while(substep<dtslices){ //loop on hydro dts
+ 					substep+=1;
+ 					subtime+=subdt;
++					averagetime+=subtime*dt;
+ 					/*Setting substep time as global time*/
+ 					femmodel->parameters->SetParam(subtime,TimeEnum);
+ 					if(VerboseSolution()) _printf0_("sub iteration " << substep << "/" << dtslices << "  time [yr]: " << setprecision(4) << subtime/yts << " (time step: " << subdt/yts << ")\n");
+@@ -137,9 +143,34 @@
+ 						InputDuplicatex(femmodel,HydrologydcEplThicknessSubstepEnum,HydrologydcEplThicknessOldEnum);
+ 					}
+ 					/*Proceed now to heads computations*/
+-					solutionsequence_hydro_nonlinear(femmodel);
+-               /*If we have a sub-timestep we store the substep inputs in a transient input here*/
+-					femmodel->StackTransientInputonBasex(&substepinput[0],&transientinput[0],subtime,numaveragedinput);
++					solutionsequence_hydro_nonlinear(femmodel, &conv_fail);
++					if(conv_fail){
++                  /*convergence failed, we want to go back to the begining of the main step and increase the number of subslices*/
++                  /*First we get teh time and step counter back to the begining of the step that did not converge*/
++                  averagetime-=subtime*subdt;
++                  subtime-=subdt;
++                  substep-=1;
++                  /*compute the number of slice that are remaining and the time left in the timestep*/
++                  remainingslices=dtslices-substep;
++                  remainingtime=global_time-subtime;
++                  /*We double the number of remaining slices and compute their duration*/
++                  dtslices=dtslices-remainingslices+(2*remainingslices);
++                  subdt=remainingtime/(2*remainingslices);
++                  _printf0_("convergence failed for sub-step "<< substep <<" total number of slice is now "<< dtslices <<" for step "<<step<<"\n");
++                  _printf0_("next slice duration is "<< subdt/yts <<" years\n");
++                  conv_fail = false;  //re-initialize the control keyword
++                  if (dtslices>500){
++                     _error_("   We reached (" << dtslices << ") which exceeds the hard limit of 500");
++                  }
++
++                  femmodel->parameters->SetParam(subdt,TimesteppingTimeStepEnum);
++                  femmodel->parameters->SetParam(subtime,TimeEnum);
++
++               }
++               else{
++						/*If we have a sub-timestep we store the substep inputs in a transient input here*/
++						femmodel->StackTransientInputonBasex(&substepinput[0],&transientinput[0],subtime,numaveragedinput);
++					}
+ 				}
+ 				/*averaging the stack*/
+ 				femmodel->AverageTransientInputonBasex(&transientinput[0],&averagedinput[0],global_time-dt,subtime,numaveragedinput,hydro_averaging);
+@@ -146,6 +177,10 @@
+ 				/*And reseting to global time*/
+ 				femmodel->parameters->SetParam(dt,TimesteppingTimeStepEnum);
+ 				femmodel->parameters->SetParam(global_time,TimeEnum);
++				if(save_results){
++               femmodel->results->AddResult(new GenericExternalResult<int>(femmodel->results->Size()+1,HydrologySubstepsEnum,dtslices,step,global_time));
++               femmodel->results->AddResult(new GenericExternalResult<double>(femmodel->results->Size()+1,HydrologySubTimeEnum,(averagetime/dt)/yts,step,global_time));
++            }
+ 			}
+ 			else{
+ 				InputDuplicatex(femmodel,SedimentHeadSubstepEnum,SedimentHeadOldEnum);
+@@ -155,7 +190,7 @@
+ 				}
+ 				/*Proceed now to heads computations*/
+ 				if(VerboseSolution()) _printf0_("   computing water heads\n");
+-				solutionsequence_hydro_nonlinear(femmodel);
++				solutionsequence_hydro_nonlinear(femmodel, &conv_fail);
+ 				/*If no substeps are present we want to duplicate the results for coupling purposes*/
+ 				InputDuplicatex(femmodel,SedimentHeadSubstepEnum,SedimentHeadEnum);
+ 				InputDuplicatex(femmodel,EffectivePressureSubstepEnum,EffectivePressureEnum);
Index: /issm/oecreview/Archive/27032-27229/ISSM-27177-27178.diff
===================================================================
--- /issm/oecreview/Archive/27032-27229/ISSM-27177-27178.diff	(revision 27230)
+++ /issm/oecreview/Archive/27032-27229/ISSM-27177-27178.diff	(revision 27230)
@@ -0,0 +1,290 @@
+Index: ../trunk-jpl/src/m/classes/timestepping.m
+===================================================================
+--- ../trunk-jpl/src/m/classes/timestepping.m	(revision 27177)
++++ ../trunk-jpl/src/m/classes/timestepping.m	(revision 27178)
+@@ -4,11 +4,12 @@
+ %      timestepping=timestepping();
+ 
+ classdef timestepping
+-	properties (SetAccess=public) 
++	properties (SetAccess=public)
+ 		start_time      = 0.;
+ 		final_time      = 0.;
+ 		time_step       = 0.;
+ 		interp_forcing  = 1;
++		average_forcing  = 0;
+ 		cycle_forcing   = 0;
+ 		coupling_time   = 0.;
+ 	end
+@@ -31,6 +32,7 @@
+ 			fielddisplay(self,'final_time',['final time to stop the simulation [' unit ']']);
+ 			fielddisplay(self,'time_step',['length of time steps [' unit ']']);
+ 			fielddisplay(self,'interp_forcing','interpolate in time between requested forcing values? (0 or 1)');
++			fielddisplay(self,'average_forcing','average in time if there are several forcing values between steps? (0 or 1, default is 0)');
+ 			fielddisplay(self,'cycle_forcing','cycle through forcing? (0 or 1)');
+ 			fielddisplay(self,'coupling_time',['length of coupling time step with ocean model [' unit ']']);
+ 
+@@ -45,6 +47,7 @@
+ 
+ 			%should we interpolate forcing between timesteps?
+ 			self.interp_forcing=1;
++			self.average_forcing=0;
+ 			self.cycle_forcing=0;
+ 		end % }}}
+ 		function md = checkconsistency(self,md,solution,analyses) % {{{
+@@ -53,10 +56,11 @@
+ 			md = checkfield(md,'fieldname','timestepping.final_time','numel',[1],'NaN',1,'Inf',1);
+ 			md = checkfield(md,'fieldname','timestepping.time_step','numel',[1],'>=',0,'NaN',1,'Inf',1);
+ 			md = checkfield(md,'fieldname','timestepping.interp_forcing','numel',[1],'values',[0 1]);
++			md = checkfield(md,'fieldname','timestepping.average_forcing','numel',[1],'values',[0 1]);
+ 			md = checkfield(md,'fieldname','timestepping.cycle_forcing','numel',[1],'values',[0 1]);
+ 			if self.final_time-self.start_time<0,
+ 				md = checkmessage(md,'timestepping.final_time should be larger than timestepping.start_time');
+-			end 
++			end
+ 			if strcmp(solution,'TransientSolution'),
+ 				md = checkfield(md,'fieldname','timestepping.time_step','numel',[1],'>',0,'NaN',1,'Inf',1);
+ 			end
+@@ -69,15 +73,17 @@
+ 			WriteData(fid,prefix,'object',self,'fieldname','final_time','format','Double','scale',scale);
+ 			WriteData(fid,prefix,'object',self,'fieldname','time_step','format','Double','scale',scale);
+ 			WriteData(fid,prefix,'object',self,'fieldname','interp_forcing','format','Boolean');
++			WriteData(fid,prefix,'object',self,'fieldname','average_forcing','format','Boolean');
+ 			WriteData(fid,prefix,'object',self,'fieldname','cycle_forcing','format','Boolean');
+ 			WriteData(fid,prefix,'object',self,'fieldname','coupling_time','format','Double','scale',scale);
+ 		end % }}}
+ 		function savemodeljs(self,fid,modelname) % {{{
+-		
++
+ 			writejsdouble(fid,[modelname '.timestepping.start_time'],self.start_time);
+ 			writejsdouble(fid,[modelname '.timestepping.final_time'],self.final_time);
+ 			writejsdouble(fid,[modelname '.timestepping.time_step'],self.time_step);
+ 			writejsdouble(fid,[modelname '.timestepping.interp_forcing'],self.interp_forcing);
++			writejsdouble(fid,[modelname '.timestepping.average_forcing'],self.interp_forcing);
+ 			writejsdouble(fid,[modelname '.timestepping.cycle_forcing'],self.cycle_forcing);
+ 
+ 		end % }}}
+Index: ../trunk-jpl/src/m/classes/timestepping.py
+===================================================================
+--- ../trunk-jpl/src/m/classes/timestepping.py	(revision 27177)
++++ ../trunk-jpl/src/m/classes/timestepping.py	(revision 27178)
+@@ -10,11 +10,12 @@
+         timestepping = timestepping()
+     """
+ 
+-    def __init__(self, *args): #{{{
++    def __init__(self, *args):  #{{{
+         self.start_time = 0
+         self.final_time = 0
+         self.time_step = 0
+         self.interp_forcing = 1
++        self.average_forcing = 0
+         self.cycle_forcing = 0
+         self.coupling_time = 0
+ 
+@@ -23,7 +24,8 @@
+         else:
+             raise RuntimeError('constructor not supported')
+     #}}}
+-    def __repr__(self): #{{{
++
++    def __repr__(self):  #{{{
+         s = '   timestepping parameters:\n'
+         unit = 'yr'
+         s += '{}\n'.format(fielddisplay(self, 'start_time', 'simulation starting time [' + unit + ']'))
+@@ -30,11 +32,13 @@
+         s += '{}\n'.format(fielddisplay(self, 'final_time', 'final time to stop the simulation [' + unit + ']'))
+         s += '{}\n'.format(fielddisplay(self, 'time_step', 'length of time steps [' + unit + ']'))
+         s += '{}\n'.format(fielddisplay(self, 'interp_forcing', 'interpolate in time between requested forcing values? (0 or 1)'))
++        s += '{}\n'.format(fielddisplay(self, 'average_forcing', 'average in time if there are several forcing values between steps? (0 or 1, default is 0)'))
+         s += '{}\n'.format(fielddisplay(self, 'cycle_forcing', 'cycle through forcing? (0 or 1)'))
+         s += '{}\n'.format(fielddisplay(self, 'coupling_time', 'length of coupling time steps with ocean model [' + unit + ']'))
+         return s
+     #}}}
+-    def setdefaultparameters(self): #{{{
++
++    def setdefaultparameters(self):  #{{{
+         # Time between 2 time steps
+         self.time_step = 1 / 2
+ 
+@@ -43,14 +47,18 @@
+ 
+         # Should we interpolate forcing between timesteps?
+         self.interp_forcing = 1
++        self.average_forcing = 0
+         self.cycle_forcing = 0
+ 
+         return self
+     #}}}
+-    def checkconsistency(self, md, solution, analyses): #{{{
++
++    def checkconsistency(self, md, solution, analyses):  #{{{
+         md = checkfield(md, 'fieldname', 'timestepping.start_time', 'numel', [1], 'NaN', 1, 'Inf', 1)
+         md = checkfield(md, 'fieldname', 'timestepping.final_time', 'numel', [1], 'NaN', 1, 'Inf', 1)
+         md = checkfield(md, 'fieldname', 'timestepping.time_step', 'numel', [1], '>=', 0, 'NaN', 1, 'Inf', 1)
++        md = checkfield(md, 'fieldname', 'timestepping.interp_forcing', 'numel', [1], 'values', [0, 1])
++        md = checkfield(md, 'fieldname', 'timestepping.average_forcing', 'numel', [1], 'values', [0, 1])
+         md = checkfield(md, 'fieldname', 'timestepping.cycle_forcing', 'numel', [1], 'values', [0, 1])
+         if (self.final_time - self.start_time) < 0:
+             md.checkmessage('timestepping.final_time should be larger than timestepping.start_time')
+@@ -59,7 +67,8 @@
+ 
+         return md
+     #}}}
+-    def marshall(self, prefix, md, fid): #{{{
++
++    def marshall(self, prefix, md, fid):  #{{{
+         scale = md.constants.yts
+         WriteData(fid, prefix, 'name', 'md.timestepping.type', 'data', 1, 'format', 'Integer')
+         WriteData(fid, prefix, 'object', self, 'fieldname', 'start_time', 'format', 'Double', 'scale', scale)
+@@ -66,6 +75,7 @@
+         WriteData(fid, prefix, 'object', self, 'fieldname', 'final_time', 'format', 'Double', 'scale', scale)
+         WriteData(fid, prefix, 'object', self, 'fieldname', 'time_step', 'format', 'Double', 'scale', scale)
+         WriteData(fid, prefix, 'object', self, 'fieldname', 'interp_forcing', 'format', 'Boolean')
++        WriteData(fid, prefix, 'object', self, 'fieldname', 'average_forcing', 'format', 'Boolean')
+         WriteData(fid, prefix, 'object', self, 'fieldname', 'cycle_forcing', 'format', 'Boolean')
+         WriteData(fid, prefix, 'object', self, 'fieldname', 'coupling_time', 'format', 'Double', 'scale', scale)
+     #}}}
+Index: ../trunk-jpl/src/m/classes/timesteppingadaptive.m
+===================================================================
+--- ../trunk-jpl/src/m/classes/timesteppingadaptive.m	(revision 27177)
++++ ../trunk-jpl/src/m/classes/timesteppingadaptive.m	(revision 27178)
+@@ -4,14 +4,15 @@
+ %      timesteppingadaptive=timesteppingadaptive();
+ 
+ classdef timesteppingadaptive
+-	properties (SetAccess=public) 
++	properties (SetAccess=public)
+ 		start_time      = 0.;
+ 		final_time      = 0.;
+ 		time_step_min   = 0.;
+ 		time_step_max   = 0.;
+ 		cfl_coefficient = 0.;
+-		interp_forcing = 1;
+-		cycle_forcing = 1;
++		interp_forcing  = 1;
++		average_forcing = 0;
++		cycle_forcing   = 1;
+ 		coupling_time   = 0.;
+ 	end
+ 	methods
+@@ -39,6 +40,7 @@
+ 
+ 			%should we interpolate forcing between timesteps?
+ 			self.interp_forcing=1;
++			self.average_forcing=0;
+ 			self.cycle_forcing=0;
+ 		end % }}}
+ 		function md = checkconsistency(self,md,solution,analyses) % {{{
+@@ -49,11 +51,12 @@
+ 			md = checkfield(md,'fieldname','timestepping.time_step_max','numel',[1],'>=',md.timestepping.time_step_min,'NaN',1,'Inf',1);
+ 			md = checkfield(md,'fieldname','timestepping.cfl_coefficient','numel',[1],'>',0,'<=',1);
+ 			md = checkfield(md,'fieldname','timestepping.interp_forcing','numel',[1],'values',[0 1]);
++			md = checkfield(md,'fieldname','timestepping.average_forcing','numel',[1],'values',[0 1]);
+ 			md = checkfield(md,'fieldname','timestepping.cycle_forcing','numel',[1],'values',[0 1]);
+ 			md = checkfield(md,'fieldname','timestepping.coupling_time','numel',[1],'>=',md.timestepping.coupling_time,'NaN',1,'Inf',1);
+ 			if self.final_time-self.start_time<0,
+ 				md = checkmessage(md,'timestepping.final_time should be larger than timestepping.start_time');
+-			end 
++			end
+ 		end % }}}
+ 		function disp(self) % {{{
+ 			disp(sprintf('   timesteppingadaptive parameters:'));
+@@ -65,6 +68,7 @@
+ 			fielddisplay(self,'time_step_max',['maximum length of time step [' unit ']']);
+ 			fielddisplay(self,'cfl_coefficient','coefficient applied to cfl condition');
+ 			fielddisplay(self,'interp_forcing','interpolate in time between requested forcing values ? (0 or 1)');
++			fielddisplay(self,'average_forcing','average in time if there are several forcing values between steps? (0 or 1, default is 0)');
+ 			fielddisplay(self,'cycle_forcing','cycle through forcing ? (0 or 1)');
+ 			fielddisplay(self,'coupling_time',['coupling time step with ocean model [' unit ']']);
+ 
+@@ -79,11 +83,12 @@
+ 			WriteData(fid,prefix,'object',self,'class','timestepping','fieldname','time_step_max','format','Double','scale',scale);
+ 			WriteData(fid,prefix,'object',self,'class','timestepping','fieldname','cfl_coefficient','format','Double');
+ 			WriteData(fid,prefix,'object',self,'class','timestepping','fieldname','interp_forcing','format','Boolean');
++			WriteData(fid,prefix,'object',self,'class','timestepping','fieldname','average_forcing','format','Boolean');
+ 			WriteData(fid,prefix,'object',self,'class','timestepping','fieldname','cycle_forcing','format','Boolean');
+ 			WriteData(fid,prefix,'object',self,'class','timestepping','fieldname','coupling_time','format','Double','scale',scale);
+ 		end % }}}
+ 		function savemodeljs(self,fid,modelname) % {{{
+-		
++
+ 			writejsdouble(fid,[modelname '.timesteppingadaptive.start_time'],self.start_time);
+ 			writejsdouble(fid,[modelname '.timesteppingadaptive.final_time'],self.final_time);
+ 			writejsdouble(fid,[modelname '.timesteppingadaptive.time_step_min'],self.time_step_min);
+@@ -90,6 +95,7 @@
+ 			writejsdouble(fid,[modelname '.timesteppingadaptive.time_step_max'],self.time_step_max);
+ 			writejsdouble(fid,[modelname '.timesteppingadaptive.cfl_coefficient'],self.cfl_coefficient);
+ 			writejsdouble(fid,[modelname '.timesteppingadaptive.interp_forcing'],self.interp_forcing);
++			writejsdouble(fid,[modelname '.timesteppingadaptive.average_forcing'],self.interp_forcing);
+ 			writejsdouble(fid,[modelname '.timesteppingadaptive.cycle_forcing'],self.cycle_forcing);
+ 			writejsdouble(fid,[modelname '.timesteppingadaptive.coupling_time'],self.time_step_max);
+ 
+Index: ../trunk-jpl/src/m/classes/timesteppingadaptive.py
+===================================================================
+--- ../trunk-jpl/src/m/classes/timesteppingadaptive.py	(revision 27177)
++++ ../trunk-jpl/src/m/classes/timesteppingadaptive.py	(revision 27178)
+@@ -19,6 +19,7 @@
+             self.time_step_max = 0.
+             self.cfl_coefficient = 0.
+             self.interp_forcing = 1
++            self.average_forcing = 0
+             self.cycle_forcing = 0
+             self.coupling_time = 0.
+ 
+@@ -32,6 +33,7 @@
+             self.start_time = old.start_time
+             self.final_time = old.final_time
+             self.interp_forcing = old.interp_forcing
++            self.average_forcing = old.average_forcing
+             self.cycle_forcing = old.cycle_forcing
+             self.coupling_time = old.coupling_time
+ 
+@@ -41,14 +43,15 @@
+ 
+     def __repr__(self):  # {{{
+         string = "   timesteppingadaptive parameters:"
+-        string = "%s\n%s" % (string, fielddisplay(self, "start_time", "simulation starting time [yr]"))
+-        string = "%s\n%s" % (string, fielddisplay(self, "final_time", "final time to stop the simulation [yr]"))
+-        string = "%s\n%s" % (string, fielddisplay(self, "time_step_min", "minimum length of time steps [yr]"))
+-        string = "%s\n%s" % (string, fielddisplay(self, "time_step_max", "maximum length of time steps [yr]"))
+-        string = "%s\n%s" % (string, fielddisplay(self, "cfl_coefficient", "coefficient applied to cfl condition"))
+-        string = "%s\n%s" % (string, fielddisplay(self, "interp_forcing", "interpolate in time between requested forcing values ? (0 or 1)"))
+-        string = "%s\n%s" % (string, fielddisplay(self, "cycle_forcing", "cycle through forcing ? (0 or 1)"))
+-        string = "%s\n%s" % (string, fielddisplay(self, "coupling_time", "coupling time steps with ocean model [yr]"))
++        string = '{}\n{}'.format (string, fielddisplay(self, "start_time", "simulation starting time [yr]"))
++        string = '{}\n{}'.format(string, fielddisplay(self, "final_time", "final time to stop the simulation [yr]"))
++        string = '{}\n{}'.format (string, fielddisplay(self, "time_step_min", "minimum length of time steps [yr]"))
++        string = '{}\n{}'.format (string, fielddisplay(self, "time_step_max", "maximum length of time steps [yr]"))
++        string = '{}\n{}'.format (string, fielddisplay(self, "cfl_coefficient", "coefficient applied to cfl condition"))
++        string = '{}\n{}'.format (string, fielddisplay(self, "interp_forcing", "interpolate in time between requested forcing values ? (0 or 1)"))
++        string = '{}\n{}'.format(string, fielddisplay(self, 'average_forcing', 'average in time if there are several forcing values between steps? (0 or 1, default is 0)'))
++        string = '{}\n{}'.format(string, fielddisplay(self, "cycle_forcing", "cycle through forcing ? (0 or 1)"))
++        string = '{}\n{}'.format(string, fielddisplay(self, "coupling_time", "coupling time steps with ocean model [yr]"))
+         return string
+     # }}}
+ 
+@@ -62,6 +65,7 @@
+         self.cfl_coefficient = 0.5
+         #should we interpolate forcing between timesteps?
+         self.interp_forcing = 1
++        self.average_forcing = 0
+         self.cycle_forcing   = 0
+         return self
+     #}}}
+@@ -75,6 +79,7 @@
+         if self.final_time - self.start_time < 0:
+             md.checkmessage("timestepping.final_time should be larger than timestepping.start_time")
+         md = checkfield(md, 'fieldname', 'timestepping.interp_forcing', 'numel', [1], 'values', [0, 1])
++        md = checkfield(md, 'fieldname', 'timestepping.average_forcing', 'numel', [1], 'values', [0, 1])
+         md = checkfield(md, 'fieldname', 'timestepping.cycle_forcing', 'numel', [1], 'values', [0, 1])
+         md = checkfield(md, 'fieldname', 'timestepping.coupling_time', 'numel', [1], '>=', 0, 'NaN', 1, 'Inf', 1)
+ 
+@@ -90,6 +95,7 @@
+         WriteData(fid, prefix, 'object', self, 'class', 'timestepping', 'fieldname', 'time_step_max', 'format', 'Double', 'scale', yts)
+         WriteData(fid, prefix, 'object', self, 'class', 'timestepping', 'fieldname', 'cfl_coefficient', 'format', 'Double')
+         WriteData(fid, prefix, 'object', self, 'class', 'timestepping', 'fieldname', 'interp_forcing', 'format', 'Boolean')
++        WriteData(fid, prefix, 'object', self, 'class', 'timestepping', 'fieldname', 'average_forcing', 'format', 'Boolean')
+         WriteData(fid, prefix, 'object', self, 'class', 'timestepping', 'fieldname', 'cycle_forcing', 'format', 'Boolean')
+         WriteData(fid, prefix, 'object', self, 'class', 'timestepping', 'fieldname', 'coupling_time', 'format', 'Double', 'scale', yts)
+     # }}}
Index: /issm/oecreview/Archive/27032-27229/ISSM-27178-27179.diff
===================================================================
--- /issm/oecreview/Archive/27032-27229/ISSM-27178-27179.diff	(revision 27230)
+++ /issm/oecreview/Archive/27032-27229/ISSM-27178-27179.diff	(revision 27230)
@@ -0,0 +1,11595 @@
+Index: ../trunk-jpl/src/c/shared/Enum/Enum.vim
+===================================================================
+--- ../trunk-jpl/src/c/shared/Enum/Enum.vim	(revision 27178)
++++ ../trunk-jpl/src/c/shared/Enum/Enum.vim	(revision 27179)
+@@ -242,6 +242,7 @@
+ syn keyword cConstant HydrologydcSedimentPoreWaterMassEnum
+ syn keyword cConstant HydrologydcSedimentPorosityEnum
+ syn keyword cConstant HydrologydcSedimentThicknessEnum
++syn keyword cConstant HydrologyStepAdaptEnum
+ syn keyword cConstant HydrologydcTransferFlagEnum
+ syn keyword cConstant HydrologydcUnconfinedFlagEnum
+ syn keyword cConstant HydrologyshreveStabilizationEnum
+@@ -563,6 +564,7 @@
+ syn keyword cConstant ThermalStabilizationEnum
+ syn keyword cConstant ThermalWatercolumnUpperlimitEnum
+ syn keyword cConstant TimeEnum
++syn keyword cConstant TimesteppingAverageForcingEnum
+ syn keyword cConstant TimesteppingCflCoefficientEnum
+ syn keyword cConstant TimesteppingCouplingTimeEnum
+ syn keyword cConstant TimesteppingFinalTimeEnum
+@@ -1372,6 +1374,8 @@
+ syn keyword cConstant HydrologyShaktiAnalysisEnum
+ syn keyword cConstant HydrologyShreveAnalysisEnum
+ syn keyword cConstant HydrologySolutionEnum
++syn keyword cConstant HydrologySubstepsEnum
++syn keyword cConstant HydrologySubTimeEnum
+ syn keyword cConstant HydrologydcEnum
+ syn keyword cConstant HydrologypismEnum
+ syn keyword cConstant HydrologyshaktiEnum
+@@ -1725,6 +1729,7 @@
+ syn keyword cType PentaRef
+ syn keyword cType PowerVariogram
+ syn keyword cType Profiler
++syn keyword cType Profiler_bdf
+ syn keyword cType Quadtree
+ syn keyword cType Radar
+ syn keyword cType Regionaloutput
+Index: ../trunk-jpl/src/c/shared/Enum/EnumDefinitions.h
+===================================================================
+--- ../trunk-jpl/src/c/shared/Enum/EnumDefinitions.h	(revision 27178)
++++ ../trunk-jpl/src/c/shared/Enum/EnumDefinitions.h	(revision 27179)
+@@ -236,6 +236,7 @@
+ 	HydrologydcSedimentPoreWaterMassEnum,
+ 	HydrologydcSedimentPorosityEnum,
+ 	HydrologydcSedimentThicknessEnum,
++	HydrologyStepAdaptEnum,
+ 	HydrologydcTransferFlagEnum,
+ 	HydrologydcUnconfinedFlagEnum,
+ 	HydrologyshreveStabilizationEnum,
+@@ -557,6 +558,7 @@
+ 	ThermalStabilizationEnum,
+ 	ThermalWatercolumnUpperlimitEnum,
+ 	TimeEnum,
++	TimesteppingAverageForcingEnum,
+ 	TimesteppingCflCoefficientEnum,
+ 	TimesteppingCouplingTimeEnum,
+ 	TimesteppingFinalTimeEnum,
+@@ -1371,6 +1373,8 @@
+ 	HydrologyShaktiAnalysisEnum,
+ 	HydrologyShreveAnalysisEnum,
+ 	HydrologySolutionEnum,
++	HydrologySubstepsEnum,
++	HydrologySubTimeEnum,
+ 	HydrologydcEnum,
+ 	HydrologypismEnum,
+ 	HydrologyshaktiEnum,
+Index: ../trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp
+===================================================================
+--- ../trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp	(revision 27178)
++++ ../trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp	(revision 27179)
+@@ -244,6 +244,7 @@
+ 		case HydrologydcSedimentPoreWaterMassEnum : return "HydrologydcSedimentPoreWaterMass";
+ 		case HydrologydcSedimentPorosityEnum : return "HydrologydcSedimentPorosity";
+ 		case HydrologydcSedimentThicknessEnum : return "HydrologydcSedimentThickness";
++		case HydrologyStepAdaptEnum : return "HydrologyStepAdapt";
+ 		case HydrologydcTransferFlagEnum : return "HydrologydcTransferFlag";
+ 		case HydrologydcUnconfinedFlagEnum : return "HydrologydcUnconfinedFlag";
+ 		case HydrologyshreveStabilizationEnum : return "HydrologyshreveStabilization";
+@@ -565,6 +566,7 @@
+ 		case ThermalStabilizationEnum : return "ThermalStabilization";
+ 		case ThermalWatercolumnUpperlimitEnum : return "ThermalWatercolumnUpperlimit";
+ 		case TimeEnum : return "Time";
++		case TimesteppingAverageForcingEnum : return "TimesteppingAverageForcing";
+ 		case TimesteppingCflCoefficientEnum : return "TimesteppingCflCoefficient";
+ 		case TimesteppingCouplingTimeEnum : return "TimesteppingCouplingTime";
+ 		case TimesteppingFinalTimeEnum : return "TimesteppingFinalTime";
+@@ -1374,6 +1376,8 @@
+ 		case HydrologyShaktiAnalysisEnum : return "HydrologyShaktiAnalysis";
+ 		case HydrologyShreveAnalysisEnum : return "HydrologyShreveAnalysis";
+ 		case HydrologySolutionEnum : return "HydrologySolution";
++		case HydrologySubstepsEnum : return "HydrologySubsteps";
++		case HydrologySubTimeEnum : return "HydrologySubTime";
+ 		case HydrologydcEnum : return "Hydrologydc";
+ 		case HydrologypismEnum : return "Hydrologypism";
+ 		case HydrologyshaktiEnum : return "Hydrologyshakti";
+Index: ../trunk-jpl/src/c/shared/Enum/Enumjl.vim
+===================================================================
+--- ../trunk-jpl/src/c/shared/Enum/Enumjl.vim	(revision 27178)
++++ ../trunk-jpl/src/c/shared/Enum/Enumjl.vim	(revision 27179)
+@@ -1619,3 +1619,11272 @@
+ syn keyword juliaConstC TriangleInterpEnum
+ syn keyword juliaConstC MaximumNumberOfDefinitionsEnum
+ "ISSM Enums end
++syn keyword juliaConstC ParametersSTARTEnum
++syn keyword juliaConstC AdolcParamEnum
++syn keyword juliaConstC AmrDeviatoricErrorGroupThresholdEnum
++syn keyword juliaConstC AmrDeviatoricErrorMaximumEnum
++syn keyword juliaConstC AmrDeviatoricErrorResolutionEnum
++syn keyword juliaConstC AmrDeviatoricErrorThresholdEnum
++syn keyword juliaConstC AmrErrEnum
++syn keyword juliaConstC AmrFieldEnum
++syn keyword juliaConstC AmrGradationEnum
++syn keyword juliaConstC AmrGroundingLineDistanceEnum
++syn keyword juliaConstC AmrGroundingLineResolutionEnum
++syn keyword juliaConstC AmrHmaxEnum
++syn keyword juliaConstC AmrHminEnum
++syn keyword juliaConstC AmrIceFrontDistanceEnum
++syn keyword juliaConstC AmrIceFrontResolutionEnum
++syn keyword juliaConstC AmrKeepMetricEnum
++syn keyword juliaConstC AmrLagEnum
++syn keyword juliaConstC AmrLevelMaxEnum
++syn keyword juliaConstC AmrRestartEnum
++syn keyword juliaConstC AmrThicknessErrorGroupThresholdEnum
++syn keyword juliaConstC AmrThicknessErrorMaximumEnum
++syn keyword juliaConstC AmrThicknessErrorResolutionEnum
++syn keyword juliaConstC AmrThicknessErrorThresholdEnum
++syn keyword juliaConstC AmrTypeEnum
++syn keyword juliaConstC AnalysisCounterEnum
++syn keyword juliaConstC AnalysisTypeEnum
++syn keyword juliaConstC AugmentedLagrangianREnum
++syn keyword juliaConstC AugmentedLagrangianRholambdaEnum
++syn keyword juliaConstC AugmentedLagrangianRhopEnum
++syn keyword juliaConstC AugmentedLagrangianRlambdaEnum
++syn keyword juliaConstC AugmentedLagrangianThetaEnum
++syn keyword juliaConstC AutodiffCbufsizeEnum
++syn keyword juliaConstC AutodiffDependentObjectsEnum
++syn keyword juliaConstC AutodiffDriverEnum
++syn keyword juliaConstC AutodiffFosForwardIndexEnum
++syn keyword juliaConstC AutodiffFosReverseIndexEnum
++syn keyword juliaConstC AutodiffFovForwardIndicesEnum
++syn keyword juliaConstC AutodiffGcTriggerMaxSizeEnum
++syn keyword juliaConstC AutodiffGcTriggerRatioEnum
++syn keyword juliaConstC AutodiffIsautodiffEnum
++syn keyword juliaConstC AutodiffLbufsizeEnum
++syn keyword juliaConstC AutodiffNumDependentsEnum
++syn keyword juliaConstC AutodiffNumIndependentsEnum
++syn keyword juliaConstC AutodiffObufsizeEnum
++syn keyword juliaConstC AutodiffTapeAllocEnum
++syn keyword juliaConstC AutodiffTbufsizeEnum
++syn keyword juliaConstC AutodiffXpEnum
++syn keyword juliaConstC BalancethicknessStabilizationEnum
++syn keyword juliaConstC BarystaticContributionsEnum
++syn keyword juliaConstC BasalforcingsAutoregressionInitialTimeEnum
++syn keyword juliaConstC BasalforcingsAutoregressionTimestepEnum
++syn keyword juliaConstC BasalforcingsAutoregressiveOrderEnum
++syn keyword juliaConstC BasalforcingsBeta0Enum
++syn keyword juliaConstC BasalforcingsBeta1Enum
++syn keyword juliaConstC BasalforcingsBottomplumedepthEnum
++syn keyword juliaConstC BasalforcingsCrustthicknessEnum
++syn keyword juliaConstC BasalforcingsDeepwaterElevationEnum
++syn keyword juliaConstC BasalforcingsDeepwaterMeltingRateEnum
++syn keyword juliaConstC BasalforcingsDtbgEnum
++syn keyword juliaConstC BasalforcingsEnum
++syn keyword juliaConstC BasalforcingsIsmip6AverageTfEnum
++syn keyword juliaConstC BasalforcingsIsmip6BasinAreaEnum
++syn keyword juliaConstC BasalforcingsIsmip6DeltaTEnum
++syn keyword juliaConstC BasalforcingsIsmip6Gamma0Enum
++syn keyword juliaConstC BasalforcingsIsmip6IsLocalEnum
++syn keyword juliaConstC BasalforcingsIsmip6NumBasinsEnum
++syn keyword juliaConstC BasalforcingsIsmip6TfDepthsEnum
++syn keyword juliaConstC BasalforcingsLinearNumBasinsEnum
++syn keyword juliaConstC BasalforcingsLowercrustheatEnum
++syn keyword juliaConstC BasalforcingsMantleconductivityEnum
++syn keyword juliaConstC BasalforcingsNusseltEnum
++syn keyword juliaConstC BasalforcingsPhiEnum
++syn keyword juliaConstC BasalforcingsPicoAverageOverturningEnum
++syn keyword juliaConstC BasalforcingsPicoAverageSalinityEnum
++syn keyword juliaConstC BasalforcingsPicoAverageTemperatureEnum
++syn keyword juliaConstC BasalforcingsPicoBoxAreaEnum
++syn keyword juliaConstC BasalforcingsPicoFarOceansalinityEnum
++syn keyword juliaConstC BasalforcingsPicoFarOceantemperatureEnum
++syn keyword juliaConstC BasalforcingsPicoGammaTEnum
++syn keyword juliaConstC BasalforcingsPicoIsplumeEnum
++syn keyword juliaConstC BasalforcingsPicoMaxboxcountEnum
++syn keyword juliaConstC BasalforcingsPicoNumBasinsEnum
++syn keyword juliaConstC BasalforcingsPlumeradiusEnum
++syn keyword juliaConstC BasalforcingsPlumexEnum
++syn keyword juliaConstC BasalforcingsPlumeyEnum
++syn keyword juliaConstC BasalforcingsThresholdThicknessEnum
++syn keyword juliaConstC BasalforcingsTopplumedepthEnum
++syn keyword juliaConstC BasalforcingsUppercrustheatEnum
++syn keyword juliaConstC BasalforcingsUppercrustthicknessEnum
++syn keyword juliaConstC BasalforcingsUpperdepthMeltEnum
++syn keyword juliaConstC BasalforcingsUpperwaterElevationEnum
++syn keyword juliaConstC BasalforcingsUpperwaterMeltingRateEnum
++syn keyword juliaConstC CalvingCrevasseDepthEnum
++syn keyword juliaConstC CalvingCrevasseThresholdEnum
++syn keyword juliaConstC CalvingHeightAboveFloatationEnum
++syn keyword juliaConstC CalvingLawEnum
++syn keyword juliaConstC CalvingMinthicknessEnum
++syn keyword juliaConstC CalvingTestSpeedfactorEnum
++syn keyword juliaConstC CalvingTestIndependentRateEnum
++syn keyword juliaConstC CalvingUseParamEnum
++syn keyword juliaConstC CalvingThetaEnum
++syn keyword juliaConstC CalvingAlphaEnum
++syn keyword juliaConstC CalvingXoffsetEnum
++syn keyword juliaConstC CalvingYoffsetEnum
++syn keyword juliaConstC ConfigurationTypeEnum
++syn keyword juliaConstC ConstantsGEnum
++syn keyword juliaConstC ConstantsNewtonGravityEnum
++syn keyword juliaConstC ConstantsReferencetemperatureEnum
++syn keyword juliaConstC ConstantsYtsEnum
++syn keyword juliaConstC ControlInputSizeMEnum
++syn keyword juliaConstC ControlInputSizeNEnum
++syn keyword juliaConstC ControlInputInterpolationEnum
++syn keyword juliaConstC CumBslcEnum
++syn keyword juliaConstC CumBslcIceEnum
++syn keyword juliaConstC CumBslcHydroEnum
++syn keyword juliaConstC CumBslcOceanEnum
++syn keyword juliaConstC CumBslcIcePartitionEnum
++syn keyword juliaConstC CumBslcHydroPartitionEnum
++syn keyword juliaConstC CumBslcOceanPartitionEnum
++syn keyword juliaConstC CumGmtslcEnum
++syn keyword juliaConstC CumGmslcEnum
++syn keyword juliaConstC DamageC1Enum
++syn keyword juliaConstC DamageC2Enum
++syn keyword juliaConstC DamageC3Enum
++syn keyword juliaConstC DamageC4Enum
++syn keyword juliaConstC DamageEnum
++syn keyword juliaConstC DamageEquivStressEnum
++syn keyword juliaConstC DamageEvolutionNumRequestedOutputsEnum
++syn keyword juliaConstC DamageEvolutionRequestedOutputsEnum
++syn keyword juliaConstC DamageHealingEnum
++syn keyword juliaConstC DamageKappaEnum
++syn keyword juliaConstC DamageLawEnum
++syn keyword juliaConstC DamageMaxDamageEnum
++syn keyword juliaConstC DamageStabilizationEnum
++syn keyword juliaConstC DamageStressThresholdEnum
++syn keyword juliaConstC DamageStressUBoundEnum
++syn keyword juliaConstC DebugProfilingEnum
++syn keyword juliaConstC DomainDimensionEnum
++syn keyword juliaConstC DomainTypeEnum
++syn keyword juliaConstC DslModelEnum
++syn keyword juliaConstC DslModelidEnum
++syn keyword juliaConstC DslNummodelsEnum
++syn keyword juliaConstC SolidearthIsExternalEnum
++syn keyword juliaConstC SolidearthExternalNatureEnum
++syn keyword juliaConstC SolidearthExternalModelidEnum
++syn keyword juliaConstC SolidearthExternalNummodelsEnum
++syn keyword juliaConstC SolidearthSettingsComputeBpGrdEnum
++syn keyword juliaConstC EarthIdEnum
++syn keyword juliaConstC ElasticEnum
++syn keyword juliaConstC EplZigZagCounterEnum
++syn keyword juliaConstC EsaHElasticEnum
++syn keyword juliaConstC EsaHemisphereEnum
++syn keyword juliaConstC EsaRequestedOutputsEnum
++syn keyword juliaConstC EsaUElasticEnum
++syn keyword juliaConstC ExtrapolationVariableEnum
++syn keyword juliaConstC FemModelCommEnum
++syn keyword juliaConstC FieldsEnum
++syn keyword juliaConstC FlowequationFeFSEnum
++syn keyword juliaConstC FlowequationIsFSEnum
++syn keyword juliaConstC FlowequationIsHOEnum
++syn keyword juliaConstC FlowequationIsL1L2Enum
++syn keyword juliaConstC FlowequationIsMOLHOEnum
++syn keyword juliaConstC FlowequationIsSIAEnum
++syn keyword juliaConstC FlowequationIsSSAEnum
++syn keyword juliaConstC FlowequationIsNitscheEnum
++syn keyword juliaConstC FeFSNitscheGammaEnum
++syn keyword juliaConstC FrictionCouplingEnum
++syn keyword juliaConstC FrictionDeltaEnum
++syn keyword juliaConstC FrictionEffectivePressureLimitEnum
++syn keyword juliaConstC FrictionFEnum
++syn keyword juliaConstC FrictionGammaEnum
++syn keyword juliaConstC FrictionLawEnum
++syn keyword juliaConstC FrictionPseudoplasticityExponentEnum
++syn keyword juliaConstC FrictionThresholdSpeedEnum
++syn keyword juliaConstC FrictionVoidRatioEnum
++syn keyword juliaConstC FrontalForcingsBasinIcefrontAreaEnum
++syn keyword juliaConstC FrontalForcingsAutoregressionInitialTimeEnum
++syn keyword juliaConstC FrontalForcingsAutoregressionTimestepEnum
++syn keyword juliaConstC FrontalForcingsAutoregressiveOrderEnum
++syn keyword juliaConstC FrontalForcingsBeta0Enum
++syn keyword juliaConstC FrontalForcingsBeta1Enum
++syn keyword juliaConstC FrontalForcingsNumberofBasinsEnum
++syn keyword juliaConstC FrontalForcingsParamEnum
++syn keyword juliaConstC FrontalForcingsPhiEnum
++syn keyword juliaConstC GrdModelEnum
++syn keyword juliaConstC GroundinglineFrictionInterpolationEnum
++syn keyword juliaConstC GroundinglineMeltInterpolationEnum
++syn keyword juliaConstC GroundinglineMigrationEnum
++syn keyword juliaConstC GroundinglineNumRequestedOutputsEnum
++syn keyword juliaConstC GroundinglineRequestedOutputsEnum
++syn keyword juliaConstC HydrologyAveragingEnum
++syn keyword juliaConstC HydrologyCavitySpacingEnum
++syn keyword juliaConstC HydrologyChannelConductivityEnum
++syn keyword juliaConstC HydrologyChannelSheetWidthEnum
++syn keyword juliaConstC HydrologyEnglacialVoidRatioEnum
++syn keyword juliaConstC HydrologyIschannelsEnum
++syn keyword juliaConstC HydrologyMeltFlagEnum
++syn keyword juliaConstC HydrologyModelEnum
++syn keyword juliaConstC HydrologyNumRequestedOutputsEnum
++syn keyword juliaConstC HydrologyPressureMeltCoefficientEnum
++syn keyword juliaConstC HydrologyRelaxationEnum
++syn keyword juliaConstC HydrologyRequestedOutputsEnum
++syn keyword juliaConstC HydrologySedimentKmaxEnum
++syn keyword juliaConstC HydrologyStepsPerStepEnum
++syn keyword juliaConstC HydrologyStorageEnum
++syn keyword juliaConstC HydrologydcEplColapseThicknessEnum
++syn keyword juliaConstC HydrologydcEplConductivityEnum
++syn keyword juliaConstC HydrologydcEplInitialThicknessEnum
++syn keyword juliaConstC HydrologydcEplLayerCompressibilityEnum
++syn keyword juliaConstC HydrologydcEplMaxThicknessEnum
++syn keyword juliaConstC HydrologydcEplPoreWaterMassEnum
++syn keyword juliaConstC HydrologydcEplThickCompEnum
++syn keyword juliaConstC HydrologydcEplflipLockEnum
++syn keyword juliaConstC HydrologydcIsefficientlayerEnum
++syn keyword juliaConstC HydrologydcLeakageFactorEnum
++syn keyword juliaConstC HydrologydcMaxIterEnum
++syn keyword juliaConstC HydrologydcPenaltyFactorEnum
++syn keyword juliaConstC HydrologydcPenaltyLockEnum
++syn keyword juliaConstC HydrologydcRelTolEnum
++syn keyword juliaConstC HydrologydcSedimentlimitEnum
++syn keyword juliaConstC HydrologydcSedimentlimitFlagEnum
++syn keyword juliaConstC HydrologydcSedimentLayerCompressibilityEnum
++syn keyword juliaConstC HydrologydcSedimentPoreWaterMassEnum
++syn keyword juliaConstC HydrologydcSedimentPorosityEnum
++syn keyword juliaConstC HydrologydcSedimentThicknessEnum
++syn keyword juliaConstC HydrologyStepAdaptEnum
++syn keyword juliaConstC HydrologydcTransferFlagEnum
++syn keyword juliaConstC HydrologydcUnconfinedFlagEnum
++syn keyword juliaConstC HydrologyshreveStabilizationEnum
++syn keyword juliaConstC IcecapToEarthCommEnum
++syn keyword juliaConstC IndexEnum
++syn keyword juliaConstC InputFileNameEnum
++syn keyword juliaConstC DirectoryNameEnum
++syn keyword juliaConstC IndicesEnum
++syn keyword juliaConstC InputToDepthaverageInEnum
++syn keyword juliaConstC InputToDepthaverageOutEnum
++syn keyword juliaConstC InputToExtrudeEnum
++syn keyword juliaConstC InputToL2ProjectEnum
++syn keyword juliaConstC InputToSmoothEnum
++syn keyword juliaConstC InversionAlgorithmEnum
++syn keyword juliaConstC InversionControlParametersEnum
++syn keyword juliaConstC InversionControlScalingFactorsEnum
++syn keyword juliaConstC InversionCostFunctionsEnum
++syn keyword juliaConstC InversionDxminEnum
++syn keyword juliaConstC InversionGatolEnum
++syn keyword juliaConstC InversionGradientScalingEnum
++syn keyword juliaConstC InversionGrtolEnum
++syn keyword juliaConstC InversionGttolEnum
++syn keyword juliaConstC InversionIncompleteAdjointEnum
++syn keyword juliaConstC InversionIscontrolEnum
++syn keyword juliaConstC InversionMaxiterEnum
++syn keyword juliaConstC InversionMaxiterPerStepEnum
++syn keyword juliaConstC InversionMaxstepsEnum
++syn keyword juliaConstC InversionNstepsEnum
++syn keyword juliaConstC InversionNumControlParametersEnum
++syn keyword juliaConstC InversionNumCostFunctionsEnum
++syn keyword juliaConstC InversionStepThresholdEnum
++syn keyword juliaConstC InversionTypeEnum
++syn keyword juliaConstC IvinsEnum
++syn keyword juliaConstC IsSlcCouplingEnum
++syn keyword juliaConstC LevelsetKillIcebergsEnum
++syn keyword juliaConstC LevelsetReinitFrequencyEnum
++syn keyword juliaConstC LevelsetStabilizationEnum
++syn keyword juliaConstC LockFileNameEnum
++syn keyword juliaConstC LoveAllowLayerDeletionEnum
++syn keyword juliaConstC LoveChandlerWobbleEnum
++syn keyword juliaConstC LoveCoreMantleBoundaryEnum
++syn keyword juliaConstC LoveEarthMassEnum
++syn keyword juliaConstC LoveForcingTypeEnum
++syn keyword juliaConstC LoveFrequenciesEnum
++syn keyword juliaConstC LoveIsTemporalEnum
++syn keyword juliaConstC LoveG0Enum
++syn keyword juliaConstC LoveGravitationalConstantEnum
++syn keyword juliaConstC LoveInnerCoreBoundaryEnum
++syn keyword juliaConstC LoveComplexComputationEnum
++syn keyword juliaConstC LoveQuadPrecisionEnum
++syn keyword juliaConstC LoveIntStepsPerLayerEnum
++syn keyword juliaConstC LoveMinIntegrationStepsEnum
++syn keyword juliaConstC LoveMaxIntegrationdrEnum
++syn keyword juliaConstC LoveKernelsEnum
++syn keyword juliaConstC LoveMu0Enum
++syn keyword juliaConstC LoveNfreqEnum
++syn keyword juliaConstC LoveNTemporalIterationsEnum
++syn keyword juliaConstC LoveNYiEquationsEnum
++syn keyword juliaConstC LoveR0Enum
++syn keyword juliaConstC LoveShNmaxEnum
++syn keyword juliaConstC LoveShNminEnum
++syn keyword juliaConstC LoveStartingLayerEnum
++syn keyword juliaConstC LoveUnderflowTolEnum
++syn keyword juliaConstC LovePostWidderThresholdEnum
++syn keyword juliaConstC LoveDebugEnum
++syn keyword juliaConstC LoveHypergeomNZEnum
++syn keyword juliaConstC LoveHypergeomNAlphaEnum
++syn keyword juliaConstC MassFluxSegmentsEnum
++syn keyword juliaConstC MassFluxSegmentsPresentEnum
++syn keyword juliaConstC MasstransportHydrostaticAdjustmentEnum
++syn keyword juliaConstC MasstransportIsfreesurfaceEnum
++syn keyword juliaConstC MasstransportMinThicknessEnum
++syn keyword juliaConstC MasstransportNumRequestedOutputsEnum
++syn keyword juliaConstC MasstransportPenaltyFactorEnum
++syn keyword juliaConstC MasstransportRequestedOutputsEnum
++syn keyword juliaConstC MasstransportStabilizationEnum
++syn keyword juliaConstC MaterialsBetaEnum
++syn keyword juliaConstC MaterialsEarthDensityEnum
++syn keyword juliaConstC MaterialsEffectiveconductivityAveragingEnum
++syn keyword juliaConstC MaterialsHeatcapacityEnum
++syn keyword juliaConstC MaterialsLatentheatEnum
++syn keyword juliaConstC MaterialsMeltingpointEnum
++syn keyword juliaConstC MaterialsMixedLayerCapacityEnum
++syn keyword juliaConstC MaterialsMuWaterEnum
++syn keyword juliaConstC MaterialsRheologyLawEnum
++syn keyword juliaConstC MaterialsRhoFreshwaterEnum
++syn keyword juliaConstC MaterialsRhoIceEnum
++syn keyword juliaConstC MaterialsRhoSeawaterEnum
++syn keyword juliaConstC MaterialsTemperateiceconductivityEnum
++syn keyword juliaConstC MaterialsThermalExchangeVelocityEnum
++syn keyword juliaConstC MaterialsThermalconductivityEnum
++syn keyword juliaConstC MeltingOffsetEnum
++syn keyword juliaConstC MeshAverageVertexConnectivityEnum
++syn keyword juliaConstC MeshElementtypeEnum
++syn keyword juliaConstC MeshNumberoflayersEnum
++syn keyword juliaConstC MeshNumberofverticesEnum
++syn keyword juliaConstC MeshNumberofelementsEnum
++syn keyword juliaConstC MigrationMaxEnum
++syn keyword juliaConstC ModelIdEnum
++syn keyword juliaConstC NbinsEnum
++syn keyword juliaConstC NodesEnum
++syn keyword juliaConstC NumModelsEnum
++syn keyword juliaConstC OceanGridNxEnum
++syn keyword juliaConstC OceanGridNyEnum
++syn keyword juliaConstC OceanGridXEnum
++syn keyword juliaConstC OceanGridYEnum
++syn keyword juliaConstC OutputBufferPointerEnum
++syn keyword juliaConstC OutputBufferSizePointerEnum
++syn keyword juliaConstC OutputFileNameEnum
++syn keyword juliaConstC OutputFilePointerEnum
++syn keyword juliaConstC OutputdefinitionEnum
++syn keyword juliaConstC QmuErrNameEnum
++syn keyword juliaConstC QmuInNameEnum
++syn keyword juliaConstC QmuIsdakotaEnum
++syn keyword juliaConstC QmuOutNameEnum
++syn keyword juliaConstC QmuOutputEnum
++syn keyword juliaConstC QmuCurrEvalIdEnum
++syn keyword juliaConstC QmuNsampleEnum
++syn keyword juliaConstC QmuResponsedescriptorsEnum
++syn keyword juliaConstC QmuVariableDescriptorsEnum
++syn keyword juliaConstC QmuVariablePartitionsEnum
++syn keyword juliaConstC QmuVariablePartitionsNpartEnum
++syn keyword juliaConstC QmuVariablePartitionsNtEnum
++syn keyword juliaConstC QmuResponsePartitionsEnum
++syn keyword juliaConstC QmuResponsePartitionsNpartEnum
++syn keyword juliaConstC QmuStatisticsEnum
++syn keyword juliaConstC QmuNumstatisticsEnum
++syn keyword juliaConstC QmuNdirectoriesEnum
++syn keyword juliaConstC QmuNfilesPerDirectoryEnum
++syn keyword juliaConstC QmuStatisticsMethodEnum
++syn keyword juliaConstC QmuMethodsEnum
++syn keyword juliaConstC RestartFileNameEnum
++syn keyword juliaConstC ResultsEnum
++syn keyword juliaConstC RootPathEnum
++syn keyword juliaConstC ModelnameEnum
++syn keyword juliaConstC SamplingAlphaEnum
++syn keyword juliaConstC SamplingNumRequestedOutputsEnum
++syn keyword juliaConstC SamplingRequestedOutputsEnum
++syn keyword juliaConstC SamplingRobinEnum
++syn keyword juliaConstC SamplingSeedEnum
++syn keyword juliaConstC SaveResultsEnum
++syn keyword juliaConstC SolidearthPartitionIceEnum
++syn keyword juliaConstC SolidearthPartitionHydroEnum
++syn keyword juliaConstC SolidearthPartitionOceanEnum
++syn keyword juliaConstC SolidearthNpartIceEnum
++syn keyword juliaConstC SolidearthNpartOceanEnum
++syn keyword juliaConstC SolidearthNpartHydroEnum
++syn keyword juliaConstC SolidearthPlanetRadiusEnum
++syn keyword juliaConstC SolidearthPlanetAreaEnum
++syn keyword juliaConstC SolidearthSettingsAbstolEnum
++syn keyword juliaConstC SolidearthSettingsCrossSectionShapeEnum
++syn keyword juliaConstC SolidearthSettingsElasticEnum
++syn keyword juliaConstC SolidearthSettingsViscousEnum
++syn keyword juliaConstC SolidearthSettingsSatelliteGraviEnum
++syn keyword juliaConstC SolidearthSettingsDegreeAccuracyEnum
++syn keyword juliaConstC SealevelchangeGeometryDoneEnum
++syn keyword juliaConstC SealevelchangeViscousNumStepsEnum
++syn keyword juliaConstC SealevelchangeViscousTimesEnum
++syn keyword juliaConstC SealevelchangeViscousIndexEnum
++syn keyword juliaConstC SealevelchangeViscousPolarMotionEnum
++syn keyword juliaConstC SealevelchangeRunCountEnum
++syn keyword juliaConstC SealevelchangeTransitionsEnum
++syn keyword juliaConstC SealevelchangeRequestedOutputsEnum
++syn keyword juliaConstC RotationalAngularVelocityEnum
++syn keyword juliaConstC RotationalEquatorialMoiEnum
++syn keyword juliaConstC RotationalPolarMoiEnum
++syn keyword juliaConstC LovePolarMotionTransferFunctionColinearEnum
++syn keyword juliaConstC LovePolarMotionTransferFunctionOrthogonalEnum
++syn keyword juliaConstC TidalLoveHEnum
++syn keyword juliaConstC TidalLoveKEnum
++syn keyword juliaConstC TidalLoveLEnum
++syn keyword juliaConstC TidalLoveK2SecularEnum
++syn keyword juliaConstC LoadLoveHEnum
++syn keyword juliaConstC LoadLoveKEnum
++syn keyword juliaConstC LoadLoveLEnum
++syn keyword juliaConstC LoveTimeFreqEnum
++syn keyword juliaConstC LoveIsTimeEnum
++syn keyword juliaConstC LoveHypergeomZEnum
++syn keyword juliaConstC LoveHypergeomTable1Enum
++syn keyword juliaConstC LoveHypergeomTable2Enum
++syn keyword juliaConstC SealevelchangeGSelfAttractionEnum
++syn keyword juliaConstC SealevelchangeGViscoElasticEnum
++syn keyword juliaConstC SealevelchangeUViscoElasticEnum
++syn keyword juliaConstC SealevelchangeHViscoElasticEnum
++syn keyword juliaConstC SealevelchangePolarMotionTransferFunctionColinearEnum
++syn keyword juliaConstC SealevelchangePolarMotionTransferFunctionOrthogonalEnum
++syn keyword juliaConstC SealevelchangePolarMotionTransferFunctionZEnum
++syn keyword juliaConstC SealevelchangeTidalK2Enum
++syn keyword juliaConstC SealevelchangeTidalH2Enum
++syn keyword juliaConstC SealevelchangeTidalL2Enum
++syn keyword juliaConstC SolidearthSettingsSealevelLoadingEnum
++syn keyword juliaConstC SolidearthSettingsGRDEnum
++syn keyword juliaConstC SolidearthSettingsRunFrequencyEnum
++syn keyword juliaConstC SolidearthSettingsTimeAccEnum
++syn keyword juliaConstC SolidearthSettingsHorizEnum
++syn keyword juliaConstC SolidearthSettingsMaxiterEnum
++syn keyword juliaConstC SolidearthSettingsGrdOceanEnum
++syn keyword juliaConstC SolidearthSettingsOceanAreaScalingEnum
++syn keyword juliaConstC StochasticForcingCovarianceEnum
++syn keyword juliaConstC StochasticForcingDefaultDimensionEnum
++syn keyword juliaConstC StochasticForcingDimensionsEnum
++syn keyword juliaConstC StochasticForcingFieldsEnum
++syn keyword juliaConstC StochasticForcingIsEffectivePressureEnum
++syn keyword juliaConstC StochasticForcingIsStochasticForcingEnum
++syn keyword juliaConstC StochasticForcingIsWaterPressureEnum
++syn keyword juliaConstC StochasticForcingNoisetermsEnum
++syn keyword juliaConstC StochasticForcingNumFieldsEnum
++syn keyword juliaConstC StochasticForcingRandomflagEnum
++syn keyword juliaConstC StochasticForcingTimestepEnum
++syn keyword juliaConstC SolidearthSettingsReltolEnum
++syn keyword juliaConstC SolidearthSettingsSelfAttractionEnum
++syn keyword juliaConstC SolidearthSettingsRotationEnum
++syn keyword juliaConstC SolidearthSettingsMaxSHCoeffEnum
++syn keyword juliaConstC SettingsIoGatherEnum
++syn keyword juliaConstC SettingsNumResultsOnNodesEnum
++syn keyword juliaConstC SettingsOutputFrequencyEnum
++syn keyword juliaConstC SettingsCheckpointFrequencyEnum
++syn keyword juliaConstC SettingsResultsOnNodesEnum
++syn keyword juliaConstC SettingsSbCouplingFrequencyEnum
++syn keyword juliaConstC SettingsSolverResidueThresholdEnum
++syn keyword juliaConstC SettingsWaitonlockEnum
++syn keyword juliaConstC SmbAIceEnum
++syn keyword juliaConstC SmbAIdxEnum
++syn keyword juliaConstC SmbASnowEnum
++syn keyword juliaConstC SmbAccualtiEnum
++syn keyword juliaConstC SmbAccugradEnum
++syn keyword juliaConstC SmbAccurefEnum
++syn keyword juliaConstC SmbAdThreshEnum
++syn keyword juliaConstC SmbAutoregressionInitialTimeEnum
++syn keyword juliaConstC SmbAutoregressionTimestepEnum
++syn keyword juliaConstC SmbAutoregressiveOrderEnum
++syn keyword juliaConstC SmbAveragingEnum
++syn keyword juliaConstC SmbBeta0Enum
++syn keyword juliaConstC SmbBeta1Enum
++syn keyword juliaConstC SmbDesfacEnum
++syn keyword juliaConstC SmbDpermilEnum
++syn keyword juliaConstC SmbDsnowIdxEnum
++syn keyword juliaConstC SmbElevationBinsEnum
++syn keyword juliaConstC SmbCldFracEnum
++syn keyword juliaConstC SmbDelta18oEnum
++syn keyword juliaConstC SmbDelta18oSurfaceEnum
++syn keyword juliaConstC SmbDenIdxEnum
++syn keyword juliaConstC SmbDtEnum
++syn keyword juliaConstC SmbEnum
++syn keyword juliaConstC SmbEIdxEnum
++syn keyword juliaConstC SmbFEnum
++syn keyword juliaConstC SmbInitDensityScalingEnum
++syn keyword juliaConstC SmbIsaccumulationEnum
++syn keyword juliaConstC SmbIsalbedoEnum
++syn keyword juliaConstC SmbIsconstrainsurfaceTEnum
++syn keyword juliaConstC SmbIsd18opdEnum
++syn keyword juliaConstC SmbIsdelta18oEnum
++syn keyword juliaConstC SmbIsdensificationEnum
++syn keyword juliaConstC SmbIsdeltaLWupEnum
++syn keyword juliaConstC SmbIsfirnwarmingEnum
++syn keyword juliaConstC SmbIsgraingrowthEnum
++syn keyword juliaConstC SmbIsmeltEnum
++syn keyword juliaConstC SmbIsmungsmEnum
++syn keyword juliaConstC SmbIsprecipscaledEnum
++syn keyword juliaConstC SmbIssetpddfacEnum
++syn keyword juliaConstC SmbIsshortwaveEnum
++syn keyword juliaConstC SmbIstemperaturescaledEnum
++syn keyword juliaConstC SmbIsthermalEnum
++syn keyword juliaConstC SmbIsturbulentfluxEnum
++syn keyword juliaConstC SmbKEnum
++syn keyword juliaConstC SmbLapseRatesEnum
++syn keyword juliaConstC SmbNumBasinsEnum
++syn keyword juliaConstC SmbNumElevationBinsEnum
++syn keyword juliaConstC SmbNumRequestedOutputsEnum
++syn keyword juliaConstC SmbPfacEnum
++syn keyword juliaConstC SmbPhiEnum
++syn keyword juliaConstC SmbRdlEnum
++syn keyword juliaConstC SmbRefElevationEnum
++syn keyword juliaConstC SmbRequestedOutputsEnum
++syn keyword juliaConstC SmbRlapsEnum
++syn keyword juliaConstC SmbRlapslgmEnum
++syn keyword juliaConstC SmbRunoffaltiEnum
++syn keyword juliaConstC SmbRunoffgradEnum
++syn keyword juliaConstC SmbRunoffrefEnum
++syn keyword juliaConstC SmbSealevEnum
++syn keyword juliaConstC SmbStepsPerStepEnum
++syn keyword juliaConstC SmbSwIdxEnum
++syn keyword juliaConstC SmbT0dryEnum
++syn keyword juliaConstC SmbT0wetEnum
++syn keyword juliaConstC SmbTeThreshEnum
++syn keyword juliaConstC SmbTdiffEnum
++syn keyword juliaConstC SmbThermoDeltaTScalingEnum
++syn keyword juliaConstC SmbTemperaturesReconstructedYearsEnum
++syn keyword juliaConstC SmbPrecipitationsReconstructedYearsEnum
++syn keyword juliaConstC SmoothThicknessMultiplierEnum
++syn keyword juliaConstC SolutionTypeEnum
++syn keyword juliaConstC SteadystateMaxiterEnum
++syn keyword juliaConstC SteadystateNumRequestedOutputsEnum
++syn keyword juliaConstC SteadystateReltolEnum
++syn keyword juliaConstC SteadystateRequestedOutputsEnum
++syn keyword juliaConstC StepEnum
++syn keyword juliaConstC StepsEnum
++syn keyword juliaConstC StressbalanceAbstolEnum
++syn keyword juliaConstC StressbalanceFSreconditioningEnum
++syn keyword juliaConstC StressbalanceIsnewtonEnum
++syn keyword juliaConstC StressbalanceMaxiterEnum
++syn keyword juliaConstC StressbalanceNumRequestedOutputsEnum
++syn keyword juliaConstC StressbalancePenaltyFactorEnum
++syn keyword juliaConstC StressbalanceReltolEnum
++syn keyword juliaConstC StressbalanceRequestedOutputsEnum
++syn keyword juliaConstC StressbalanceRestolEnum
++syn keyword juliaConstC StressbalanceRiftPenaltyThresholdEnum
++syn keyword juliaConstC StressbalanceShelfDampeningEnum
++syn keyword juliaConstC ThermalIsdrainicecolumnEnum
++syn keyword juliaConstC ThermalIsdynamicbasalspcEnum
++syn keyword juliaConstC ThermalIsenthalpyEnum
++syn keyword juliaConstC ThermalMaxiterEnum
++syn keyword juliaConstC ThermalNumRequestedOutputsEnum
++syn keyword juliaConstC ThermalPenaltyFactorEnum
++syn keyword juliaConstC ThermalPenaltyLockEnum
++syn keyword juliaConstC ThermalPenaltyThresholdEnum
++syn keyword juliaConstC ThermalReltolEnum
++syn keyword juliaConstC ThermalRequestedOutputsEnum
++syn keyword juliaConstC ThermalStabilizationEnum
++syn keyword juliaConstC ThermalWatercolumnUpperlimitEnum
++syn keyword juliaConstC TimeEnum
++syn keyword juliaConstC TimesteppingCflCoefficientEnum
++syn keyword juliaConstC TimesteppingCouplingTimeEnum
++syn keyword juliaConstC TimesteppingFinalTimeEnum
++syn keyword juliaConstC TimesteppingInterpForcingEnum
++syn keyword juliaConstC TimesteppingCycleForcingEnum
++syn keyword juliaConstC TimesteppingStartTimeEnum
++syn keyword juliaConstC TimesteppingTimeStepEnum
++syn keyword juliaConstC TimesteppingTimeStepMaxEnum
++syn keyword juliaConstC TimesteppingTimeStepMinEnum
++syn keyword juliaConstC TimesteppingTypeEnum
++syn keyword juliaConstC ToMITgcmCommEnum
++syn keyword juliaConstC ToolkitsFileNameEnum
++syn keyword juliaConstC ToolkitsOptionsAnalysesEnum
++syn keyword juliaConstC ToolkitsOptionsStringsEnum
++syn keyword juliaConstC ToolkitsTypesEnum
++syn keyword juliaConstC TransientAmrFrequencyEnum
++syn keyword juliaConstC TransientIsdamageevolutionEnum
++syn keyword juliaConstC TransientIsesaEnum
++syn keyword juliaConstC TransientIsgiaEnum
++syn keyword juliaConstC TransientIsgroundinglineEnum
++syn keyword juliaConstC TransientIshydrologyEnum
++syn keyword juliaConstC TransientIsmasstransportEnum
++syn keyword juliaConstC TransientIsoceantransportEnum
++syn keyword juliaConstC TransientIsmovingfrontEnum
++syn keyword juliaConstC TransientIsoceancouplingEnum
++syn keyword juliaConstC TransientIssamplingEnum
++syn keyword juliaConstC TransientIsslcEnum
++syn keyword juliaConstC TransientIssmbEnum
++syn keyword juliaConstC TransientIsstressbalanceEnum
++syn keyword juliaConstC TransientIsthermalEnum
++syn keyword juliaConstC TransientNumRequestedOutputsEnum
++syn keyword juliaConstC TransientRequestedOutputsEnum
++syn keyword juliaConstC VelocityEnum
++syn keyword juliaConstC XxeEnum
++syn keyword juliaConstC YyeEnum
++syn keyword juliaConstC ZzeEnum
++syn keyword juliaConstC AreaeEnum
++syn keyword juliaConstC WorldCommEnum
++syn keyword juliaConstC ParametersENDEnum
++syn keyword juliaConstC InputsSTARTEnum
++syn keyword juliaConstC AccumulatedDeltaBottomPressureEnum
++syn keyword juliaConstC AccumulatedDeltaIceThicknessEnum
++syn keyword juliaConstC AccumulatedDeltaTwsEnum
++syn keyword juliaConstC AdjointEnum
++syn keyword juliaConstC AdjointpEnum
++syn keyword juliaConstC AdjointxEnum
++syn keyword juliaConstC AdjointxBaseEnum
++syn keyword juliaConstC AdjointxShearEnum
++syn keyword juliaConstC AdjointyEnum
++syn keyword juliaConstC AdjointyBaseEnum
++syn keyword juliaConstC AdjointyShearEnum
++syn keyword juliaConstC AdjointzEnum
++syn keyword juliaConstC AirEnum
++syn keyword juliaConstC ApproximationEnum
++syn keyword juliaConstC BalancethicknessMisfitEnum
++syn keyword juliaConstC BalancethicknessOmega0Enum
++syn keyword juliaConstC BalancethicknessOmegaEnum
++syn keyword juliaConstC BalancethicknessSpcthicknessEnum
++syn keyword juliaConstC BalancethicknessThickeningRateEnum
++syn keyword juliaConstC BasalCrevasseEnum
++syn keyword juliaConstC BasalforcingsDeepwaterMeltingRateAutoregressionEnum
++syn keyword juliaConstC BasalforcingsDeepwaterMeltingRateNoiseEnum
++syn keyword juliaConstC BasalforcingsDeepwaterMeltingRateValuesAutoregressionEnum
++syn keyword juliaConstC BasalforcingsFloatingiceMeltingRateEnum
++syn keyword juliaConstC BasalforcingsGeothermalfluxEnum
++syn keyword juliaConstC BasalforcingsGroundediceMeltingRateEnum
++syn keyword juliaConstC BasalforcingsLinearBasinIdEnum
++syn keyword juliaConstC BasalforcingsPerturbationMeltingRateEnum
++syn keyword juliaConstC BasalforcingsSpatialDeepwaterElevationEnum
++syn keyword juliaConstC BasalforcingsSpatialDeepwaterMeltingRateEnum
++syn keyword juliaConstC BasalforcingsSpatialUpperwaterElevationEnum
++syn keyword juliaConstC BasalforcingsSpatialUpperwaterMeltingRateEnum
++syn keyword juliaConstC BasalforcingsIsmip6BasinIdEnum
++syn keyword juliaConstC BasalforcingsIsmip6TfEnum
++syn keyword juliaConstC BasalforcingsIsmip6TfShelfEnum
++syn keyword juliaConstC BasalforcingsIsmip6MeltAnomalyEnum
++syn keyword juliaConstC BasalforcingsMeltrateFactorEnum
++syn keyword juliaConstC BasalforcingsOceanSalinityEnum
++syn keyword juliaConstC BasalforcingsOceanTempEnum
++syn keyword juliaConstC BasalforcingsPicoBasinIdEnum
++syn keyword juliaConstC BasalforcingsPicoBoxIdEnum
++syn keyword juliaConstC BasalforcingsPicoOverturningCoeffEnum
++syn keyword juliaConstC BasalforcingsPicoSubShelfOceanOverturningEnum
++syn keyword juliaConstC BasalforcingsPicoSubShelfOceanSalinityEnum
++syn keyword juliaConstC BasalforcingsPicoSubShelfOceanTempEnum
++syn keyword juliaConstC BasalStressxEnum
++syn keyword juliaConstC BasalStressyEnum
++syn keyword juliaConstC BasalStressEnum
++syn keyword juliaConstC BaseEnum
++syn keyword juliaConstC BaseOldEnum
++syn keyword juliaConstC BaseSlopeXEnum
++syn keyword juliaConstC BaseSlopeYEnum
++syn keyword juliaConstC BaselineBasalforcingsFloatingiceMeltingRateEnum
++syn keyword juliaConstC BaselineBasalforcingsSpatialDeepwaterMeltingRateEnum
++syn keyword juliaConstC BaselineCalvingCalvingrateEnum
++syn keyword juliaConstC BaselineFrictionEffectivePressureEnum
++syn keyword juliaConstC BaselineSmbMassBalanceEnum
++syn keyword juliaConstC BedEnum
++syn keyword juliaConstC BedGRDEnum
++syn keyword juliaConstC BedEastEnum
++syn keyword juliaConstC BedEastGRDEnum
++syn keyword juliaConstC BedNorthEnum
++syn keyword juliaConstC BedNorthGRDEnum
++syn keyword juliaConstC BedSlopeXEnum
++syn keyword juliaConstC BedSlopeYEnum
++syn keyword juliaConstC BottomPressureEnum
++syn keyword juliaConstC BottomPressureOldEnum
++syn keyword juliaConstC CalvingCalvingrateEnum
++syn keyword juliaConstC CalvingHabFractionEnum
++syn keyword juliaConstC CalvingAblationrateEnum
++syn keyword juliaConstC CalvingMeltingrateEnum
++syn keyword juliaConstC CalvingStressThresholdFloatingiceEnum
++syn keyword juliaConstC CalvingStressThresholdGroundediceEnum
++syn keyword juliaConstC CalvinglevermannCoeffEnum
++syn keyword juliaConstC CalvingratexEnum
++syn keyword juliaConstC CalvingrateyEnum
++syn keyword juliaConstC CalvingFluxLevelsetEnum
++syn keyword juliaConstC CalvingMeltingFluxLevelsetEnum
++syn keyword juliaConstC ConvergedEnum
++syn keyword juliaConstC CrevasseDepthEnum
++syn keyword juliaConstC DamageDEnum
++syn keyword juliaConstC DamageDOldEnum
++syn keyword juliaConstC DamageDbarEnum
++syn keyword juliaConstC DamageDbarOldEnum
++syn keyword juliaConstC DamageFEnum
++syn keyword juliaConstC DegreeOfChannelizationEnum
++syn keyword juliaConstC DepthBelowSurfaceEnum
++syn keyword juliaConstC DeltaIceThicknessEnum
++syn keyword juliaConstC DeltaTwsEnum
++syn keyword juliaConstC DeltaBottomPressureEnum
++syn keyword juliaConstC DeltaDslEnum
++syn keyword juliaConstC DslOldEnum
++syn keyword juliaConstC DslEnum
++syn keyword juliaConstC DeltaStrEnum
++syn keyword juliaConstC StrOldEnum
++syn keyword juliaConstC StrEnum
++syn keyword juliaConstC DeviatoricStresseffectiveEnum
++syn keyword juliaConstC DeviatoricStressxxEnum
++syn keyword juliaConstC DeviatoricStressxyEnum
++syn keyword juliaConstC DeviatoricStressxzEnum
++syn keyword juliaConstC DeviatoricStressyyEnum
++syn keyword juliaConstC DeviatoricStressyzEnum
++syn keyword juliaConstC DeviatoricStresszzEnum
++syn keyword juliaConstC DeviatoricStress1Enum
++syn keyword juliaConstC DeviatoricStress2Enum
++syn keyword juliaConstC DistanceToCalvingfrontEnum
++syn keyword juliaConstC DistanceToGroundinglineEnum
++syn keyword juliaConstC Domain2DhorizontalEnum
++syn keyword juliaConstC Domain2DverticalEnum
++syn keyword juliaConstC Domain3DEnum
++syn keyword juliaConstC DragCoefficientAbsGradientEnum
++syn keyword juliaConstC DrivingStressXEnum
++syn keyword juliaConstC DrivingStressYEnum
++syn keyword juliaConstC DummyEnum
++syn keyword juliaConstC EffectivePressureEnum
++syn keyword juliaConstC EffectivePressureSubstepEnum
++syn keyword juliaConstC EffectivePressureTransientEnum
++syn keyword juliaConstC EnthalpyEnum
++syn keyword juliaConstC EnthalpyPicardEnum
++syn keyword juliaConstC EplHeadEnum
++syn keyword juliaConstC EplHeadOldEnum
++syn keyword juliaConstC EplHeadSlopeXEnum
++syn keyword juliaConstC EplHeadSlopeYEnum
++syn keyword juliaConstC EplHeadSubstepEnum
++syn keyword juliaConstC EplHeadTransientEnum
++syn keyword juliaConstC EsaEmotionEnum
++syn keyword juliaConstC EsaNmotionEnum
++syn keyword juliaConstC EsaRotationrateEnum
++syn keyword juliaConstC EsaStrainratexxEnum
++syn keyword juliaConstC EsaStrainratexyEnum
++syn keyword juliaConstC EsaStrainrateyyEnum
++syn keyword juliaConstC EsaUmotionEnum
++syn keyword juliaConstC EsaXmotionEnum
++syn keyword juliaConstC EsaYmotionEnum
++syn keyword juliaConstC EtaDiffEnum
++syn keyword juliaConstC FlowequationBorderFSEnum
++syn keyword juliaConstC FrictionAsEnum
++syn keyword juliaConstC FrictionCEnum
++syn keyword juliaConstC FrictionCmaxEnum
++syn keyword juliaConstC FrictionCoefficientEnum
++syn keyword juliaConstC FrictionCoefficientcoulombEnum
++syn keyword juliaConstC FrictionEffectivePressureEnum
++syn keyword juliaConstC FrictionMEnum
++syn keyword juliaConstC FrictionPEnum
++syn keyword juliaConstC FrictionPressureAdjustedTemperatureEnum
++syn keyword juliaConstC FrictionQEnum
++syn keyword juliaConstC FrictionSedimentCompressibilityCoefficientEnum
++syn keyword juliaConstC FrictionTillFrictionAngleEnum
++syn keyword juliaConstC FrictionWaterLayerEnum
++syn keyword juliaConstC FrictionfEnum
++syn keyword juliaConstC FrontalForcingsBasinIdEnum
++syn keyword juliaConstC FrontalForcingsSubglacialDischargeEnum
++syn keyword juliaConstC FrontalForcingsThermalForcingEnum
++syn keyword juliaConstC GeometryHydrostaticRatioEnum
++syn keyword juliaConstC NGiaEnum
++syn keyword juliaConstC NGiaRateEnum
++syn keyword juliaConstC UGiaEnum
++syn keyword juliaConstC UGiaRateEnum
++syn keyword juliaConstC GradientEnum
++syn keyword juliaConstC GroundinglineHeightEnum
++syn keyword juliaConstC HydraulicPotentialEnum
++syn keyword juliaConstC HydraulicPotentialOldEnum
++syn keyword juliaConstC HydrologyBasalFluxEnum
++syn keyword juliaConstC HydrologyBumpHeightEnum
++syn keyword juliaConstC HydrologyBumpSpacingEnum
++syn keyword juliaConstC HydrologydcBasalMoulinInputEnum
++syn keyword juliaConstC HydrologydcEplThicknessEnum
++syn keyword juliaConstC HydrologydcEplThicknessOldEnum
++syn keyword juliaConstC HydrologydcEplThicknessSubstepEnum
++syn keyword juliaConstC HydrologydcEplThicknessTransientEnum
++syn keyword juliaConstC HydrologydcMaskEplactiveEltEnum
++syn keyword juliaConstC HydrologydcMaskEplactiveNodeEnum
++syn keyword juliaConstC HydrologydcMaskThawedEltEnum
++syn keyword juliaConstC HydrologydcMaskThawedNodeEnum
++syn keyword juliaConstC HydrologydcSedimentTransmitivityEnum
++syn keyword juliaConstC HydrologyDrainageRateEnum
++syn keyword juliaConstC HydrologyEnglacialInputEnum
++syn keyword juliaConstC HydrologyGapHeightEnum
++syn keyword juliaConstC HydrologyGapHeightXEnum
++syn keyword juliaConstC HydrologyGapHeightXXEnum
++syn keyword juliaConstC HydrologyGapHeightYEnum
++syn keyword juliaConstC HydrologyGapHeightYYEnum
++syn keyword juliaConstC HydrologyHeadEnum
++syn keyword juliaConstC HydrologyHeadOldEnum
++syn keyword juliaConstC HydrologyMoulinInputEnum
++syn keyword juliaConstC HydrologyNeumannfluxEnum
++syn keyword juliaConstC HydrologyReynoldsEnum
++syn keyword juliaConstC HydrologySheetConductivityEnum
++syn keyword juliaConstC HydrologySheetThicknessEnum
++syn keyword juliaConstC HydrologySheetThicknessOldEnum
++syn keyword juliaConstC HydrologyTwsEnum
++syn keyword juliaConstC HydrologyTwsSpcEnum
++syn keyword juliaConstC HydrologyTwsAnalysisEnum
++syn keyword juliaConstC HydrologyWatercolumnMaxEnum
++syn keyword juliaConstC HydrologyWaterVxEnum
++syn keyword juliaConstC HydrologyWaterVyEnum
++syn keyword juliaConstC IceEnum
++syn keyword juliaConstC IceMaskNodeActivationEnum
++syn keyword juliaConstC InputEnum
++syn keyword juliaConstC InversionCostFunctionsCoefficientsEnum
++syn keyword juliaConstC InversionSurfaceObsEnum
++syn keyword juliaConstC InversionThicknessObsEnum
++syn keyword juliaConstC InversionVelObsEnum
++syn keyword juliaConstC InversionVxObsEnum
++syn keyword juliaConstC InversionVyObsEnum
++syn keyword juliaConstC LevelsetfunctionSlopeXEnum
++syn keyword juliaConstC LevelsetfunctionSlopeYEnum
++syn keyword juliaConstC LevelsetObservationEnum
++syn keyword juliaConstC LoadingforceXEnum
++syn keyword juliaConstC LoadingforceYEnum
++syn keyword juliaConstC LoadingforceZEnum
++syn keyword juliaConstC MaskOceanLevelsetEnum
++syn keyword juliaConstC MaskIceLevelsetEnum
++syn keyword juliaConstC MaskIceRefLevelsetEnum
++syn keyword juliaConstC MasstransportSpcthicknessEnum
++syn keyword juliaConstC MaterialsRheologyBEnum
++syn keyword juliaConstC MaterialsRheologyBbarEnum
++syn keyword juliaConstC MaterialsRheologyEEnum
++syn keyword juliaConstC MaterialsRheologyEbarEnum
++syn keyword juliaConstC MaterialsRheologyEcEnum
++syn keyword juliaConstC MaterialsRheologyEcbarEnum
++syn keyword juliaConstC MaterialsRheologyEsEnum
++syn keyword juliaConstC MaterialsRheologyEsbarEnum
++syn keyword juliaConstC MaterialsRheologyNEnum
++syn keyword juliaConstC MeshScaleFactorEnum
++syn keyword juliaConstC MeshVertexonbaseEnum
++syn keyword juliaConstC MeshVertexonboundaryEnum
++syn keyword juliaConstC MeshVertexonsurfaceEnum
++syn keyword juliaConstC MisfitEnum
++syn keyword juliaConstC MovingFrontalVxEnum
++syn keyword juliaConstC MovingFrontalVyEnum
++syn keyword juliaConstC NeumannfluxEnum
++syn keyword juliaConstC NewDamageEnum
++syn keyword juliaConstC NodeEnum
++syn keyword juliaConstC OmegaAbsGradientEnum
++syn keyword juliaConstC OceantransportSpcbottompressureEnum
++syn keyword juliaConstC OceantransportSpcstrEnum
++syn keyword juliaConstC OceantransportSpcdslEnum
++syn keyword juliaConstC P0Enum
++syn keyword juliaConstC P1Enum
++syn keyword juliaConstC PartitioningEnum
++syn keyword juliaConstC PressureEnum
++syn keyword juliaConstC RadarEnum
++syn keyword juliaConstC RadarAttenuationMacGregorEnum
++syn keyword juliaConstC RadarAttenuationWolffEnum
++syn keyword juliaConstC RadarIcePeriodEnum
++syn keyword juliaConstC RadarPowerMacGregorEnum
++syn keyword juliaConstC RadarPowerWolffEnum
++syn keyword juliaConstC RheologyBAbsGradientEnum
++syn keyword juliaConstC RheologyBInitialguessEnum
++syn keyword juliaConstC RheologyBInitialguessMisfitEnum
++syn keyword juliaConstC RheologyBbarAbsGradientEnum
++syn keyword juliaConstC SampleEnum
++syn keyword juliaConstC SampleOldEnum
++syn keyword juliaConstC SampleNoiseEnum
++syn keyword juliaConstC SamplingBetaEnum
++syn keyword juliaConstC SamplingKappaEnum
++syn keyword juliaConstC SamplingPhiEnum
++syn keyword juliaConstC SamplingTauEnum
++syn keyword juliaConstC SealevelEnum
++syn keyword juliaConstC SealevelGRDEnum
++syn keyword juliaConstC SatGraviGRDEnum
++syn keyword juliaConstC SealevelBarystaticMaskEnum
++syn keyword juliaConstC SealevelBarystaticIceMaskEnum
++syn keyword juliaConstC SealevelBarystaticIceWeightsEnum
++syn keyword juliaConstC SealevelBarystaticIceAreaEnum
++syn keyword juliaConstC SealevelBarystaticIceLatbarEnum
++syn keyword juliaConstC SealevelBarystaticIceLongbarEnum
++syn keyword juliaConstC SealevelBarystaticIceLoadEnum
++syn keyword juliaConstC SealevelBarystaticHydroMaskEnum
++syn keyword juliaConstC SealevelBarystaticHydroWeightsEnum
++syn keyword juliaConstC SealevelBarystaticHydroAreaEnum
++syn keyword juliaConstC SealevelBarystaticHydroLatbarEnum
++syn keyword juliaConstC SealevelBarystaticHydroLongbarEnum
++syn keyword juliaConstC SealevelBarystaticHydroLoadEnum
++syn keyword juliaConstC SealevelBarystaticBpMaskEnum
++syn keyword juliaConstC SealevelBarystaticBpWeightsEnum
++syn keyword juliaConstC SealevelBarystaticBpAreaEnum
++syn keyword juliaConstC SealevelBarystaticBpLoadEnum
++syn keyword juliaConstC SealevelBarystaticOceanMaskEnum
++syn keyword juliaConstC SealevelBarystaticOceanWeightsEnum
++syn keyword juliaConstC SealevelBarystaticOceanAreaEnum
++syn keyword juliaConstC SealevelBarystaticOceanLatbarEnum
++syn keyword juliaConstC SealevelBarystaticOceanLongbarEnum
++syn keyword juliaConstC SealevelBarystaticOceanLoadEnum
++syn keyword juliaConstC SealevelNEsaEnum
++syn keyword juliaConstC SealevelNEsaRateEnum
++syn keyword juliaConstC SealevelRSLEnum
++syn keyword juliaConstC BslcEnum
++syn keyword juliaConstC BslcIceEnum
++syn keyword juliaConstC BslcHydroEnum
++syn keyword juliaConstC BslcOceanEnum
++syn keyword juliaConstC BslcRateEnum
++syn keyword juliaConstC GmtslcEnum
++syn keyword juliaConstC SealevelRSLBarystaticEnum
++syn keyword juliaConstC SealevelRSLRateEnum
++syn keyword juliaConstC SealevelUGrdEnum
++syn keyword juliaConstC SealevelNGrdEnum
++syn keyword juliaConstC SealevelUEastEsaEnum
++syn keyword juliaConstC SealevelUNorthEsaEnum
++syn keyword juliaConstC SealevelchangeIndicesEnum
++syn keyword juliaConstC SealevelchangeAlphaIndexEnum
++syn keyword juliaConstC SealevelchangeAzimuthIndexEnum
++syn keyword juliaConstC SealevelchangeGrotEnum
++syn keyword juliaConstC SealevelchangeGSatGravirotEnum
++syn keyword juliaConstC SealevelchangeGUrotEnum
++syn keyword juliaConstC SealevelchangeGNrotEnum
++syn keyword juliaConstC SealevelchangeGErotEnum
++syn keyword juliaConstC SealevelchangeAlphaIndexOceanEnum
++syn keyword juliaConstC SealevelchangeAlphaIndexIceEnum
++syn keyword juliaConstC SealevelchangeAlphaIndexHydroEnum
++syn keyword juliaConstC SealevelchangeAzimuthIndexOceanEnum
++syn keyword juliaConstC SealevelchangeAzimuthIndexIceEnum
++syn keyword juliaConstC SealevelchangeAzimuthIndexHydroEnum
++syn keyword juliaConstC SealevelchangeViscousRSLEnum
++syn keyword juliaConstC SealevelchangeViscousSGEnum
++syn keyword juliaConstC SealevelchangeViscousUEnum
++syn keyword juliaConstC SealevelchangeViscousNEnum
++syn keyword juliaConstC SealevelchangeViscousEEnum
++syn keyword juliaConstC SedimentHeadEnum
++syn keyword juliaConstC SedimentHeadOldEnum
++syn keyword juliaConstC SedimentHeadSubstepEnum
++syn keyword juliaConstC SedimentHeadTransientEnum
++syn keyword juliaConstC SedimentHeadResidualEnum
++syn keyword juliaConstC SedimentHeadStackedEnum
++syn keyword juliaConstC SigmaNNEnum
++syn keyword juliaConstC SigmaVMEnum
++syn keyword juliaConstC SmbAccumulatedECEnum
++syn keyword juliaConstC SmbAccumulatedMassBalanceEnum
++syn keyword juliaConstC SmbAccumulatedMeltEnum
++syn keyword juliaConstC SmbAccumulatedPrecipitationEnum
++syn keyword juliaConstC SmbAccumulatedRainEnum
++syn keyword juliaConstC SmbAccumulatedRefreezeEnum
++syn keyword juliaConstC SmbAccumulatedRunoffEnum
++syn keyword juliaConstC SmbAEnum
++syn keyword juliaConstC SmbAdiffEnum
++syn keyword juliaConstC SmbAValueEnum
++syn keyword juliaConstC SmbAccumulationEnum
++syn keyword juliaConstC SmbAdiffiniEnum
++syn keyword juliaConstC SmbAiniEnum
++syn keyword juliaConstC SmbAutoregressionNoiseEnum
++syn keyword juliaConstC SmbBasinsIdEnum
++syn keyword juliaConstC SmbBMaxEnum
++syn keyword juliaConstC SmbBMinEnum
++syn keyword juliaConstC SmbBNegEnum
++syn keyword juliaConstC SmbBPosEnum
++syn keyword juliaConstC SmbCEnum
++syn keyword juliaConstC SmbCcsnowValueEnum
++syn keyword juliaConstC SmbCciceValueEnum
++syn keyword juliaConstC SmbCotValueEnum
++syn keyword juliaConstC SmbDEnum
++syn keyword juliaConstC SmbDailyairdensityEnum
++syn keyword juliaConstC SmbDailyairhumidityEnum
++syn keyword juliaConstC SmbDailydlradiationEnum
++syn keyword juliaConstC SmbDailydsradiationEnum
++syn keyword juliaConstC SmbDailypressureEnum
++syn keyword juliaConstC SmbDailyrainfallEnum
++syn keyword juliaConstC SmbDailysnowfallEnum
++syn keyword juliaConstC SmbDailytemperatureEnum
++syn keyword juliaConstC SmbDailywindspeedEnum
++syn keyword juliaConstC SmbDiniEnum
++syn keyword juliaConstC SmbDlwrfEnum
++syn keyword juliaConstC SmbDulwrfValueEnum
++syn keyword juliaConstC SmbDswrfEnum
++syn keyword juliaConstC SmbDswdiffrfEnum
++syn keyword juliaConstC SmbDzAddEnum
++syn keyword juliaConstC SmbDzEnum
++syn keyword juliaConstC SmbDzMinEnum
++syn keyword juliaConstC SmbDzTopEnum
++syn keyword juliaConstC SmbDziniEnum
++syn keyword juliaConstC SmbEAirEnum
++syn keyword juliaConstC SmbECEnum
++syn keyword juliaConstC SmbECDtEnum
++syn keyword juliaConstC SmbECiniEnum
++syn keyword juliaConstC SmbElaEnum
++syn keyword juliaConstC SmbEvaporationEnum
++syn keyword juliaConstC SmbFACEnum
++syn keyword juliaConstC SmbGdnEnum
++syn keyword juliaConstC SmbGdniniEnum
++syn keyword juliaConstC SmbGspEnum
++syn keyword juliaConstC SmbGspiniEnum
++syn keyword juliaConstC SmbHrefEnum
++syn keyword juliaConstC SmbIsInitializedEnum
++syn keyword juliaConstC SmbMAddEnum
++syn keyword juliaConstC SmbMassBalanceEnum
++syn keyword juliaConstC SmbMassBalanceSubstepEnum
++syn keyword juliaConstC SmbMassBalanceTransientEnum
++syn keyword juliaConstC SmbMeanLHFEnum
++syn keyword juliaConstC SmbMeanSHFEnum
++syn keyword juliaConstC SmbMeanULWEnum
++syn keyword juliaConstC SmbMeltEnum
++syn keyword juliaConstC SmbMonthlytemperaturesEnum
++syn keyword juliaConstC SmbMSurfEnum
++syn keyword juliaConstC SmbNetLWEnum
++syn keyword juliaConstC SmbNetSWEnum
++syn keyword juliaConstC SmbPAirEnum
++syn keyword juliaConstC SmbPEnum
++syn keyword juliaConstC SmbPddfacIceEnum
++syn keyword juliaConstC SmbPddfacSnowEnum
++syn keyword juliaConstC SmbPrecipitationEnum
++syn keyword juliaConstC SmbPrecipitationsAnomalyEnum
++syn keyword juliaConstC SmbPrecipitationsLgmEnum
++syn keyword juliaConstC SmbPrecipitationsPresentdayEnum
++syn keyword juliaConstC SmbPrecipitationsReconstructedEnum
++syn keyword juliaConstC SmbRainEnum
++syn keyword juliaConstC SmbReEnum
++syn keyword juliaConstC SmbRefreezeEnum
++syn keyword juliaConstC SmbReiniEnum
++syn keyword juliaConstC SmbRunoffEnum
++syn keyword juliaConstC SmbRunoffSubstepEnum
++syn keyword juliaConstC SmbRunoffTransientEnum
++syn keyword juliaConstC SmbS0gcmEnum
++syn keyword juliaConstC SmbS0pEnum
++syn keyword juliaConstC SmbS0tEnum
++syn keyword juliaConstC SmbSizeiniEnum
++syn keyword juliaConstC SmbSmbCorrEnum
++syn keyword juliaConstC SmbSmbrefEnum
++syn keyword juliaConstC SmbSzaValueEnum
++syn keyword juliaConstC SmbTEnum
++syn keyword juliaConstC SmbTaEnum
++syn keyword juliaConstC SmbTeValueEnum
++syn keyword juliaConstC SmbTemperaturesAnomalyEnum
++syn keyword juliaConstC SmbTemperaturesLgmEnum
++syn keyword juliaConstC SmbTemperaturesPresentdayEnum
++syn keyword juliaConstC SmbTemperaturesReconstructedEnum
++syn keyword juliaConstC SmbTiniEnum
++syn keyword juliaConstC SmbTmeanEnum
++syn keyword juliaConstC SmbTzEnum
++syn keyword juliaConstC SmbValuesAutoregressionEnum
++syn keyword juliaConstC SmbVEnum
++syn keyword juliaConstC SmbVmeanEnum
++syn keyword juliaConstC SmbVzEnum
++syn keyword juliaConstC SmbWEnum
++syn keyword juliaConstC SmbWAddEnum
++syn keyword juliaConstC SmbWiniEnum
++syn keyword juliaConstC SmbZMaxEnum
++syn keyword juliaConstC SmbZMinEnum
++syn keyword juliaConstC SmbZTopEnum
++syn keyword juliaConstC SmbZYEnum
++syn keyword juliaConstC SolidearthExternalDisplacementEastRateEnum
++syn keyword juliaConstC SolidearthExternalDisplacementNorthRateEnum
++syn keyword juliaConstC SolidearthExternalDisplacementUpRateEnum
++syn keyword juliaConstC SolidearthExternalGeoidRateEnum
++syn keyword juliaConstC StochasticForcingDefaultIdEnum
++syn keyword juliaConstC StrainRateeffectiveEnum
++syn keyword juliaConstC StrainRateparallelEnum
++syn keyword juliaConstC StrainRateperpendicularEnum
++syn keyword juliaConstC StrainRatexxEnum
++syn keyword juliaConstC StrainRatexyEnum
++syn keyword juliaConstC StrainRatexzEnum
++syn keyword juliaConstC StrainRateyyEnum
++syn keyword juliaConstC StrainRateyzEnum
++syn keyword juliaConstC StrainRatezzEnum
++syn keyword juliaConstC StressMaxPrincipalEnum
++syn keyword juliaConstC StressTensorxxEnum
++syn keyword juliaConstC StressTensorxyEnum
++syn keyword juliaConstC StressTensorxzEnum
++syn keyword juliaConstC StressTensoryyEnum
++syn keyword juliaConstC StressTensoryzEnum
++syn keyword juliaConstC StressTensorzzEnum
++syn keyword juliaConstC SurfaceAbsMisfitEnum
++syn keyword juliaConstC SurfaceAbsVelMisfitEnum
++syn keyword juliaConstC AreaEnum
++syn keyword juliaConstC SealevelAreaEnum
++syn keyword juliaConstC SurfaceAreaEnum
++syn keyword juliaConstC SurfaceAverageVelMisfitEnum
++syn keyword juliaConstC SurfaceCrevasseEnum
++syn keyword juliaConstC SurfaceEnum
++syn keyword juliaConstC SurfaceOldEnum
++syn keyword juliaConstC SurfaceLogVelMisfitEnum
++syn keyword juliaConstC SurfaceLogVxVyMisfitEnum
++syn keyword juliaConstC SurfaceObservationEnum
++syn keyword juliaConstC SurfaceRelVelMisfitEnum
++syn keyword juliaConstC SurfaceSlopeXEnum
++syn keyword juliaConstC SurfaceSlopeYEnum
++syn keyword juliaConstC TemperatureEnum
++syn keyword juliaConstC TemperaturePDDEnum
++syn keyword juliaConstC TemperaturePicardEnum
++syn keyword juliaConstC TemperatureSEMICEnum
++syn keyword juliaConstC ThermalforcingAutoregressionNoiseEnum
++syn keyword juliaConstC ThermalforcingValuesAutoregressionEnum
++syn keyword juliaConstC ThermalSpctemperatureEnum
++syn keyword juliaConstC ThicknessAbsGradientEnum
++syn keyword juliaConstC ThicknessAbsMisfitEnum
++syn keyword juliaConstC ThicknessAcrossGradientEnum
++syn keyword juliaConstC ThicknessAlongGradientEnum
++syn keyword juliaConstC ThicknessEnum
++syn keyword juliaConstC ThicknessOldEnum
++syn keyword juliaConstC ThicknessPositiveEnum
++syn keyword juliaConstC ThicknessResidualEnum
++syn keyword juliaConstC TransientAccumulatedDeltaIceThicknessEnum
++syn keyword juliaConstC VelEnum
++syn keyword juliaConstC VxAverageEnum
++syn keyword juliaConstC VxBaseEnum
++syn keyword juliaConstC VxEnum
++syn keyword juliaConstC VxMeshEnum
++syn keyword juliaConstC VxObsEnum
++syn keyword juliaConstC VxShearEnum
++syn keyword juliaConstC VxSurfaceEnum
++syn keyword juliaConstC VyAverageEnum
++syn keyword juliaConstC VyBaseEnum
++syn keyword juliaConstC VyEnum
++syn keyword juliaConstC VyMeshEnum
++syn keyword juliaConstC VyObsEnum
++syn keyword juliaConstC VyShearEnum
++syn keyword juliaConstC VySurfaceEnum
++syn keyword juliaConstC VzEnum
++syn keyword juliaConstC VzFSEnum
++syn keyword juliaConstC VzHOEnum
++syn keyword juliaConstC VzMeshEnum
++syn keyword juliaConstC VzSSAEnum
++syn keyword juliaConstC WaterColumnOldEnum
++syn keyword juliaConstC WatercolumnEnum
++syn keyword juliaConstC WaterfractionDrainageEnum
++syn keyword juliaConstC WaterfractionDrainageIntegratedEnum
++syn keyword juliaConstC WaterfractionEnum
++syn keyword juliaConstC WaterheightEnum
++syn keyword juliaConstC FrictionWaterPressureEnum
++syn keyword juliaConstC FrictionWaterPressureNoiseEnum
++syn keyword juliaConstC WeightsLevelsetObservationEnum
++syn keyword juliaConstC WeightsSurfaceObservationEnum
++syn keyword juliaConstC OldAccumulatedDeltaBottomPressureEnum
++syn keyword juliaConstC OldAccumulatedDeltaIceThicknessEnum
++syn keyword juliaConstC OldAccumulatedDeltaTwsEnum
++syn keyword juliaConstC Outputdefinition1Enum
++syn keyword juliaConstC Outputdefinition10Enum
++syn keyword juliaConstC Outputdefinition11Enum
++syn keyword juliaConstC Outputdefinition12Enum
++syn keyword juliaConstC Outputdefinition13Enum
++syn keyword juliaConstC Outputdefinition14Enum
++syn keyword juliaConstC Outputdefinition15Enum
++syn keyword juliaConstC Outputdefinition16Enum
++syn keyword juliaConstC Outputdefinition17Enum
++syn keyword juliaConstC Outputdefinition18Enum
++syn keyword juliaConstC Outputdefinition19Enum
++syn keyword juliaConstC Outputdefinition20Enum
++syn keyword juliaConstC Outputdefinition21Enum
++syn keyword juliaConstC Outputdefinition22Enum
++syn keyword juliaConstC Outputdefinition23Enum
++syn keyword juliaConstC Outputdefinition24Enum
++syn keyword juliaConstC Outputdefinition25Enum
++syn keyword juliaConstC Outputdefinition26Enum
++syn keyword juliaConstC Outputdefinition27Enum
++syn keyword juliaConstC Outputdefinition28Enum
++syn keyword juliaConstC Outputdefinition29Enum
++syn keyword juliaConstC Outputdefinition2Enum
++syn keyword juliaConstC Outputdefinition30Enum
++syn keyword juliaConstC Outputdefinition31Enum
++syn keyword juliaConstC Outputdefinition32Enum
++syn keyword juliaConstC Outputdefinition33Enum
++syn keyword juliaConstC Outputdefinition34Enum
++syn keyword juliaConstC Outputdefinition35Enum
++syn keyword juliaConstC Outputdefinition36Enum
++syn keyword juliaConstC Outputdefinition37Enum
++syn keyword juliaConstC Outputdefinition38Enum
++syn keyword juliaConstC Outputdefinition39Enum
++syn keyword juliaConstC Outputdefinition3Enum
++syn keyword juliaConstC Outputdefinition40Enum
++syn keyword juliaConstC Outputdefinition41Enum
++syn keyword juliaConstC Outputdefinition42Enum
++syn keyword juliaConstC Outputdefinition43Enum
++syn keyword juliaConstC Outputdefinition44Enum
++syn keyword juliaConstC Outputdefinition45Enum
++syn keyword juliaConstC Outputdefinition46Enum
++syn keyword juliaConstC Outputdefinition47Enum
++syn keyword juliaConstC Outputdefinition48Enum
++syn keyword juliaConstC Outputdefinition49Enum
++syn keyword juliaConstC Outputdefinition4Enum
++syn keyword juliaConstC Outputdefinition50Enum
++syn keyword juliaConstC Outputdefinition51Enum
++syn keyword juliaConstC Outputdefinition52Enum
++syn keyword juliaConstC Outputdefinition53Enum
++syn keyword juliaConstC Outputdefinition54Enum
++syn keyword juliaConstC Outputdefinition55Enum
++syn keyword juliaConstC Outputdefinition56Enum
++syn keyword juliaConstC Outputdefinition57Enum
++syn keyword juliaConstC Outputdefinition58Enum
++syn keyword juliaConstC Outputdefinition59Enum
++syn keyword juliaConstC Outputdefinition5Enum
++syn keyword juliaConstC Outputdefinition60Enum
++syn keyword juliaConstC Outputdefinition61Enum
++syn keyword juliaConstC Outputdefinition62Enum
++syn keyword juliaConstC Outputdefinition63Enum
++syn keyword juliaConstC Outputdefinition64Enum
++syn keyword juliaConstC Outputdefinition65Enum
++syn keyword juliaConstC Outputdefinition66Enum
++syn keyword juliaConstC Outputdefinition67Enum
++syn keyword juliaConstC Outputdefinition68Enum
++syn keyword juliaConstC Outputdefinition69Enum
++syn keyword juliaConstC Outputdefinition6Enum
++syn keyword juliaConstC Outputdefinition70Enum
++syn keyword juliaConstC Outputdefinition71Enum
++syn keyword juliaConstC Outputdefinition72Enum
++syn keyword juliaConstC Outputdefinition73Enum
++syn keyword juliaConstC Outputdefinition74Enum
++syn keyword juliaConstC Outputdefinition75Enum
++syn keyword juliaConstC Outputdefinition76Enum
++syn keyword juliaConstC Outputdefinition77Enum
++syn keyword juliaConstC Outputdefinition78Enum
++syn keyword juliaConstC Outputdefinition79Enum
++syn keyword juliaConstC Outputdefinition7Enum
++syn keyword juliaConstC Outputdefinition80Enum
++syn keyword juliaConstC Outputdefinition81Enum
++syn keyword juliaConstC Outputdefinition82Enum
++syn keyword juliaConstC Outputdefinition83Enum
++syn keyword juliaConstC Outputdefinition84Enum
++syn keyword juliaConstC Outputdefinition85Enum
++syn keyword juliaConstC Outputdefinition86Enum
++syn keyword juliaConstC Outputdefinition87Enum
++syn keyword juliaConstC Outputdefinition88Enum
++syn keyword juliaConstC Outputdefinition89Enum
++syn keyword juliaConstC Outputdefinition8Enum
++syn keyword juliaConstC Outputdefinition90Enum
++syn keyword juliaConstC Outputdefinition91Enum
++syn keyword juliaConstC Outputdefinition92Enum
++syn keyword juliaConstC Outputdefinition93Enum
++syn keyword juliaConstC Outputdefinition94Enum
++syn keyword juliaConstC Outputdefinition95Enum
++syn keyword juliaConstC Outputdefinition96Enum
++syn keyword juliaConstC Outputdefinition97Enum
++syn keyword juliaConstC Outputdefinition98Enum
++syn keyword juliaConstC Outputdefinition99Enum
++syn keyword juliaConstC Outputdefinition9Enum
++syn keyword juliaConstC Outputdefinition100Enum
++syn keyword juliaConstC InputsENDEnum
++syn keyword juliaConstC AbsoluteEnum
++syn keyword juliaConstC AdaptiveTimesteppingEnum
++syn keyword juliaConstC AdjointBalancethickness2AnalysisEnum
++syn keyword juliaConstC AdjointBalancethicknessAnalysisEnum
++syn keyword juliaConstC AdjointHorizAnalysisEnum
++syn keyword juliaConstC AggressiveMigrationEnum
++syn keyword juliaConstC AmrBamgEnum
++syn keyword juliaConstC AmrNeopzEnum
++syn keyword juliaConstC AndroidFrictionCoefficientEnum
++syn keyword juliaConstC ArrheniusEnum
++syn keyword juliaConstC AutodiffJacobianEnum
++syn keyword juliaConstC AutoregressionLinearFloatingMeltRateEnum
++syn keyword juliaConstC Balancethickness2AnalysisEnum
++syn keyword juliaConstC Balancethickness2SolutionEnum
++syn keyword juliaConstC BalancethicknessAnalysisEnum
++syn keyword juliaConstC BalancethicknessApparentMassbalanceEnum
++syn keyword juliaConstC BalancethicknessSoftAnalysisEnum
++syn keyword juliaConstC BalancethicknessSoftSolutionEnum
++syn keyword juliaConstC BalancethicknessSolutionEnum
++syn keyword juliaConstC BalancevelocityAnalysisEnum
++syn keyword juliaConstC BalancevelocitySolutionEnum
++syn keyword juliaConstC BasalforcingsIsmip6Enum
++syn keyword juliaConstC BasalforcingsPicoEnum
++syn keyword juliaConstC BeckmannGoosseFloatingMeltRateEnum
++syn keyword juliaConstC BedSlopeSolutionEnum
++syn keyword juliaConstC BoolExternalResultEnum
++syn keyword juliaConstC BoolInputEnum
++syn keyword juliaConstC IntInputEnum
++syn keyword juliaConstC DoubleInputEnum
++syn keyword juliaConstC BoolParamEnum
++syn keyword juliaConstC BoundaryEnum
++syn keyword juliaConstC BuddJackaEnum
++syn keyword juliaConstC CalvingDev2Enum
++syn keyword juliaConstC CalvingHabEnum
++syn keyword juliaConstC CalvingLevermannEnum
++syn keyword juliaConstC CalvingTestEnum
++syn keyword juliaConstC CalvingParameterizationEnum
++syn keyword juliaConstC CalvingVonmisesEnum
++syn keyword juliaConstC CfdragcoeffabsgradEnum
++syn keyword juliaConstC CfsurfacelogvelEnum
++syn keyword juliaConstC CfsurfacesquareEnum
++syn keyword juliaConstC CflevelsetmisfitEnum
++syn keyword juliaConstC ChannelEnum
++syn keyword juliaConstC ChannelAreaEnum
++syn keyword juliaConstC ChannelAreaOldEnum
++syn keyword juliaConstC ChannelDischargeEnum
++syn keyword juliaConstC ClosedEnum
++syn keyword juliaConstC ColinearEnum
++syn keyword juliaConstC ConstraintsEnum
++syn keyword juliaConstC ContactEnum
++syn keyword juliaConstC ContourEnum
++syn keyword juliaConstC ContoursEnum
++syn keyword juliaConstC ControlInputEnum
++syn keyword juliaConstC ControlInputGradEnum
++syn keyword juliaConstC ControlInputMaxsEnum
++syn keyword juliaConstC ControlInputMinsEnum
++syn keyword juliaConstC ControlInputValuesEnum
++syn keyword juliaConstC CrouzeixRaviartEnum
++syn keyword juliaConstC CuffeyEnum
++syn keyword juliaConstC CuffeyTemperateEnum
++syn keyword juliaConstC DamageEvolutionAnalysisEnum
++syn keyword juliaConstC DamageEvolutionSolutionEnum
++syn keyword juliaConstC DataSetEnum
++syn keyword juliaConstC DataSetParamEnum
++syn keyword juliaConstC DatasetInputEnum
++syn keyword juliaConstC DefaultAnalysisEnum
++syn keyword juliaConstC DefaultCalvingEnum
++syn keyword juliaConstC DenseEnum
++syn keyword juliaConstC DependentObjectEnum
++syn keyword juliaConstC DepthAverageAnalysisEnum
++syn keyword juliaConstC DeviatoricStressErrorEstimatorEnum
++syn keyword juliaConstC DivergenceEnum
++syn keyword juliaConstC Domain3DsurfaceEnum
++syn keyword juliaConstC DoubleArrayInputEnum
++syn keyword juliaConstC ArrayInputEnum
++syn keyword juliaConstC IntArrayInputEnum
++syn keyword juliaConstC DoubleExternalResultEnum
++syn keyword juliaConstC DoubleMatArrayParamEnum
++syn keyword juliaConstC DoubleMatExternalResultEnum
++syn keyword juliaConstC DoubleMatParamEnum
++syn keyword juliaConstC DoubleParamEnum
++syn keyword juliaConstC DoubleVecParamEnum
++syn keyword juliaConstC ElementEnum
++syn keyword juliaConstC ElementHookEnum
++syn keyword juliaConstC ElementSIdEnum
++syn keyword juliaConstC EnthalpyAnalysisEnum
++syn keyword juliaConstC EsaAnalysisEnum
++syn keyword juliaConstC EsaSolutionEnum
++syn keyword juliaConstC EsaTransitionsEnum
++syn keyword juliaConstC ExternalResultEnum
++syn keyword juliaConstC ExtrapolationAnalysisEnum
++syn keyword juliaConstC ExtrudeFromBaseAnalysisEnum
++syn keyword juliaConstC ExtrudeFromTopAnalysisEnum
++syn keyword juliaConstC FSApproximationEnum
++syn keyword juliaConstC FSSolverEnum
++syn keyword juliaConstC FSpressureEnum
++syn keyword juliaConstC FSvelocityEnum
++syn keyword juliaConstC FemModelEnum
++syn keyword juliaConstC FileParamEnum
++syn keyword juliaConstC FixedTimesteppingEnum
++syn keyword juliaConstC FloatingAreaEnum
++syn keyword juliaConstC FloatingAreaScaledEnum
++syn keyword juliaConstC FloatingMeltRateEnum
++syn keyword juliaConstC FreeEnum
++syn keyword juliaConstC FreeSurfaceBaseAnalysisEnum
++syn keyword juliaConstC FreeSurfaceTopAnalysisEnum
++syn keyword juliaConstC FrontalForcingsDefaultEnum
++syn keyword juliaConstC FrontalForcingsRignotEnum
++syn keyword juliaConstC FrontalForcingsRignotAutoregressionEnum
++syn keyword juliaConstC FsetEnum
++syn keyword juliaConstC FullMeltOnPartiallyFloatingEnum
++syn keyword juliaConstC GLheightadvectionAnalysisEnum
++syn keyword juliaConstC GaussPentaEnum
++syn keyword juliaConstC GaussSegEnum
++syn keyword juliaConstC GaussTetraEnum
++syn keyword juliaConstC GaussTriaEnum
++syn keyword juliaConstC GenericOptionEnum
++syn keyword juliaConstC GenericParamEnum
++syn keyword juliaConstC GenericExternalResultEnum
++syn keyword juliaConstC Gradient1Enum
++syn keyword juliaConstC Gradient2Enum
++syn keyword juliaConstC Gradient3Enum
++syn keyword juliaConstC Gradient4Enum
++syn keyword juliaConstC GroundedAreaEnum
++syn keyword juliaConstC GroundedAreaScaledEnum
++syn keyword juliaConstC GroundingOnlyEnum
++syn keyword juliaConstC GroundinglineMassFluxEnum
++syn keyword juliaConstC GsetEnum
++syn keyword juliaConstC GslEnum
++syn keyword juliaConstC HOApproximationEnum
++syn keyword juliaConstC HOFSApproximationEnum
++syn keyword juliaConstC HookEnum
++syn keyword juliaConstC HydrologyDCEfficientAnalysisEnum
++syn keyword juliaConstC HydrologyDCInefficientAnalysisEnum
++syn keyword juliaConstC HydrologyGlaDSAnalysisEnum
++syn keyword juliaConstC HydrologyGlaDSEnum
++syn keyword juliaConstC HydrologyPismAnalysisEnum
++syn keyword juliaConstC HydrologyShaktiAnalysisEnum
++syn keyword juliaConstC HydrologyShreveAnalysisEnum
++syn keyword juliaConstC HydrologySolutionEnum
++syn keyword juliaConstC HydrologydcEnum
++syn keyword juliaConstC HydrologypismEnum
++syn keyword juliaConstC HydrologyshaktiEnum
++syn keyword juliaConstC HydrologyshreveEnum
++syn keyword juliaConstC IceMassEnum
++syn keyword juliaConstC IceMassScaledEnum
++syn keyword juliaConstC IceVolumeAboveFloatationEnum
++syn keyword juliaConstC IceVolumeAboveFloatationScaledEnum
++syn keyword juliaConstC IceVolumeEnum
++syn keyword juliaConstC IceVolumeScaledEnum
++syn keyword juliaConstC IcefrontMassFluxEnum
++syn keyword juliaConstC IcefrontMassFluxLevelsetEnum
++syn keyword juliaConstC IncrementalEnum
++syn keyword juliaConstC IndexedEnum
++syn keyword juliaConstC IntExternalResultEnum
++syn keyword juliaConstC ElementInputEnum
++syn keyword juliaConstC IntMatExternalResultEnum
++syn keyword juliaConstC IntMatParamEnum
++syn keyword juliaConstC IntParamEnum
++syn keyword juliaConstC IntVecParamEnum
++syn keyword juliaConstC InputsEnum
++syn keyword juliaConstC InternalEnum
++syn keyword juliaConstC IntersectEnum
++syn keyword juliaConstC InversionVzObsEnum
++syn keyword juliaConstC JEnum
++syn keyword juliaConstC L1L2ApproximationEnum
++syn keyword juliaConstC MOLHOApproximationEnum
++syn keyword juliaConstC L2ProjectionBaseAnalysisEnum
++syn keyword juliaConstC L2ProjectionEPLAnalysisEnum
++syn keyword juliaConstC LACrouzeixRaviartEnum
++syn keyword juliaConstC LATaylorHoodEnum
++syn keyword juliaConstC LambdaSEnum
++syn keyword juliaConstC LevelsetAnalysisEnum
++syn keyword juliaConstC LevelsetfunctionPicardEnum
++syn keyword juliaConstC LinearFloatingMeltRateEnum
++syn keyword juliaConstC LliboutryDuvalEnum
++syn keyword juliaConstC LoadsEnum
++syn keyword juliaConstC LoveAnalysisEnum
++syn keyword juliaConstC LoveHfEnum
++syn keyword juliaConstC LoveHtEnum
++syn keyword juliaConstC LoveKernelsImagEnum
++syn keyword juliaConstC LoveKernelsRealEnum
++syn keyword juliaConstC LoveKfEnum
++syn keyword juliaConstC LoveKtEnum
++syn keyword juliaConstC LoveLfEnum
++syn keyword juliaConstC LoveLtEnum
++syn keyword juliaConstC LoveTidalHtEnum
++syn keyword juliaConstC LoveTidalKtEnum
++syn keyword juliaConstC LoveTidalLtEnum
++syn keyword juliaConstC LovePMTF1tEnum
++syn keyword juliaConstC LovePMTF2tEnum
++syn keyword juliaConstC LoveYiEnum
++syn keyword juliaConstC LoveRhsEnum
++syn keyword juliaConstC LoveSolutionEnum
++syn keyword juliaConstC MINIEnum
++syn keyword juliaConstC MINIcondensedEnum
++syn keyword juliaConstC MantlePlumeGeothermalFluxEnum
++syn keyword juliaConstC MassFluxEnum
++syn keyword juliaConstC MassconEnum
++syn keyword juliaConstC MassconaxpbyEnum
++syn keyword juliaConstC MassfluxatgateEnum
++syn keyword juliaConstC MasstransportAnalysisEnum
++syn keyword juliaConstC MasstransportSolutionEnum
++syn keyword juliaConstC MatdamageiceEnum
++syn keyword juliaConstC MatenhancediceEnum
++syn keyword juliaConstC MaterialsEnum
++syn keyword juliaConstC MatestarEnum
++syn keyword juliaConstC MaticeEnum
++syn keyword juliaConstC MatlithoEnum
++syn keyword juliaConstC MathydroEnum
++syn keyword juliaConstC MatrixParamEnum
++syn keyword juliaConstC MaxAbsVxEnum
++syn keyword juliaConstC MaxAbsVyEnum
++syn keyword juliaConstC MaxAbsVzEnum
++syn keyword juliaConstC MaxDivergenceEnum
++syn keyword juliaConstC MaxVelEnum
++syn keyword juliaConstC MaxVxEnum
++syn keyword juliaConstC MaxVyEnum
++syn keyword juliaConstC MaxVzEnum
++syn keyword juliaConstC MelangeEnum
++syn keyword juliaConstC MeltingAnalysisEnum
++syn keyword juliaConstC MeshElementsEnum
++syn keyword juliaConstC MeshXEnum
++syn keyword juliaConstC MeshYEnum
++syn keyword juliaConstC MinVelEnum
++syn keyword juliaConstC MinVxEnum
++syn keyword juliaConstC MinVyEnum
++syn keyword juliaConstC MinVzEnum
++syn keyword juliaConstC MismipFloatingMeltRateEnum
++syn keyword juliaConstC MoulinEnum
++syn keyword juliaConstC MpiDenseEnum
++syn keyword juliaConstC MpiEnum
++syn keyword juliaConstC MpiSparseEnum
++syn keyword juliaConstC MumpsEnum
++syn keyword juliaConstC NoFrictionOnPartiallyFloatingEnum
++syn keyword juliaConstC NoMeltOnPartiallyFloatingEnum
++syn keyword juliaConstC NodalEnum
++syn keyword juliaConstC NodalvalueEnum
++syn keyword juliaConstC NodeSIdEnum
++syn keyword juliaConstC NoneApproximationEnum
++syn keyword juliaConstC NoneEnum
++syn keyword juliaConstC NumberedcostfunctionEnum
++syn keyword juliaConstC NyeCO2Enum
++syn keyword juliaConstC NyeH2OEnum
++syn keyword juliaConstC NumericalfluxEnum
++syn keyword juliaConstC OceantransportAnalysisEnum
++syn keyword juliaConstC OceantransportSolutionEnum
++syn keyword juliaConstC OldGradientEnum
++syn keyword juliaConstC OneLayerP4zEnum
++syn keyword juliaConstC OpenEnum
++syn keyword juliaConstC OptionEnum
++syn keyword juliaConstC ParamEnum
++syn keyword juliaConstC ParametersEnum
++syn keyword juliaConstC P0ArrayEnum
++syn keyword juliaConstC P0DGEnum
++syn keyword juliaConstC P1DGEnum
++syn keyword juliaConstC P1P1Enum
++syn keyword juliaConstC P1P1GLSEnum
++syn keyword juliaConstC P1bubbleEnum
++syn keyword juliaConstC P1bubblecondensedEnum
++syn keyword juliaConstC P1xP2Enum
++syn keyword juliaConstC P1xP3Enum
++syn keyword juliaConstC P1xP4Enum
++syn keyword juliaConstC P2Enum
++syn keyword juliaConstC P2bubbleEnum
++syn keyword juliaConstC P2bubblecondensedEnum
++syn keyword juliaConstC P2xP1Enum
++syn keyword juliaConstC P2xP4Enum
++syn keyword juliaConstC PatersonEnum
++syn keyword juliaConstC PengridEnum
++syn keyword juliaConstC PenpairEnum
++syn keyword juliaConstC PentaEnum
++syn keyword juliaConstC PentaInputEnum
++syn keyword juliaConstC ProfilerEnum
++syn keyword juliaConstC ProfilingCurrentFlopsEnum
++syn keyword juliaConstC ProfilingCurrentMemEnum
++syn keyword juliaConstC ProfilingSolutionTimeEnum
++syn keyword juliaConstC RegionaloutputEnum
++syn keyword juliaConstC RegularEnum
++syn keyword juliaConstC RecoveryAnalysisEnum
++syn keyword juliaConstC RiftfrontEnum
++syn keyword juliaConstC SamplingAnalysisEnum
++syn keyword juliaConstC SamplingSolutionEnum
++syn keyword juliaConstC SIAApproximationEnum
++syn keyword juliaConstC SMBautoregressionEnum
++syn keyword juliaConstC SMBcomponentsEnum
++syn keyword juliaConstC SMBd18opddEnum
++syn keyword juliaConstC SMBforcingEnum
++syn keyword juliaConstC SMBgcmEnum
++syn keyword juliaConstC SMBgembEnum
++syn keyword juliaConstC SMBgradientsEnum
++syn keyword juliaConstC SMBgradientscomponentsEnum
++syn keyword juliaConstC SMBgradientselaEnum
++syn keyword juliaConstC SMBhenningEnum
++syn keyword juliaConstC SMBmeltcomponentsEnum
++syn keyword juliaConstC SMBpddEnum
++syn keyword juliaConstC SMBpddSicopolisEnum
++syn keyword juliaConstC SMBsemicEnum
++syn keyword juliaConstC SSAApproximationEnum
++syn keyword juliaConstC SSAFSApproximationEnum
++syn keyword juliaConstC SSAHOApproximationEnum
++syn keyword juliaConstC ScaledEnum
++syn keyword juliaConstC SealevelAbsoluteEnum
++syn keyword juliaConstC SealevelEmotionEnum
++syn keyword juliaConstC SealevelchangePolarMotionXEnum
++syn keyword juliaConstC SealevelchangePolarMotionYEnum
++syn keyword juliaConstC SealevelchangePolarMotionZEnum
++syn keyword juliaConstC SealevelchangePolarMotionEnum
++syn keyword juliaConstC SealevelNmotionEnum
++syn keyword juliaConstC SealevelUmotionEnum
++syn keyword juliaConstC SealevelchangeAnalysisEnum
++syn keyword juliaConstC SegEnum
++syn keyword juliaConstC SegInputEnum
++syn keyword juliaConstC SegmentEnum
++syn keyword juliaConstC SegmentRiftfrontEnum
++syn keyword juliaConstC SeparateEnum
++syn keyword juliaConstC SeqEnum
++syn keyword juliaConstC SmbAnalysisEnum
++syn keyword juliaConstC SmbSolutionEnum
++syn keyword juliaConstC SmoothAnalysisEnum
++syn keyword juliaConstC SoftMigrationEnum
++syn keyword juliaConstC SpatialLinearFloatingMeltRateEnum
++syn keyword juliaConstC SpcDynamicEnum
++syn keyword juliaConstC SpcStaticEnum
++syn keyword juliaConstC SpcTransientEnum
++syn keyword juliaConstC SsetEnum
++syn keyword juliaConstC StatisticsSolutionEnum
++syn keyword juliaConstC SteadystateSolutionEnum
++syn keyword juliaConstC StressIntensityFactorEnum
++syn keyword juliaConstC StressbalanceAnalysisEnum
++syn keyword juliaConstC StressbalanceConvergenceNumStepsEnum
++syn keyword juliaConstC StressbalanceSIAAnalysisEnum
++syn keyword juliaConstC StressbalanceSolutionEnum
++syn keyword juliaConstC StressbalanceVerticalAnalysisEnum
++syn keyword juliaConstC StringArrayParamEnum
++syn keyword juliaConstC StringExternalResultEnum
++syn keyword juliaConstC StringParamEnum
++syn keyword juliaConstC SubelementFriction1Enum
++syn keyword juliaConstC SubelementFriction2Enum
++syn keyword juliaConstC SubelementMelt1Enum
++syn keyword juliaConstC SubelementMelt2Enum
++syn keyword juliaConstC SubelementMigrationEnum
++syn keyword juliaConstC SurfaceSlopeSolutionEnum
++syn keyword juliaConstC TaylorHoodEnum
++syn keyword juliaConstC TetraEnum
++syn keyword juliaConstC TetraInputEnum
++syn keyword juliaConstC ThermalAnalysisEnum
++syn keyword juliaConstC ThermalSolutionEnum
++syn keyword juliaConstC ThicknessErrorEstimatorEnum
++syn keyword juliaConstC TotalCalvingFluxLevelsetEnum
++syn keyword juliaConstC TotalCalvingMeltingFluxLevelsetEnum
++syn keyword juliaConstC TotalFloatingBmbEnum
++syn keyword juliaConstC TotalFloatingBmbScaledEnum
++syn keyword juliaConstC TotalGroundedBmbEnum
++syn keyword juliaConstC TotalGroundedBmbScaledEnum
++syn keyword juliaConstC TotalSmbEnum
++syn keyword juliaConstC TotalSmbScaledEnum
++syn keyword juliaConstC TransientArrayParamEnum
++syn keyword juliaConstC TransientInputEnum
++syn keyword juliaConstC TransientParamEnum
++syn keyword juliaConstC TransientSolutionEnum
++syn keyword juliaConstC TriaEnum
++syn keyword juliaConstC TriaInputEnum
++syn keyword juliaConstC UzawaPressureAnalysisEnum
++syn keyword juliaConstC VectorParamEnum
++syn keyword juliaConstC VertexEnum
++syn keyword juliaConstC VertexLIdEnum
++syn keyword juliaConstC VertexPIdEnum
++syn keyword juliaConstC VertexSIdEnum
++syn keyword juliaConstC VerticesEnum
++syn keyword juliaConstC ViscousHeatingEnum
++syn keyword juliaConstC WaterEnum
++syn keyword juliaConstC XTaylorHoodEnum
++syn keyword juliaConstC XYEnum
++syn keyword juliaConstC XYZEnum
++syn keyword juliaConstC BalancethicknessD0Enum
++syn keyword juliaConstC BalancethicknessDiffusionCoefficientEnum
++syn keyword juliaConstC BilinearInterpEnum
++syn keyword juliaConstC CalvingdevCoeffEnum
++syn keyword juliaConstC DeviatoricStressEnum
++syn keyword juliaConstC EtaAbsGradientEnum
++syn keyword juliaConstC MeshZEnum
++syn keyword juliaConstC NearestInterpEnum
++syn keyword juliaConstC OutputdefinitionListEnum
++syn keyword juliaConstC SealevelObsEnum
++syn keyword juliaConstC SealevelWeightsEnum
++syn keyword juliaConstC StrainRateEnum
++syn keyword juliaConstC StressTensorEnum
++syn keyword juliaConstC StressbalanceViscosityOvershootEnum
++syn keyword juliaConstC SubelementMigration4Enum
++syn keyword juliaConstC TimesteppingTimeAdaptEnum
++syn keyword juliaConstC TriangleInterpEnum
++syn keyword juliaConstC MaximumNumberOfDefinitionsEnum
++"ISSM Enums end
++syn keyword juliaConstC ParametersSTARTEnum
++syn keyword juliaConstC AdolcParamEnum
++syn keyword juliaConstC AmrDeviatoricErrorGroupThresholdEnum
++syn keyword juliaConstC AmrDeviatoricErrorMaximumEnum
++syn keyword juliaConstC AmrDeviatoricErrorResolutionEnum
++syn keyword juliaConstC AmrDeviatoricErrorThresholdEnum
++syn keyword juliaConstC AmrErrEnum
++syn keyword juliaConstC AmrFieldEnum
++syn keyword juliaConstC AmrGradationEnum
++syn keyword juliaConstC AmrGroundingLineDistanceEnum
++syn keyword juliaConstC AmrGroundingLineResolutionEnum
++syn keyword juliaConstC AmrHmaxEnum
++syn keyword juliaConstC AmrHminEnum
++syn keyword juliaConstC AmrIceFrontDistanceEnum
++syn keyword juliaConstC AmrIceFrontResolutionEnum
++syn keyword juliaConstC AmrKeepMetricEnum
++syn keyword juliaConstC AmrLagEnum
++syn keyword juliaConstC AmrLevelMaxEnum
++syn keyword juliaConstC AmrRestartEnum
++syn keyword juliaConstC AmrThicknessErrorGroupThresholdEnum
++syn keyword juliaConstC AmrThicknessErrorMaximumEnum
++syn keyword juliaConstC AmrThicknessErrorResolutionEnum
++syn keyword juliaConstC AmrThicknessErrorThresholdEnum
++syn keyword juliaConstC AmrTypeEnum
++syn keyword juliaConstC AnalysisCounterEnum
++syn keyword juliaConstC AnalysisTypeEnum
++syn keyword juliaConstC AugmentedLagrangianREnum
++syn keyword juliaConstC AugmentedLagrangianRholambdaEnum
++syn keyword juliaConstC AugmentedLagrangianRhopEnum
++syn keyword juliaConstC AugmentedLagrangianRlambdaEnum
++syn keyword juliaConstC AugmentedLagrangianThetaEnum
++syn keyword juliaConstC AutodiffCbufsizeEnum
++syn keyword juliaConstC AutodiffDependentObjectsEnum
++syn keyword juliaConstC AutodiffDriverEnum
++syn keyword juliaConstC AutodiffFosForwardIndexEnum
++syn keyword juliaConstC AutodiffFosReverseIndexEnum
++syn keyword juliaConstC AutodiffFovForwardIndicesEnum
++syn keyword juliaConstC AutodiffGcTriggerMaxSizeEnum
++syn keyword juliaConstC AutodiffGcTriggerRatioEnum
++syn keyword juliaConstC AutodiffIsautodiffEnum
++syn keyword juliaConstC AutodiffLbufsizeEnum
++syn keyword juliaConstC AutodiffNumDependentsEnum
++syn keyword juliaConstC AutodiffNumIndependentsEnum
++syn keyword juliaConstC AutodiffObufsizeEnum
++syn keyword juliaConstC AutodiffTapeAllocEnum
++syn keyword juliaConstC AutodiffTbufsizeEnum
++syn keyword juliaConstC AutodiffXpEnum
++syn keyword juliaConstC BalancethicknessStabilizationEnum
++syn keyword juliaConstC BarystaticContributionsEnum
++syn keyword juliaConstC BasalforcingsAutoregressionInitialTimeEnum
++syn keyword juliaConstC BasalforcingsAutoregressionTimestepEnum
++syn keyword juliaConstC BasalforcingsAutoregressiveOrderEnum
++syn keyword juliaConstC BasalforcingsBeta0Enum
++syn keyword juliaConstC BasalforcingsBeta1Enum
++syn keyword juliaConstC BasalforcingsBottomplumedepthEnum
++syn keyword juliaConstC BasalforcingsCrustthicknessEnum
++syn keyword juliaConstC BasalforcingsDeepwaterElevationEnum
++syn keyword juliaConstC BasalforcingsDeepwaterMeltingRateEnum
++syn keyword juliaConstC BasalforcingsDtbgEnum
++syn keyword juliaConstC BasalforcingsEnum
++syn keyword juliaConstC BasalforcingsIsmip6AverageTfEnum
++syn keyword juliaConstC BasalforcingsIsmip6BasinAreaEnum
++syn keyword juliaConstC BasalforcingsIsmip6DeltaTEnum
++syn keyword juliaConstC BasalforcingsIsmip6Gamma0Enum
++syn keyword juliaConstC BasalforcingsIsmip6IsLocalEnum
++syn keyword juliaConstC BasalforcingsIsmip6NumBasinsEnum
++syn keyword juliaConstC BasalforcingsIsmip6TfDepthsEnum
++syn keyword juliaConstC BasalforcingsLinearNumBasinsEnum
++syn keyword juliaConstC BasalforcingsLowercrustheatEnum
++syn keyword juliaConstC BasalforcingsMantleconductivityEnum
++syn keyword juliaConstC BasalforcingsNusseltEnum
++syn keyword juliaConstC BasalforcingsPhiEnum
++syn keyword juliaConstC BasalforcingsPicoAverageOverturningEnum
++syn keyword juliaConstC BasalforcingsPicoAverageSalinityEnum
++syn keyword juliaConstC BasalforcingsPicoAverageTemperatureEnum
++syn keyword juliaConstC BasalforcingsPicoBoxAreaEnum
++syn keyword juliaConstC BasalforcingsPicoFarOceansalinityEnum
++syn keyword juliaConstC BasalforcingsPicoFarOceantemperatureEnum
++syn keyword juliaConstC BasalforcingsPicoGammaTEnum
++syn keyword juliaConstC BasalforcingsPicoIsplumeEnum
++syn keyword juliaConstC BasalforcingsPicoMaxboxcountEnum
++syn keyword juliaConstC BasalforcingsPicoNumBasinsEnum
++syn keyword juliaConstC BasalforcingsPlumeradiusEnum
++syn keyword juliaConstC BasalforcingsPlumexEnum
++syn keyword juliaConstC BasalforcingsPlumeyEnum
++syn keyword juliaConstC BasalforcingsThresholdThicknessEnum
++syn keyword juliaConstC BasalforcingsTopplumedepthEnum
++syn keyword juliaConstC BasalforcingsUppercrustheatEnum
++syn keyword juliaConstC BasalforcingsUppercrustthicknessEnum
++syn keyword juliaConstC BasalforcingsUpperdepthMeltEnum
++syn keyword juliaConstC BasalforcingsUpperwaterElevationEnum
++syn keyword juliaConstC BasalforcingsUpperwaterMeltingRateEnum
++syn keyword juliaConstC CalvingCrevasseDepthEnum
++syn keyword juliaConstC CalvingCrevasseThresholdEnum
++syn keyword juliaConstC CalvingHeightAboveFloatationEnum
++syn keyword juliaConstC CalvingLawEnum
++syn keyword juliaConstC CalvingMinthicknessEnum
++syn keyword juliaConstC CalvingTestSpeedfactorEnum
++syn keyword juliaConstC CalvingTestIndependentRateEnum
++syn keyword juliaConstC CalvingUseParamEnum
++syn keyword juliaConstC CalvingThetaEnum
++syn keyword juliaConstC CalvingAlphaEnum
++syn keyword juliaConstC CalvingXoffsetEnum
++syn keyword juliaConstC CalvingYoffsetEnum
++syn keyword juliaConstC ConfigurationTypeEnum
++syn keyword juliaConstC ConstantsGEnum
++syn keyword juliaConstC ConstantsNewtonGravityEnum
++syn keyword juliaConstC ConstantsReferencetemperatureEnum
++syn keyword juliaConstC ConstantsYtsEnum
++syn keyword juliaConstC ControlInputSizeMEnum
++syn keyword juliaConstC ControlInputSizeNEnum
++syn keyword juliaConstC ControlInputInterpolationEnum
++syn keyword juliaConstC CumBslcEnum
++syn keyword juliaConstC CumBslcIceEnum
++syn keyword juliaConstC CumBslcHydroEnum
++syn keyword juliaConstC CumBslcOceanEnum
++syn keyword juliaConstC CumBslcIcePartitionEnum
++syn keyword juliaConstC CumBslcHydroPartitionEnum
++syn keyword juliaConstC CumBslcOceanPartitionEnum
++syn keyword juliaConstC CumGmtslcEnum
++syn keyword juliaConstC CumGmslcEnum
++syn keyword juliaConstC DamageC1Enum
++syn keyword juliaConstC DamageC2Enum
++syn keyword juliaConstC DamageC3Enum
++syn keyword juliaConstC DamageC4Enum
++syn keyword juliaConstC DamageEnum
++syn keyword juliaConstC DamageEquivStressEnum
++syn keyword juliaConstC DamageEvolutionNumRequestedOutputsEnum
++syn keyword juliaConstC DamageEvolutionRequestedOutputsEnum
++syn keyword juliaConstC DamageHealingEnum
++syn keyword juliaConstC DamageKappaEnum
++syn keyword juliaConstC DamageLawEnum
++syn keyword juliaConstC DamageMaxDamageEnum
++syn keyword juliaConstC DamageStabilizationEnum
++syn keyword juliaConstC DamageStressThresholdEnum
++syn keyword juliaConstC DamageStressUBoundEnum
++syn keyword juliaConstC DebugProfilingEnum
++syn keyword juliaConstC DomainDimensionEnum
++syn keyword juliaConstC DomainTypeEnum
++syn keyword juliaConstC DslModelEnum
++syn keyword juliaConstC DslModelidEnum
++syn keyword juliaConstC DslNummodelsEnum
++syn keyword juliaConstC SolidearthIsExternalEnum
++syn keyword juliaConstC SolidearthExternalNatureEnum
++syn keyword juliaConstC SolidearthExternalModelidEnum
++syn keyword juliaConstC SolidearthExternalNummodelsEnum
++syn keyword juliaConstC SolidearthSettingsComputeBpGrdEnum
++syn keyword juliaConstC EarthIdEnum
++syn keyword juliaConstC ElasticEnum
++syn keyword juliaConstC EplZigZagCounterEnum
++syn keyword juliaConstC EsaHElasticEnum
++syn keyword juliaConstC EsaHemisphereEnum
++syn keyword juliaConstC EsaRequestedOutputsEnum
++syn keyword juliaConstC EsaUElasticEnum
++syn keyword juliaConstC ExtrapolationVariableEnum
++syn keyword juliaConstC FemModelCommEnum
++syn keyword juliaConstC FieldsEnum
++syn keyword juliaConstC FlowequationFeFSEnum
++syn keyword juliaConstC FlowequationIsFSEnum
++syn keyword juliaConstC FlowequationIsHOEnum
++syn keyword juliaConstC FlowequationIsL1L2Enum
++syn keyword juliaConstC FlowequationIsMOLHOEnum
++syn keyword juliaConstC FlowequationIsSIAEnum
++syn keyword juliaConstC FlowequationIsSSAEnum
++syn keyword juliaConstC FlowequationIsNitscheEnum
++syn keyword juliaConstC FeFSNitscheGammaEnum
++syn keyword juliaConstC FrictionCouplingEnum
++syn keyword juliaConstC FrictionDeltaEnum
++syn keyword juliaConstC FrictionEffectivePressureLimitEnum
++syn keyword juliaConstC FrictionFEnum
++syn keyword juliaConstC FrictionGammaEnum
++syn keyword juliaConstC FrictionLawEnum
++syn keyword juliaConstC FrictionPseudoplasticityExponentEnum
++syn keyword juliaConstC FrictionThresholdSpeedEnum
++syn keyword juliaConstC FrictionVoidRatioEnum
++syn keyword juliaConstC FrontalForcingsBasinIcefrontAreaEnum
++syn keyword juliaConstC FrontalForcingsAutoregressionInitialTimeEnum
++syn keyword juliaConstC FrontalForcingsAutoregressionTimestepEnum
++syn keyword juliaConstC FrontalForcingsAutoregressiveOrderEnum
++syn keyword juliaConstC FrontalForcingsBeta0Enum
++syn keyword juliaConstC FrontalForcingsBeta1Enum
++syn keyword juliaConstC FrontalForcingsNumberofBasinsEnum
++syn keyword juliaConstC FrontalForcingsParamEnum
++syn keyword juliaConstC FrontalForcingsPhiEnum
++syn keyword juliaConstC GrdModelEnum
++syn keyword juliaConstC GroundinglineFrictionInterpolationEnum
++syn keyword juliaConstC GroundinglineMeltInterpolationEnum
++syn keyword juliaConstC GroundinglineMigrationEnum
++syn keyword juliaConstC GroundinglineNumRequestedOutputsEnum
++syn keyword juliaConstC GroundinglineRequestedOutputsEnum
++syn keyword juliaConstC HydrologyAveragingEnum
++syn keyword juliaConstC HydrologyCavitySpacingEnum
++syn keyword juliaConstC HydrologyChannelConductivityEnum
++syn keyword juliaConstC HydrologyChannelSheetWidthEnum
++syn keyword juliaConstC HydrologyEnglacialVoidRatioEnum
++syn keyword juliaConstC HydrologyIschannelsEnum
++syn keyword juliaConstC HydrologyMeltFlagEnum
++syn keyword juliaConstC HydrologyModelEnum
++syn keyword juliaConstC HydrologyNumRequestedOutputsEnum
++syn keyword juliaConstC HydrologyPressureMeltCoefficientEnum
++syn keyword juliaConstC HydrologyRelaxationEnum
++syn keyword juliaConstC HydrologyRequestedOutputsEnum
++syn keyword juliaConstC HydrologySedimentKmaxEnum
++syn keyword juliaConstC HydrologyStepsPerStepEnum
++syn keyword juliaConstC HydrologyStorageEnum
++syn keyword juliaConstC HydrologydcEplColapseThicknessEnum
++syn keyword juliaConstC HydrologydcEplConductivityEnum
++syn keyword juliaConstC HydrologydcEplInitialThicknessEnum
++syn keyword juliaConstC HydrologydcEplLayerCompressibilityEnum
++syn keyword juliaConstC HydrologydcEplMaxThicknessEnum
++syn keyword juliaConstC HydrologydcEplPoreWaterMassEnum
++syn keyword juliaConstC HydrologydcEplThickCompEnum
++syn keyword juliaConstC HydrologydcEplflipLockEnum
++syn keyword juliaConstC HydrologydcIsefficientlayerEnum
++syn keyword juliaConstC HydrologydcLeakageFactorEnum
++syn keyword juliaConstC HydrologydcMaxIterEnum
++syn keyword juliaConstC HydrologydcPenaltyFactorEnum
++syn keyword juliaConstC HydrologydcPenaltyLockEnum
++syn keyword juliaConstC HydrologydcRelTolEnum
++syn keyword juliaConstC HydrologydcSedimentlimitEnum
++syn keyword juliaConstC HydrologydcSedimentlimitFlagEnum
++syn keyword juliaConstC HydrologydcSedimentLayerCompressibilityEnum
++syn keyword juliaConstC HydrologydcSedimentPoreWaterMassEnum
++syn keyword juliaConstC HydrologydcSedimentPorosityEnum
++syn keyword juliaConstC HydrologydcSedimentThicknessEnum
++syn keyword juliaConstC HydrologyStepAdaptEnum
++syn keyword juliaConstC HydrologydcTransferFlagEnum
++syn keyword juliaConstC HydrologydcUnconfinedFlagEnum
++syn keyword juliaConstC HydrologyshreveStabilizationEnum
++syn keyword juliaConstC IcecapToEarthCommEnum
++syn keyword juliaConstC IndexEnum
++syn keyword juliaConstC InputFileNameEnum
++syn keyword juliaConstC DirectoryNameEnum
++syn keyword juliaConstC IndicesEnum
++syn keyword juliaConstC InputToDepthaverageInEnum
++syn keyword juliaConstC InputToDepthaverageOutEnum
++syn keyword juliaConstC InputToExtrudeEnum
++syn keyword juliaConstC InputToL2ProjectEnum
++syn keyword juliaConstC InputToSmoothEnum
++syn keyword juliaConstC InversionAlgorithmEnum
++syn keyword juliaConstC InversionControlParametersEnum
++syn keyword juliaConstC InversionControlScalingFactorsEnum
++syn keyword juliaConstC InversionCostFunctionsEnum
++syn keyword juliaConstC InversionDxminEnum
++syn keyword juliaConstC InversionGatolEnum
++syn keyword juliaConstC InversionGradientScalingEnum
++syn keyword juliaConstC InversionGrtolEnum
++syn keyword juliaConstC InversionGttolEnum
++syn keyword juliaConstC InversionIncompleteAdjointEnum
++syn keyword juliaConstC InversionIscontrolEnum
++syn keyword juliaConstC InversionMaxiterEnum
++syn keyword juliaConstC InversionMaxiterPerStepEnum
++syn keyword juliaConstC InversionMaxstepsEnum
++syn keyword juliaConstC InversionNstepsEnum
++syn keyword juliaConstC InversionNumControlParametersEnum
++syn keyword juliaConstC InversionNumCostFunctionsEnum
++syn keyword juliaConstC InversionStepThresholdEnum
++syn keyword juliaConstC InversionTypeEnum
++syn keyword juliaConstC IvinsEnum
++syn keyword juliaConstC IsSlcCouplingEnum
++syn keyword juliaConstC LevelsetKillIcebergsEnum
++syn keyword juliaConstC LevelsetReinitFrequencyEnum
++syn keyword juliaConstC LevelsetStabilizationEnum
++syn keyword juliaConstC LockFileNameEnum
++syn keyword juliaConstC LoveAllowLayerDeletionEnum
++syn keyword juliaConstC LoveChandlerWobbleEnum
++syn keyword juliaConstC LoveCoreMantleBoundaryEnum
++syn keyword juliaConstC LoveEarthMassEnum
++syn keyword juliaConstC LoveForcingTypeEnum
++syn keyword juliaConstC LoveFrequenciesEnum
++syn keyword juliaConstC LoveIsTemporalEnum
++syn keyword juliaConstC LoveG0Enum
++syn keyword juliaConstC LoveGravitationalConstantEnum
++syn keyword juliaConstC LoveInnerCoreBoundaryEnum
++syn keyword juliaConstC LoveComplexComputationEnum
++syn keyword juliaConstC LoveQuadPrecisionEnum
++syn keyword juliaConstC LoveIntStepsPerLayerEnum
++syn keyword juliaConstC LoveMinIntegrationStepsEnum
++syn keyword juliaConstC LoveMaxIntegrationdrEnum
++syn keyword juliaConstC LoveKernelsEnum
++syn keyword juliaConstC LoveMu0Enum
++syn keyword juliaConstC LoveNfreqEnum
++syn keyword juliaConstC LoveNTemporalIterationsEnum
++syn keyword juliaConstC LoveNYiEquationsEnum
++syn keyword juliaConstC LoveR0Enum
++syn keyword juliaConstC LoveShNmaxEnum
++syn keyword juliaConstC LoveShNminEnum
++syn keyword juliaConstC LoveStartingLayerEnum
++syn keyword juliaConstC LoveUnderflowTolEnum
++syn keyword juliaConstC LovePostWidderThresholdEnum
++syn keyword juliaConstC LoveDebugEnum
++syn keyword juliaConstC LoveHypergeomNZEnum
++syn keyword juliaConstC LoveHypergeomNAlphaEnum
++syn keyword juliaConstC MassFluxSegmentsEnum
++syn keyword juliaConstC MassFluxSegmentsPresentEnum
++syn keyword juliaConstC MasstransportHydrostaticAdjustmentEnum
++syn keyword juliaConstC MasstransportIsfreesurfaceEnum
++syn keyword juliaConstC MasstransportMinThicknessEnum
++syn keyword juliaConstC MasstransportNumRequestedOutputsEnum
++syn keyword juliaConstC MasstransportPenaltyFactorEnum
++syn keyword juliaConstC MasstransportRequestedOutputsEnum
++syn keyword juliaConstC MasstransportStabilizationEnum
++syn keyword juliaConstC MaterialsBetaEnum
++syn keyword juliaConstC MaterialsEarthDensityEnum
++syn keyword juliaConstC MaterialsEffectiveconductivityAveragingEnum
++syn keyword juliaConstC MaterialsHeatcapacityEnum
++syn keyword juliaConstC MaterialsLatentheatEnum
++syn keyword juliaConstC MaterialsMeltingpointEnum
++syn keyword juliaConstC MaterialsMixedLayerCapacityEnum
++syn keyword juliaConstC MaterialsMuWaterEnum
++syn keyword juliaConstC MaterialsRheologyLawEnum
++syn keyword juliaConstC MaterialsRhoFreshwaterEnum
++syn keyword juliaConstC MaterialsRhoIceEnum
++syn keyword juliaConstC MaterialsRhoSeawaterEnum
++syn keyword juliaConstC MaterialsTemperateiceconductivityEnum
++syn keyword juliaConstC MaterialsThermalExchangeVelocityEnum
++syn keyword juliaConstC MaterialsThermalconductivityEnum
++syn keyword juliaConstC MeltingOffsetEnum
++syn keyword juliaConstC MeshAverageVertexConnectivityEnum
++syn keyword juliaConstC MeshElementtypeEnum
++syn keyword juliaConstC MeshNumberoflayersEnum
++syn keyword juliaConstC MeshNumberofverticesEnum
++syn keyword juliaConstC MeshNumberofelementsEnum
++syn keyword juliaConstC MigrationMaxEnum
++syn keyword juliaConstC ModelIdEnum
++syn keyword juliaConstC NbinsEnum
++syn keyword juliaConstC NodesEnum
++syn keyword juliaConstC NumModelsEnum
++syn keyword juliaConstC OceanGridNxEnum
++syn keyword juliaConstC OceanGridNyEnum
++syn keyword juliaConstC OceanGridXEnum
++syn keyword juliaConstC OceanGridYEnum
++syn keyword juliaConstC OutputBufferPointerEnum
++syn keyword juliaConstC OutputBufferSizePointerEnum
++syn keyword juliaConstC OutputFileNameEnum
++syn keyword juliaConstC OutputFilePointerEnum
++syn keyword juliaConstC OutputdefinitionEnum
++syn keyword juliaConstC QmuErrNameEnum
++syn keyword juliaConstC QmuInNameEnum
++syn keyword juliaConstC QmuIsdakotaEnum
++syn keyword juliaConstC QmuOutNameEnum
++syn keyword juliaConstC QmuOutputEnum
++syn keyword juliaConstC QmuCurrEvalIdEnum
++syn keyword juliaConstC QmuNsampleEnum
++syn keyword juliaConstC QmuResponsedescriptorsEnum
++syn keyword juliaConstC QmuVariableDescriptorsEnum
++syn keyword juliaConstC QmuVariablePartitionsEnum
++syn keyword juliaConstC QmuVariablePartitionsNpartEnum
++syn keyword juliaConstC QmuVariablePartitionsNtEnum
++syn keyword juliaConstC QmuResponsePartitionsEnum
++syn keyword juliaConstC QmuResponsePartitionsNpartEnum
++syn keyword juliaConstC QmuStatisticsEnum
++syn keyword juliaConstC QmuNumstatisticsEnum
++syn keyword juliaConstC QmuNdirectoriesEnum
++syn keyword juliaConstC QmuNfilesPerDirectoryEnum
++syn keyword juliaConstC QmuStatisticsMethodEnum
++syn keyword juliaConstC QmuMethodsEnum
++syn keyword juliaConstC RestartFileNameEnum
++syn keyword juliaConstC ResultsEnum
++syn keyword juliaConstC RootPathEnum
++syn keyword juliaConstC ModelnameEnum
++syn keyword juliaConstC SamplingAlphaEnum
++syn keyword juliaConstC SamplingNumRequestedOutputsEnum
++syn keyword juliaConstC SamplingRequestedOutputsEnum
++syn keyword juliaConstC SamplingRobinEnum
++syn keyword juliaConstC SamplingSeedEnum
++syn keyword juliaConstC SaveResultsEnum
++syn keyword juliaConstC SolidearthPartitionIceEnum
++syn keyword juliaConstC SolidearthPartitionHydroEnum
++syn keyword juliaConstC SolidearthPartitionOceanEnum
++syn keyword juliaConstC SolidearthNpartIceEnum
++syn keyword juliaConstC SolidearthNpartOceanEnum
++syn keyword juliaConstC SolidearthNpartHydroEnum
++syn keyword juliaConstC SolidearthPlanetRadiusEnum
++syn keyword juliaConstC SolidearthPlanetAreaEnum
++syn keyword juliaConstC SolidearthSettingsAbstolEnum
++syn keyword juliaConstC SolidearthSettingsCrossSectionShapeEnum
++syn keyword juliaConstC SolidearthSettingsElasticEnum
++syn keyword juliaConstC SolidearthSettingsViscousEnum
++syn keyword juliaConstC SolidearthSettingsSatelliteGraviEnum
++syn keyword juliaConstC SolidearthSettingsDegreeAccuracyEnum
++syn keyword juliaConstC SealevelchangeGeometryDoneEnum
++syn keyword juliaConstC SealevelchangeViscousNumStepsEnum
++syn keyword juliaConstC SealevelchangeViscousTimesEnum
++syn keyword juliaConstC SealevelchangeViscousIndexEnum
++syn keyword juliaConstC SealevelchangeViscousPolarMotionEnum
++syn keyword juliaConstC SealevelchangeRunCountEnum
++syn keyword juliaConstC SealevelchangeTransitionsEnum
++syn keyword juliaConstC SealevelchangeRequestedOutputsEnum
++syn keyword juliaConstC RotationalAngularVelocityEnum
++syn keyword juliaConstC RotationalEquatorialMoiEnum
++syn keyword juliaConstC RotationalPolarMoiEnum
++syn keyword juliaConstC LovePolarMotionTransferFunctionColinearEnum
++syn keyword juliaConstC LovePolarMotionTransferFunctionOrthogonalEnum
++syn keyword juliaConstC TidalLoveHEnum
++syn keyword juliaConstC TidalLoveKEnum
++syn keyword juliaConstC TidalLoveLEnum
++syn keyword juliaConstC TidalLoveK2SecularEnum
++syn keyword juliaConstC LoadLoveHEnum
++syn keyword juliaConstC LoadLoveKEnum
++syn keyword juliaConstC LoadLoveLEnum
++syn keyword juliaConstC LoveTimeFreqEnum
++syn keyword juliaConstC LoveIsTimeEnum
++syn keyword juliaConstC LoveHypergeomZEnum
++syn keyword juliaConstC LoveHypergeomTable1Enum
++syn keyword juliaConstC LoveHypergeomTable2Enum
++syn keyword juliaConstC SealevelchangeGSelfAttractionEnum
++syn keyword juliaConstC SealevelchangeGViscoElasticEnum
++syn keyword juliaConstC SealevelchangeUViscoElasticEnum
++syn keyword juliaConstC SealevelchangeHViscoElasticEnum
++syn keyword juliaConstC SealevelchangePolarMotionTransferFunctionColinearEnum
++syn keyword juliaConstC SealevelchangePolarMotionTransferFunctionOrthogonalEnum
++syn keyword juliaConstC SealevelchangePolarMotionTransferFunctionZEnum
++syn keyword juliaConstC SealevelchangeTidalK2Enum
++syn keyword juliaConstC SealevelchangeTidalH2Enum
++syn keyword juliaConstC SealevelchangeTidalL2Enum
++syn keyword juliaConstC SolidearthSettingsSealevelLoadingEnum
++syn keyword juliaConstC SolidearthSettingsGRDEnum
++syn keyword juliaConstC SolidearthSettingsRunFrequencyEnum
++syn keyword juliaConstC SolidearthSettingsTimeAccEnum
++syn keyword juliaConstC SolidearthSettingsHorizEnum
++syn keyword juliaConstC SolidearthSettingsMaxiterEnum
++syn keyword juliaConstC SolidearthSettingsGrdOceanEnum
++syn keyword juliaConstC SolidearthSettingsOceanAreaScalingEnum
++syn keyword juliaConstC StochasticForcingCovarianceEnum
++syn keyword juliaConstC StochasticForcingDefaultDimensionEnum
++syn keyword juliaConstC StochasticForcingDimensionsEnum
++syn keyword juliaConstC StochasticForcingFieldsEnum
++syn keyword juliaConstC StochasticForcingIsEffectivePressureEnum
++syn keyword juliaConstC StochasticForcingIsStochasticForcingEnum
++syn keyword juliaConstC StochasticForcingIsWaterPressureEnum
++syn keyword juliaConstC StochasticForcingNoisetermsEnum
++syn keyword juliaConstC StochasticForcingNumFieldsEnum
++syn keyword juliaConstC StochasticForcingRandomflagEnum
++syn keyword juliaConstC StochasticForcingTimestepEnum
++syn keyword juliaConstC SolidearthSettingsReltolEnum
++syn keyword juliaConstC SolidearthSettingsSelfAttractionEnum
++syn keyword juliaConstC SolidearthSettingsRotationEnum
++syn keyword juliaConstC SolidearthSettingsMaxSHCoeffEnum
++syn keyword juliaConstC SettingsIoGatherEnum
++syn keyword juliaConstC SettingsNumResultsOnNodesEnum
++syn keyword juliaConstC SettingsOutputFrequencyEnum
++syn keyword juliaConstC SettingsCheckpointFrequencyEnum
++syn keyword juliaConstC SettingsResultsOnNodesEnum
++syn keyword juliaConstC SettingsSbCouplingFrequencyEnum
++syn keyword juliaConstC SettingsSolverResidueThresholdEnum
++syn keyword juliaConstC SettingsWaitonlockEnum
++syn keyword juliaConstC SmbAIceEnum
++syn keyword juliaConstC SmbAIdxEnum
++syn keyword juliaConstC SmbASnowEnum
++syn keyword juliaConstC SmbAccualtiEnum
++syn keyword juliaConstC SmbAccugradEnum
++syn keyword juliaConstC SmbAccurefEnum
++syn keyword juliaConstC SmbAdThreshEnum
++syn keyword juliaConstC SmbAutoregressionInitialTimeEnum
++syn keyword juliaConstC SmbAutoregressionTimestepEnum
++syn keyword juliaConstC SmbAutoregressiveOrderEnum
++syn keyword juliaConstC SmbAveragingEnum
++syn keyword juliaConstC SmbBeta0Enum
++syn keyword juliaConstC SmbBeta1Enum
++syn keyword juliaConstC SmbDesfacEnum
++syn keyword juliaConstC SmbDpermilEnum
++syn keyword juliaConstC SmbDsnowIdxEnum
++syn keyword juliaConstC SmbElevationBinsEnum
++syn keyword juliaConstC SmbCldFracEnum
++syn keyword juliaConstC SmbDelta18oEnum
++syn keyword juliaConstC SmbDelta18oSurfaceEnum
++syn keyword juliaConstC SmbDenIdxEnum
++syn keyword juliaConstC SmbDtEnum
++syn keyword juliaConstC SmbEnum
++syn keyword juliaConstC SmbEIdxEnum
++syn keyword juliaConstC SmbFEnum
++syn keyword juliaConstC SmbInitDensityScalingEnum
++syn keyword juliaConstC SmbIsaccumulationEnum
++syn keyword juliaConstC SmbIsalbedoEnum
++syn keyword juliaConstC SmbIsconstrainsurfaceTEnum
++syn keyword juliaConstC SmbIsd18opdEnum
++syn keyword juliaConstC SmbIsdelta18oEnum
++syn keyword juliaConstC SmbIsdensificationEnum
++syn keyword juliaConstC SmbIsdeltaLWupEnum
++syn keyword juliaConstC SmbIsfirnwarmingEnum
++syn keyword juliaConstC SmbIsgraingrowthEnum
++syn keyword juliaConstC SmbIsmeltEnum
++syn keyword juliaConstC SmbIsmungsmEnum
++syn keyword juliaConstC SmbIsprecipscaledEnum
++syn keyword juliaConstC SmbIssetpddfacEnum
++syn keyword juliaConstC SmbIsshortwaveEnum
++syn keyword juliaConstC SmbIstemperaturescaledEnum
++syn keyword juliaConstC SmbIsthermalEnum
++syn keyword juliaConstC SmbIsturbulentfluxEnum
++syn keyword juliaConstC SmbKEnum
++syn keyword juliaConstC SmbLapseRatesEnum
++syn keyword juliaConstC SmbNumBasinsEnum
++syn keyword juliaConstC SmbNumElevationBinsEnum
++syn keyword juliaConstC SmbNumRequestedOutputsEnum
++syn keyword juliaConstC SmbPfacEnum
++syn keyword juliaConstC SmbPhiEnum
++syn keyword juliaConstC SmbRdlEnum
++syn keyword juliaConstC SmbRefElevationEnum
++syn keyword juliaConstC SmbRequestedOutputsEnum
++syn keyword juliaConstC SmbRlapsEnum
++syn keyword juliaConstC SmbRlapslgmEnum
++syn keyword juliaConstC SmbRunoffaltiEnum
++syn keyword juliaConstC SmbRunoffgradEnum
++syn keyword juliaConstC SmbRunoffrefEnum
++syn keyword juliaConstC SmbSealevEnum
++syn keyword juliaConstC SmbStepsPerStepEnum
++syn keyword juliaConstC SmbSwIdxEnum
++syn keyword juliaConstC SmbT0dryEnum
++syn keyword juliaConstC SmbT0wetEnum
++syn keyword juliaConstC SmbTeThreshEnum
++syn keyword juliaConstC SmbTdiffEnum
++syn keyword juliaConstC SmbThermoDeltaTScalingEnum
++syn keyword juliaConstC SmbTemperaturesReconstructedYearsEnum
++syn keyword juliaConstC SmbPrecipitationsReconstructedYearsEnum
++syn keyword juliaConstC SmoothThicknessMultiplierEnum
++syn keyword juliaConstC SolutionTypeEnum
++syn keyword juliaConstC SteadystateMaxiterEnum
++syn keyword juliaConstC SteadystateNumRequestedOutputsEnum
++syn keyword juliaConstC SteadystateReltolEnum
++syn keyword juliaConstC SteadystateRequestedOutputsEnum
++syn keyword juliaConstC StepEnum
++syn keyword juliaConstC StepsEnum
++syn keyword juliaConstC StressbalanceAbstolEnum
++syn keyword juliaConstC StressbalanceFSreconditioningEnum
++syn keyword juliaConstC StressbalanceIsnewtonEnum
++syn keyword juliaConstC StressbalanceMaxiterEnum
++syn keyword juliaConstC StressbalanceNumRequestedOutputsEnum
++syn keyword juliaConstC StressbalancePenaltyFactorEnum
++syn keyword juliaConstC StressbalanceReltolEnum
++syn keyword juliaConstC StressbalanceRequestedOutputsEnum
++syn keyword juliaConstC StressbalanceRestolEnum
++syn keyword juliaConstC StressbalanceRiftPenaltyThresholdEnum
++syn keyword juliaConstC StressbalanceShelfDampeningEnum
++syn keyword juliaConstC ThermalIsdrainicecolumnEnum
++syn keyword juliaConstC ThermalIsdynamicbasalspcEnum
++syn keyword juliaConstC ThermalIsenthalpyEnum
++syn keyword juliaConstC ThermalMaxiterEnum
++syn keyword juliaConstC ThermalNumRequestedOutputsEnum
++syn keyword juliaConstC ThermalPenaltyFactorEnum
++syn keyword juliaConstC ThermalPenaltyLockEnum
++syn keyword juliaConstC ThermalPenaltyThresholdEnum
++syn keyword juliaConstC ThermalReltolEnum
++syn keyword juliaConstC ThermalRequestedOutputsEnum
++syn keyword juliaConstC ThermalStabilizationEnum
++syn keyword juliaConstC ThermalWatercolumnUpperlimitEnum
++syn keyword juliaConstC TimeEnum
++syn keyword juliaConstC TimesteppingCflCoefficientEnum
++syn keyword juliaConstC TimesteppingCouplingTimeEnum
++syn keyword juliaConstC TimesteppingFinalTimeEnum
++syn keyword juliaConstC TimesteppingInterpForcingEnum
++syn keyword juliaConstC TimesteppingCycleForcingEnum
++syn keyword juliaConstC TimesteppingStartTimeEnum
++syn keyword juliaConstC TimesteppingTimeStepEnum
++syn keyword juliaConstC TimesteppingTimeStepMaxEnum
++syn keyword juliaConstC TimesteppingTimeStepMinEnum
++syn keyword juliaConstC TimesteppingTypeEnum
++syn keyword juliaConstC ToMITgcmCommEnum
++syn keyword juliaConstC ToolkitsFileNameEnum
++syn keyword juliaConstC ToolkitsOptionsAnalysesEnum
++syn keyword juliaConstC ToolkitsOptionsStringsEnum
++syn keyword juliaConstC ToolkitsTypesEnum
++syn keyword juliaConstC TransientAmrFrequencyEnum
++syn keyword juliaConstC TransientIsdamageevolutionEnum
++syn keyword juliaConstC TransientIsesaEnum
++syn keyword juliaConstC TransientIsgiaEnum
++syn keyword juliaConstC TransientIsgroundinglineEnum
++syn keyword juliaConstC TransientIshydrologyEnum
++syn keyword juliaConstC TransientIsmasstransportEnum
++syn keyword juliaConstC TransientIsoceantransportEnum
++syn keyword juliaConstC TransientIsmovingfrontEnum
++syn keyword juliaConstC TransientIsoceancouplingEnum
++syn keyword juliaConstC TransientIssamplingEnum
++syn keyword juliaConstC TransientIsslcEnum
++syn keyword juliaConstC TransientIssmbEnum
++syn keyword juliaConstC TransientIsstressbalanceEnum
++syn keyword juliaConstC TransientIsthermalEnum
++syn keyword juliaConstC TransientNumRequestedOutputsEnum
++syn keyword juliaConstC TransientRequestedOutputsEnum
++syn keyword juliaConstC VelocityEnum
++syn keyword juliaConstC XxeEnum
++syn keyword juliaConstC YyeEnum
++syn keyword juliaConstC ZzeEnum
++syn keyword juliaConstC AreaeEnum
++syn keyword juliaConstC WorldCommEnum
++syn keyword juliaConstC ParametersENDEnum
++syn keyword juliaConstC InputsSTARTEnum
++syn keyword juliaConstC AccumulatedDeltaBottomPressureEnum
++syn keyword juliaConstC AccumulatedDeltaIceThicknessEnum
++syn keyword juliaConstC AccumulatedDeltaTwsEnum
++syn keyword juliaConstC AdjointEnum
++syn keyword juliaConstC AdjointpEnum
++syn keyword juliaConstC AdjointxEnum
++syn keyword juliaConstC AdjointxBaseEnum
++syn keyword juliaConstC AdjointxShearEnum
++syn keyword juliaConstC AdjointyEnum
++syn keyword juliaConstC AdjointyBaseEnum
++syn keyword juliaConstC AdjointyShearEnum
++syn keyword juliaConstC AdjointzEnum
++syn keyword juliaConstC AirEnum
++syn keyword juliaConstC ApproximationEnum
++syn keyword juliaConstC BalancethicknessMisfitEnum
++syn keyword juliaConstC BalancethicknessOmega0Enum
++syn keyword juliaConstC BalancethicknessOmegaEnum
++syn keyword juliaConstC BalancethicknessSpcthicknessEnum
++syn keyword juliaConstC BalancethicknessThickeningRateEnum
++syn keyword juliaConstC BasalCrevasseEnum
++syn keyword juliaConstC BasalforcingsDeepwaterMeltingRateAutoregressionEnum
++syn keyword juliaConstC BasalforcingsDeepwaterMeltingRateNoiseEnum
++syn keyword juliaConstC BasalforcingsDeepwaterMeltingRateValuesAutoregressionEnum
++syn keyword juliaConstC BasalforcingsFloatingiceMeltingRateEnum
++syn keyword juliaConstC BasalforcingsGeothermalfluxEnum
++syn keyword juliaConstC BasalforcingsGroundediceMeltingRateEnum
++syn keyword juliaConstC BasalforcingsLinearBasinIdEnum
++syn keyword juliaConstC BasalforcingsPerturbationMeltingRateEnum
++syn keyword juliaConstC BasalforcingsSpatialDeepwaterElevationEnum
++syn keyword juliaConstC BasalforcingsSpatialDeepwaterMeltingRateEnum
++syn keyword juliaConstC BasalforcingsSpatialUpperwaterElevationEnum
++syn keyword juliaConstC BasalforcingsSpatialUpperwaterMeltingRateEnum
++syn keyword juliaConstC BasalforcingsIsmip6BasinIdEnum
++syn keyword juliaConstC BasalforcingsIsmip6TfEnum
++syn keyword juliaConstC BasalforcingsIsmip6TfShelfEnum
++syn keyword juliaConstC BasalforcingsIsmip6MeltAnomalyEnum
++syn keyword juliaConstC BasalforcingsMeltrateFactorEnum
++syn keyword juliaConstC BasalforcingsOceanSalinityEnum
++syn keyword juliaConstC BasalforcingsOceanTempEnum
++syn keyword juliaConstC BasalforcingsPicoBasinIdEnum
++syn keyword juliaConstC BasalforcingsPicoBoxIdEnum
++syn keyword juliaConstC BasalforcingsPicoOverturningCoeffEnum
++syn keyword juliaConstC BasalforcingsPicoSubShelfOceanOverturningEnum
++syn keyword juliaConstC BasalforcingsPicoSubShelfOceanSalinityEnum
++syn keyword juliaConstC BasalforcingsPicoSubShelfOceanTempEnum
++syn keyword juliaConstC BasalStressxEnum
++syn keyword juliaConstC BasalStressyEnum
++syn keyword juliaConstC BasalStressEnum
++syn keyword juliaConstC BaseEnum
++syn keyword juliaConstC BaseOldEnum
++syn keyword juliaConstC BaseSlopeXEnum
++syn keyword juliaConstC BaseSlopeYEnum
++syn keyword juliaConstC BaselineBasalforcingsFloatingiceMeltingRateEnum
++syn keyword juliaConstC BaselineBasalforcingsSpatialDeepwaterMeltingRateEnum
++syn keyword juliaConstC BaselineCalvingCalvingrateEnum
++syn keyword juliaConstC BaselineFrictionEffectivePressureEnum
++syn keyword juliaConstC BaselineSmbMassBalanceEnum
++syn keyword juliaConstC BedEnum
++syn keyword juliaConstC BedGRDEnum
++syn keyword juliaConstC BedEastEnum
++syn keyword juliaConstC BedEastGRDEnum
++syn keyword juliaConstC BedNorthEnum
++syn keyword juliaConstC BedNorthGRDEnum
++syn keyword juliaConstC BedSlopeXEnum
++syn keyword juliaConstC BedSlopeYEnum
++syn keyword juliaConstC BottomPressureEnum
++syn keyword juliaConstC BottomPressureOldEnum
++syn keyword juliaConstC CalvingCalvingrateEnum
++syn keyword juliaConstC CalvingHabFractionEnum
++syn keyword juliaConstC CalvingAblationrateEnum
++syn keyword juliaConstC CalvingMeltingrateEnum
++syn keyword juliaConstC CalvingStressThresholdFloatingiceEnum
++syn keyword juliaConstC CalvingStressThresholdGroundediceEnum
++syn keyword juliaConstC CalvinglevermannCoeffEnum
++syn keyword juliaConstC CalvingratexEnum
++syn keyword juliaConstC CalvingrateyEnum
++syn keyword juliaConstC CalvingFluxLevelsetEnum
++syn keyword juliaConstC CalvingMeltingFluxLevelsetEnum
++syn keyword juliaConstC ConvergedEnum
++syn keyword juliaConstC CrevasseDepthEnum
++syn keyword juliaConstC DamageDEnum
++syn keyword juliaConstC DamageDOldEnum
++syn keyword juliaConstC DamageDbarEnum
++syn keyword juliaConstC DamageDbarOldEnum
++syn keyword juliaConstC DamageFEnum
++syn keyword juliaConstC DegreeOfChannelizationEnum
++syn keyword juliaConstC DepthBelowSurfaceEnum
++syn keyword juliaConstC DeltaIceThicknessEnum
++syn keyword juliaConstC DeltaTwsEnum
++syn keyword juliaConstC DeltaBottomPressureEnum
++syn keyword juliaConstC DeltaDslEnum
++syn keyword juliaConstC DslOldEnum
++syn keyword juliaConstC DslEnum
++syn keyword juliaConstC DeltaStrEnum
++syn keyword juliaConstC StrOldEnum
++syn keyword juliaConstC StrEnum
++syn keyword juliaConstC DeviatoricStresseffectiveEnum
++syn keyword juliaConstC DeviatoricStressxxEnum
++syn keyword juliaConstC DeviatoricStressxyEnum
++syn keyword juliaConstC DeviatoricStressxzEnum
++syn keyword juliaConstC DeviatoricStressyyEnum
++syn keyword juliaConstC DeviatoricStressyzEnum
++syn keyword juliaConstC DeviatoricStresszzEnum
++syn keyword juliaConstC DeviatoricStress1Enum
++syn keyword juliaConstC DeviatoricStress2Enum
++syn keyword juliaConstC DistanceToCalvingfrontEnum
++syn keyword juliaConstC DistanceToGroundinglineEnum
++syn keyword juliaConstC Domain2DhorizontalEnum
++syn keyword juliaConstC Domain2DverticalEnum
++syn keyword juliaConstC Domain3DEnum
++syn keyword juliaConstC DragCoefficientAbsGradientEnum
++syn keyword juliaConstC DrivingStressXEnum
++syn keyword juliaConstC DrivingStressYEnum
++syn keyword juliaConstC DummyEnum
++syn keyword juliaConstC EffectivePressureEnum
++syn keyword juliaConstC EffectivePressureSubstepEnum
++syn keyword juliaConstC EffectivePressureTransientEnum
++syn keyword juliaConstC EnthalpyEnum
++syn keyword juliaConstC EnthalpyPicardEnum
++syn keyword juliaConstC EplHeadEnum
++syn keyword juliaConstC EplHeadOldEnum
++syn keyword juliaConstC EplHeadSlopeXEnum
++syn keyword juliaConstC EplHeadSlopeYEnum
++syn keyword juliaConstC EplHeadSubstepEnum
++syn keyword juliaConstC EplHeadTransientEnum
++syn keyword juliaConstC EsaEmotionEnum
++syn keyword juliaConstC EsaNmotionEnum
++syn keyword juliaConstC EsaRotationrateEnum
++syn keyword juliaConstC EsaStrainratexxEnum
++syn keyword juliaConstC EsaStrainratexyEnum
++syn keyword juliaConstC EsaStrainrateyyEnum
++syn keyword juliaConstC EsaUmotionEnum
++syn keyword juliaConstC EsaXmotionEnum
++syn keyword juliaConstC EsaYmotionEnum
++syn keyword juliaConstC EtaDiffEnum
++syn keyword juliaConstC FlowequationBorderFSEnum
++syn keyword juliaConstC FrictionAsEnum
++syn keyword juliaConstC FrictionCEnum
++syn keyword juliaConstC FrictionCmaxEnum
++syn keyword juliaConstC FrictionCoefficientEnum
++syn keyword juliaConstC FrictionCoefficientcoulombEnum
++syn keyword juliaConstC FrictionEffectivePressureEnum
++syn keyword juliaConstC FrictionMEnum
++syn keyword juliaConstC FrictionPEnum
++syn keyword juliaConstC FrictionPressureAdjustedTemperatureEnum
++syn keyword juliaConstC FrictionQEnum
++syn keyword juliaConstC FrictionSedimentCompressibilityCoefficientEnum
++syn keyword juliaConstC FrictionTillFrictionAngleEnum
++syn keyword juliaConstC FrictionWaterLayerEnum
++syn keyword juliaConstC FrictionfEnum
++syn keyword juliaConstC FrontalForcingsBasinIdEnum
++syn keyword juliaConstC FrontalForcingsSubglacialDischargeEnum
++syn keyword juliaConstC FrontalForcingsThermalForcingEnum
++syn keyword juliaConstC GeometryHydrostaticRatioEnum
++syn keyword juliaConstC NGiaEnum
++syn keyword juliaConstC NGiaRateEnum
++syn keyword juliaConstC UGiaEnum
++syn keyword juliaConstC UGiaRateEnum
++syn keyword juliaConstC GradientEnum
++syn keyword juliaConstC GroundinglineHeightEnum
++syn keyword juliaConstC HydraulicPotentialEnum
++syn keyword juliaConstC HydraulicPotentialOldEnum
++syn keyword juliaConstC HydrologyBasalFluxEnum
++syn keyword juliaConstC HydrologyBumpHeightEnum
++syn keyword juliaConstC HydrologyBumpSpacingEnum
++syn keyword juliaConstC HydrologydcBasalMoulinInputEnum
++syn keyword juliaConstC HydrologydcEplThicknessEnum
++syn keyword juliaConstC HydrologydcEplThicknessOldEnum
++syn keyword juliaConstC HydrologydcEplThicknessSubstepEnum
++syn keyword juliaConstC HydrologydcEplThicknessTransientEnum
++syn keyword juliaConstC HydrologydcMaskEplactiveEltEnum
++syn keyword juliaConstC HydrologydcMaskEplactiveNodeEnum
++syn keyword juliaConstC HydrologydcMaskThawedEltEnum
++syn keyword juliaConstC HydrologydcMaskThawedNodeEnum
++syn keyword juliaConstC HydrologydcSedimentTransmitivityEnum
++syn keyword juliaConstC HydrologyDrainageRateEnum
++syn keyword juliaConstC HydrologyEnglacialInputEnum
++syn keyword juliaConstC HydrologyGapHeightEnum
++syn keyword juliaConstC HydrologyGapHeightXEnum
++syn keyword juliaConstC HydrologyGapHeightXXEnum
++syn keyword juliaConstC HydrologyGapHeightYEnum
++syn keyword juliaConstC HydrologyGapHeightYYEnum
++syn keyword juliaConstC HydrologyHeadEnum
++syn keyword juliaConstC HydrologyHeadOldEnum
++syn keyword juliaConstC HydrologyMoulinInputEnum
++syn keyword juliaConstC HydrologyNeumannfluxEnum
++syn keyword juliaConstC HydrologyReynoldsEnum
++syn keyword juliaConstC HydrologySheetConductivityEnum
++syn keyword juliaConstC HydrologySheetThicknessEnum
++syn keyword juliaConstC HydrologySheetThicknessOldEnum
++syn keyword juliaConstC HydrologyTwsEnum
++syn keyword juliaConstC HydrologyTwsSpcEnum
++syn keyword juliaConstC HydrologyTwsAnalysisEnum
++syn keyword juliaConstC HydrologyWatercolumnMaxEnum
++syn keyword juliaConstC HydrologyWaterVxEnum
++syn keyword juliaConstC HydrologyWaterVyEnum
++syn keyword juliaConstC IceEnum
++syn keyword juliaConstC IceMaskNodeActivationEnum
++syn keyword juliaConstC InputEnum
++syn keyword juliaConstC InversionCostFunctionsCoefficientsEnum
++syn keyword juliaConstC InversionSurfaceObsEnum
++syn keyword juliaConstC InversionThicknessObsEnum
++syn keyword juliaConstC InversionVelObsEnum
++syn keyword juliaConstC InversionVxObsEnum
++syn keyword juliaConstC InversionVyObsEnum
++syn keyword juliaConstC LevelsetfunctionSlopeXEnum
++syn keyword juliaConstC LevelsetfunctionSlopeYEnum
++syn keyword juliaConstC LevelsetObservationEnum
++syn keyword juliaConstC LoadingforceXEnum
++syn keyword juliaConstC LoadingforceYEnum
++syn keyword juliaConstC LoadingforceZEnum
++syn keyword juliaConstC MaskOceanLevelsetEnum
++syn keyword juliaConstC MaskIceLevelsetEnum
++syn keyword juliaConstC MaskIceRefLevelsetEnum
++syn keyword juliaConstC MasstransportSpcthicknessEnum
++syn keyword juliaConstC MaterialsRheologyBEnum
++syn keyword juliaConstC MaterialsRheologyBbarEnum
++syn keyword juliaConstC MaterialsRheologyEEnum
++syn keyword juliaConstC MaterialsRheologyEbarEnum
++syn keyword juliaConstC MaterialsRheologyEcEnum
++syn keyword juliaConstC MaterialsRheologyEcbarEnum
++syn keyword juliaConstC MaterialsRheologyEsEnum
++syn keyword juliaConstC MaterialsRheologyEsbarEnum
++syn keyword juliaConstC MaterialsRheologyNEnum
++syn keyword juliaConstC MeshScaleFactorEnum
++syn keyword juliaConstC MeshVertexonbaseEnum
++syn keyword juliaConstC MeshVertexonboundaryEnum
++syn keyword juliaConstC MeshVertexonsurfaceEnum
++syn keyword juliaConstC MisfitEnum
++syn keyword juliaConstC MovingFrontalVxEnum
++syn keyword juliaConstC MovingFrontalVyEnum
++syn keyword juliaConstC NeumannfluxEnum
++syn keyword juliaConstC NewDamageEnum
++syn keyword juliaConstC NodeEnum
++syn keyword juliaConstC OmegaAbsGradientEnum
++syn keyword juliaConstC OceantransportSpcbottompressureEnum
++syn keyword juliaConstC OceantransportSpcstrEnum
++syn keyword juliaConstC OceantransportSpcdslEnum
++syn keyword juliaConstC P0Enum
++syn keyword juliaConstC P1Enum
++syn keyword juliaConstC PartitioningEnum
++syn keyword juliaConstC PressureEnum
++syn keyword juliaConstC RadarEnum
++syn keyword juliaConstC RadarAttenuationMacGregorEnum
++syn keyword juliaConstC RadarAttenuationWolffEnum
++syn keyword juliaConstC RadarIcePeriodEnum
++syn keyword juliaConstC RadarPowerMacGregorEnum
++syn keyword juliaConstC RadarPowerWolffEnum
++syn keyword juliaConstC RheologyBAbsGradientEnum
++syn keyword juliaConstC RheologyBInitialguessEnum
++syn keyword juliaConstC RheologyBInitialguessMisfitEnum
++syn keyword juliaConstC RheologyBbarAbsGradientEnum
++syn keyword juliaConstC SampleEnum
++syn keyword juliaConstC SampleOldEnum
++syn keyword juliaConstC SampleNoiseEnum
++syn keyword juliaConstC SamplingBetaEnum
++syn keyword juliaConstC SamplingKappaEnum
++syn keyword juliaConstC SamplingPhiEnum
++syn keyword juliaConstC SamplingTauEnum
++syn keyword juliaConstC SealevelEnum
++syn keyword juliaConstC SealevelGRDEnum
++syn keyword juliaConstC SatGraviGRDEnum
++syn keyword juliaConstC SealevelBarystaticMaskEnum
++syn keyword juliaConstC SealevelBarystaticIceMaskEnum
++syn keyword juliaConstC SealevelBarystaticIceWeightsEnum
++syn keyword juliaConstC SealevelBarystaticIceAreaEnum
++syn keyword juliaConstC SealevelBarystaticIceLatbarEnum
++syn keyword juliaConstC SealevelBarystaticIceLongbarEnum
++syn keyword juliaConstC SealevelBarystaticIceLoadEnum
++syn keyword juliaConstC SealevelBarystaticHydroMaskEnum
++syn keyword juliaConstC SealevelBarystaticHydroWeightsEnum
++syn keyword juliaConstC SealevelBarystaticHydroAreaEnum
++syn keyword juliaConstC SealevelBarystaticHydroLatbarEnum
++syn keyword juliaConstC SealevelBarystaticHydroLongbarEnum
++syn keyword juliaConstC SealevelBarystaticHydroLoadEnum
++syn keyword juliaConstC SealevelBarystaticBpMaskEnum
++syn keyword juliaConstC SealevelBarystaticBpWeightsEnum
++syn keyword juliaConstC SealevelBarystaticBpAreaEnum
++syn keyword juliaConstC SealevelBarystaticBpLoadEnum
++syn keyword juliaConstC SealevelBarystaticOceanMaskEnum
++syn keyword juliaConstC SealevelBarystaticOceanWeightsEnum
++syn keyword juliaConstC SealevelBarystaticOceanAreaEnum
++syn keyword juliaConstC SealevelBarystaticOceanLatbarEnum
++syn keyword juliaConstC SealevelBarystaticOceanLongbarEnum
++syn keyword juliaConstC SealevelBarystaticOceanLoadEnum
++syn keyword juliaConstC SealevelNEsaEnum
++syn keyword juliaConstC SealevelNEsaRateEnum
++syn keyword juliaConstC SealevelRSLEnum
++syn keyword juliaConstC BslcEnum
++syn keyword juliaConstC BslcIceEnum
++syn keyword juliaConstC BslcHydroEnum
++syn keyword juliaConstC BslcOceanEnum
++syn keyword juliaConstC BslcRateEnum
++syn keyword juliaConstC GmtslcEnum
++syn keyword juliaConstC SealevelRSLBarystaticEnum
++syn keyword juliaConstC SealevelRSLRateEnum
++syn keyword juliaConstC SealevelUGrdEnum
++syn keyword juliaConstC SealevelNGrdEnum
++syn keyword juliaConstC SealevelUEastEsaEnum
++syn keyword juliaConstC SealevelUNorthEsaEnum
++syn keyword juliaConstC SealevelchangeIndicesEnum
++syn keyword juliaConstC SealevelchangeAlphaIndexEnum
++syn keyword juliaConstC SealevelchangeAzimuthIndexEnum
++syn keyword juliaConstC SealevelchangeGrotEnum
++syn keyword juliaConstC SealevelchangeGSatGravirotEnum
++syn keyword juliaConstC SealevelchangeGUrotEnum
++syn keyword juliaConstC SealevelchangeGNrotEnum
++syn keyword juliaConstC SealevelchangeGErotEnum
++syn keyword juliaConstC SealevelchangeAlphaIndexOceanEnum
++syn keyword juliaConstC SealevelchangeAlphaIndexIceEnum
++syn keyword juliaConstC SealevelchangeAlphaIndexHydroEnum
++syn keyword juliaConstC SealevelchangeAzimuthIndexOceanEnum
++syn keyword juliaConstC SealevelchangeAzimuthIndexIceEnum
++syn keyword juliaConstC SealevelchangeAzimuthIndexHydroEnum
++syn keyword juliaConstC SealevelchangeViscousRSLEnum
++syn keyword juliaConstC SealevelchangeViscousSGEnum
++syn keyword juliaConstC SealevelchangeViscousUEnum
++syn keyword juliaConstC SealevelchangeViscousNEnum
++syn keyword juliaConstC SealevelchangeViscousEEnum
++syn keyword juliaConstC SedimentHeadEnum
++syn keyword juliaConstC SedimentHeadOldEnum
++syn keyword juliaConstC SedimentHeadSubstepEnum
++syn keyword juliaConstC SedimentHeadTransientEnum
++syn keyword juliaConstC SedimentHeadResidualEnum
++syn keyword juliaConstC SedimentHeadStackedEnum
++syn keyword juliaConstC SigmaNNEnum
++syn keyword juliaConstC SigmaVMEnum
++syn keyword juliaConstC SmbAccumulatedECEnum
++syn keyword juliaConstC SmbAccumulatedMassBalanceEnum
++syn keyword juliaConstC SmbAccumulatedMeltEnum
++syn keyword juliaConstC SmbAccumulatedPrecipitationEnum
++syn keyword juliaConstC SmbAccumulatedRainEnum
++syn keyword juliaConstC SmbAccumulatedRefreezeEnum
++syn keyword juliaConstC SmbAccumulatedRunoffEnum
++syn keyword juliaConstC SmbAEnum
++syn keyword juliaConstC SmbAdiffEnum
++syn keyword juliaConstC SmbAValueEnum
++syn keyword juliaConstC SmbAccumulationEnum
++syn keyword juliaConstC SmbAdiffiniEnum
++syn keyword juliaConstC SmbAiniEnum
++syn keyword juliaConstC SmbAutoregressionNoiseEnum
++syn keyword juliaConstC SmbBasinsIdEnum
++syn keyword juliaConstC SmbBMaxEnum
++syn keyword juliaConstC SmbBMinEnum
++syn keyword juliaConstC SmbBNegEnum
++syn keyword juliaConstC SmbBPosEnum
++syn keyword juliaConstC SmbCEnum
++syn keyword juliaConstC SmbCcsnowValueEnum
++syn keyword juliaConstC SmbCciceValueEnum
++syn keyword juliaConstC SmbCotValueEnum
++syn keyword juliaConstC SmbDEnum
++syn keyword juliaConstC SmbDailyairdensityEnum
++syn keyword juliaConstC SmbDailyairhumidityEnum
++syn keyword juliaConstC SmbDailydlradiationEnum
++syn keyword juliaConstC SmbDailydsradiationEnum
++syn keyword juliaConstC SmbDailypressureEnum
++syn keyword juliaConstC SmbDailyrainfallEnum
++syn keyword juliaConstC SmbDailysnowfallEnum
++syn keyword juliaConstC SmbDailytemperatureEnum
++syn keyword juliaConstC SmbDailywindspeedEnum
++syn keyword juliaConstC SmbDiniEnum
++syn keyword juliaConstC SmbDlwrfEnum
++syn keyword juliaConstC SmbDulwrfValueEnum
++syn keyword juliaConstC SmbDswrfEnum
++syn keyword juliaConstC SmbDswdiffrfEnum
++syn keyword juliaConstC SmbDzAddEnum
++syn keyword juliaConstC SmbDzEnum
++syn keyword juliaConstC SmbDzMinEnum
++syn keyword juliaConstC SmbDzTopEnum
++syn keyword juliaConstC SmbDziniEnum
++syn keyword juliaConstC SmbEAirEnum
++syn keyword juliaConstC SmbECEnum
++syn keyword juliaConstC SmbECDtEnum
++syn keyword juliaConstC SmbECiniEnum
++syn keyword juliaConstC SmbElaEnum
++syn keyword juliaConstC SmbEvaporationEnum
++syn keyword juliaConstC SmbFACEnum
++syn keyword juliaConstC SmbGdnEnum
++syn keyword juliaConstC SmbGdniniEnum
++syn keyword juliaConstC SmbGspEnum
++syn keyword juliaConstC SmbGspiniEnum
++syn keyword juliaConstC SmbHrefEnum
++syn keyword juliaConstC SmbIsInitializedEnum
++syn keyword juliaConstC SmbMAddEnum
++syn keyword juliaConstC SmbMassBalanceEnum
++syn keyword juliaConstC SmbMassBalanceSubstepEnum
++syn keyword juliaConstC SmbMassBalanceTransientEnum
++syn keyword juliaConstC SmbMeanLHFEnum
++syn keyword juliaConstC SmbMeanSHFEnum
++syn keyword juliaConstC SmbMeanULWEnum
++syn keyword juliaConstC SmbMeltEnum
++syn keyword juliaConstC SmbMonthlytemperaturesEnum
++syn keyword juliaConstC SmbMSurfEnum
++syn keyword juliaConstC SmbNetLWEnum
++syn keyword juliaConstC SmbNetSWEnum
++syn keyword juliaConstC SmbPAirEnum
++syn keyword juliaConstC SmbPEnum
++syn keyword juliaConstC SmbPddfacIceEnum
++syn keyword juliaConstC SmbPddfacSnowEnum
++syn keyword juliaConstC SmbPrecipitationEnum
++syn keyword juliaConstC SmbPrecipitationsAnomalyEnum
++syn keyword juliaConstC SmbPrecipitationsLgmEnum
++syn keyword juliaConstC SmbPrecipitationsPresentdayEnum
++syn keyword juliaConstC SmbPrecipitationsReconstructedEnum
++syn keyword juliaConstC SmbRainEnum
++syn keyword juliaConstC SmbReEnum
++syn keyword juliaConstC SmbRefreezeEnum
++syn keyword juliaConstC SmbReiniEnum
++syn keyword juliaConstC SmbRunoffEnum
++syn keyword juliaConstC SmbRunoffSubstepEnum
++syn keyword juliaConstC SmbRunoffTransientEnum
++syn keyword juliaConstC SmbS0gcmEnum
++syn keyword juliaConstC SmbS0pEnum
++syn keyword juliaConstC SmbS0tEnum
++syn keyword juliaConstC SmbSizeiniEnum
++syn keyword juliaConstC SmbSmbCorrEnum
++syn keyword juliaConstC SmbSmbrefEnum
++syn keyword juliaConstC SmbSzaValueEnum
++syn keyword juliaConstC SmbTEnum
++syn keyword juliaConstC SmbTaEnum
++syn keyword juliaConstC SmbTeValueEnum
++syn keyword juliaConstC SmbTemperaturesAnomalyEnum
++syn keyword juliaConstC SmbTemperaturesLgmEnum
++syn keyword juliaConstC SmbTemperaturesPresentdayEnum
++syn keyword juliaConstC SmbTemperaturesReconstructedEnum
++syn keyword juliaConstC SmbTiniEnum
++syn keyword juliaConstC SmbTmeanEnum
++syn keyword juliaConstC SmbTzEnum
++syn keyword juliaConstC SmbValuesAutoregressionEnum
++syn keyword juliaConstC SmbVEnum
++syn keyword juliaConstC SmbVmeanEnum
++syn keyword juliaConstC SmbVzEnum
++syn keyword juliaConstC SmbWEnum
++syn keyword juliaConstC SmbWAddEnum
++syn keyword juliaConstC SmbWiniEnum
++syn keyword juliaConstC SmbZMaxEnum
++syn keyword juliaConstC SmbZMinEnum
++syn keyword juliaConstC SmbZTopEnum
++syn keyword juliaConstC SmbZYEnum
++syn keyword juliaConstC SolidearthExternalDisplacementEastRateEnum
++syn keyword juliaConstC SolidearthExternalDisplacementNorthRateEnum
++syn keyword juliaConstC SolidearthExternalDisplacementUpRateEnum
++syn keyword juliaConstC SolidearthExternalGeoidRateEnum
++syn keyword juliaConstC StochasticForcingDefaultIdEnum
++syn keyword juliaConstC StrainRateeffectiveEnum
++syn keyword juliaConstC StrainRateparallelEnum
++syn keyword juliaConstC StrainRateperpendicularEnum
++syn keyword juliaConstC StrainRatexxEnum
++syn keyword juliaConstC StrainRatexyEnum
++syn keyword juliaConstC StrainRatexzEnum
++syn keyword juliaConstC StrainRateyyEnum
++syn keyword juliaConstC StrainRateyzEnum
++syn keyword juliaConstC StrainRatezzEnum
++syn keyword juliaConstC StressMaxPrincipalEnum
++syn keyword juliaConstC StressTensorxxEnum
++syn keyword juliaConstC StressTensorxyEnum
++syn keyword juliaConstC StressTensorxzEnum
++syn keyword juliaConstC StressTensoryyEnum
++syn keyword juliaConstC StressTensoryzEnum
++syn keyword juliaConstC StressTensorzzEnum
++syn keyword juliaConstC SurfaceAbsMisfitEnum
++syn keyword juliaConstC SurfaceAbsVelMisfitEnum
++syn keyword juliaConstC AreaEnum
++syn keyword juliaConstC SealevelAreaEnum
++syn keyword juliaConstC SurfaceAreaEnum
++syn keyword juliaConstC SurfaceAverageVelMisfitEnum
++syn keyword juliaConstC SurfaceCrevasseEnum
++syn keyword juliaConstC SurfaceEnum
++syn keyword juliaConstC SurfaceOldEnum
++syn keyword juliaConstC SurfaceLogVelMisfitEnum
++syn keyword juliaConstC SurfaceLogVxVyMisfitEnum
++syn keyword juliaConstC SurfaceObservationEnum
++syn keyword juliaConstC SurfaceRelVelMisfitEnum
++syn keyword juliaConstC SurfaceSlopeXEnum
++syn keyword juliaConstC SurfaceSlopeYEnum
++syn keyword juliaConstC TemperatureEnum
++syn keyword juliaConstC TemperaturePDDEnum
++syn keyword juliaConstC TemperaturePicardEnum
++syn keyword juliaConstC TemperatureSEMICEnum
++syn keyword juliaConstC ThermalforcingAutoregressionNoiseEnum
++syn keyword juliaConstC ThermalforcingValuesAutoregressionEnum
++syn keyword juliaConstC ThermalSpctemperatureEnum
++syn keyword juliaConstC ThicknessAbsGradientEnum
++syn keyword juliaConstC ThicknessAbsMisfitEnum
++syn keyword juliaConstC ThicknessAcrossGradientEnum
++syn keyword juliaConstC ThicknessAlongGradientEnum
++syn keyword juliaConstC ThicknessEnum
++syn keyword juliaConstC ThicknessOldEnum
++syn keyword juliaConstC ThicknessPositiveEnum
++syn keyword juliaConstC ThicknessResidualEnum
++syn keyword juliaConstC TransientAccumulatedDeltaIceThicknessEnum
++syn keyword juliaConstC VelEnum
++syn keyword juliaConstC VxAverageEnum
++syn keyword juliaConstC VxBaseEnum
++syn keyword juliaConstC VxEnum
++syn keyword juliaConstC VxMeshEnum
++syn keyword juliaConstC VxObsEnum
++syn keyword juliaConstC VxShearEnum
++syn keyword juliaConstC VxSurfaceEnum
++syn keyword juliaConstC VyAverageEnum
++syn keyword juliaConstC VyBaseEnum
++syn keyword juliaConstC VyEnum
++syn keyword juliaConstC VyMeshEnum
++syn keyword juliaConstC VyObsEnum
++syn keyword juliaConstC VyShearEnum
++syn keyword juliaConstC VySurfaceEnum
++syn keyword juliaConstC VzEnum
++syn keyword juliaConstC VzFSEnum
++syn keyword juliaConstC VzHOEnum
++syn keyword juliaConstC VzMeshEnum
++syn keyword juliaConstC VzSSAEnum
++syn keyword juliaConstC WaterColumnOldEnum
++syn keyword juliaConstC WatercolumnEnum
++syn keyword juliaConstC WaterfractionDrainageEnum
++syn keyword juliaConstC WaterfractionDrainageIntegratedEnum
++syn keyword juliaConstC WaterfractionEnum
++syn keyword juliaConstC WaterheightEnum
++syn keyword juliaConstC FrictionWaterPressureEnum
++syn keyword juliaConstC FrictionWaterPressureNoiseEnum
++syn keyword juliaConstC WeightsLevelsetObservationEnum
++syn keyword juliaConstC WeightsSurfaceObservationEnum
++syn keyword juliaConstC OldAccumulatedDeltaBottomPressureEnum
++syn keyword juliaConstC OldAccumulatedDeltaIceThicknessEnum
++syn keyword juliaConstC OldAccumulatedDeltaTwsEnum
++syn keyword juliaConstC Outputdefinition1Enum
++syn keyword juliaConstC Outputdefinition10Enum
++syn keyword juliaConstC Outputdefinition11Enum
++syn keyword juliaConstC Outputdefinition12Enum
++syn keyword juliaConstC Outputdefinition13Enum
++syn keyword juliaConstC Outputdefinition14Enum
++syn keyword juliaConstC Outputdefinition15Enum
++syn keyword juliaConstC Outputdefinition16Enum
++syn keyword juliaConstC Outputdefinition17Enum
++syn keyword juliaConstC Outputdefinition18Enum
++syn keyword juliaConstC Outputdefinition19Enum
++syn keyword juliaConstC Outputdefinition20Enum
++syn keyword juliaConstC Outputdefinition21Enum
++syn keyword juliaConstC Outputdefinition22Enum
++syn keyword juliaConstC Outputdefinition23Enum
++syn keyword juliaConstC Outputdefinition24Enum
++syn keyword juliaConstC Outputdefinition25Enum
++syn keyword juliaConstC Outputdefinition26Enum
++syn keyword juliaConstC Outputdefinition27Enum
++syn keyword juliaConstC Outputdefinition28Enum
++syn keyword juliaConstC Outputdefinition29Enum
++syn keyword juliaConstC Outputdefinition2Enum
++syn keyword juliaConstC Outputdefinition30Enum
++syn keyword juliaConstC Outputdefinition31Enum
++syn keyword juliaConstC Outputdefinition32Enum
++syn keyword juliaConstC Outputdefinition33Enum
++syn keyword juliaConstC Outputdefinition34Enum
++syn keyword juliaConstC Outputdefinition35Enum
++syn keyword juliaConstC Outputdefinition36Enum
++syn keyword juliaConstC Outputdefinition37Enum
++syn keyword juliaConstC Outputdefinition38Enum
++syn keyword juliaConstC Outputdefinition39Enum
++syn keyword juliaConstC Outputdefinition3Enum
++syn keyword juliaConstC Outputdefinition40Enum
++syn keyword juliaConstC Outputdefinition41Enum
++syn keyword juliaConstC Outputdefinition42Enum
++syn keyword juliaConstC Outputdefinition43Enum
++syn keyword juliaConstC Outputdefinition44Enum
++syn keyword juliaConstC Outputdefinition45Enum
++syn keyword juliaConstC Outputdefinition46Enum
++syn keyword juliaConstC Outputdefinition47Enum
++syn keyword juliaConstC Outputdefinition48Enum
++syn keyword juliaConstC Outputdefinition49Enum
++syn keyword juliaConstC Outputdefinition4Enum
++syn keyword juliaConstC Outputdefinition50Enum
++syn keyword juliaConstC Outputdefinition51Enum
++syn keyword juliaConstC Outputdefinition52Enum
++syn keyword juliaConstC Outputdefinition53Enum
++syn keyword juliaConstC Outputdefinition54Enum
++syn keyword juliaConstC Outputdefinition55Enum
++syn keyword juliaConstC Outputdefinition56Enum
++syn keyword juliaConstC Outputdefinition57Enum
++syn keyword juliaConstC Outputdefinition58Enum
++syn keyword juliaConstC Outputdefinition59Enum
++syn keyword juliaConstC Outputdefinition5Enum
++syn keyword juliaConstC Outputdefinition60Enum
++syn keyword juliaConstC Outputdefinition61Enum
++syn keyword juliaConstC Outputdefinition62Enum
++syn keyword juliaConstC Outputdefinition63Enum
++syn keyword juliaConstC Outputdefinition64Enum
++syn keyword juliaConstC Outputdefinition65Enum
++syn keyword juliaConstC Outputdefinition66Enum
++syn keyword juliaConstC Outputdefinition67Enum
++syn keyword juliaConstC Outputdefinition68Enum
++syn keyword juliaConstC Outputdefinition69Enum
++syn keyword juliaConstC Outputdefinition6Enum
++syn keyword juliaConstC Outputdefinition70Enum
++syn keyword juliaConstC Outputdefinition71Enum
++syn keyword juliaConstC Outputdefinition72Enum
++syn keyword juliaConstC Outputdefinition73Enum
++syn keyword juliaConstC Outputdefinition74Enum
++syn keyword juliaConstC Outputdefinition75Enum
++syn keyword juliaConstC Outputdefinition76Enum
++syn keyword juliaConstC Outputdefinition77Enum
++syn keyword juliaConstC Outputdefinition78Enum
++syn keyword juliaConstC Outputdefinition79Enum
++syn keyword juliaConstC Outputdefinition7Enum
++syn keyword juliaConstC Outputdefinition80Enum
++syn keyword juliaConstC Outputdefinition81Enum
++syn keyword juliaConstC Outputdefinition82Enum
++syn keyword juliaConstC Outputdefinition83Enum
++syn keyword juliaConstC Outputdefinition84Enum
++syn keyword juliaConstC Outputdefinition85Enum
++syn keyword juliaConstC Outputdefinition86Enum
++syn keyword juliaConstC Outputdefinition87Enum
++syn keyword juliaConstC Outputdefinition88Enum
++syn keyword juliaConstC Outputdefinition89Enum
++syn keyword juliaConstC Outputdefinition8Enum
++syn keyword juliaConstC Outputdefinition90Enum
++syn keyword juliaConstC Outputdefinition91Enum
++syn keyword juliaConstC Outputdefinition92Enum
++syn keyword juliaConstC Outputdefinition93Enum
++syn keyword juliaConstC Outputdefinition94Enum
++syn keyword juliaConstC Outputdefinition95Enum
++syn keyword juliaConstC Outputdefinition96Enum
++syn keyword juliaConstC Outputdefinition97Enum
++syn keyword juliaConstC Outputdefinition98Enum
++syn keyword juliaConstC Outputdefinition99Enum
++syn keyword juliaConstC Outputdefinition9Enum
++syn keyword juliaConstC Outputdefinition100Enum
++syn keyword juliaConstC InputsENDEnum
++syn keyword juliaConstC AbsoluteEnum
++syn keyword juliaConstC AdaptiveTimesteppingEnum
++syn keyword juliaConstC AdjointBalancethickness2AnalysisEnum
++syn keyword juliaConstC AdjointBalancethicknessAnalysisEnum
++syn keyword juliaConstC AdjointHorizAnalysisEnum
++syn keyword juliaConstC AggressiveMigrationEnum
++syn keyword juliaConstC AmrBamgEnum
++syn keyword juliaConstC AmrNeopzEnum
++syn keyword juliaConstC AndroidFrictionCoefficientEnum
++syn keyword juliaConstC ArrheniusEnum
++syn keyword juliaConstC AutodiffJacobianEnum
++syn keyword juliaConstC AutoregressionLinearFloatingMeltRateEnum
++syn keyword juliaConstC Balancethickness2AnalysisEnum
++syn keyword juliaConstC Balancethickness2SolutionEnum
++syn keyword juliaConstC BalancethicknessAnalysisEnum
++syn keyword juliaConstC BalancethicknessApparentMassbalanceEnum
++syn keyword juliaConstC BalancethicknessSoftAnalysisEnum
++syn keyword juliaConstC BalancethicknessSoftSolutionEnum
++syn keyword juliaConstC BalancethicknessSolutionEnum
++syn keyword juliaConstC BalancevelocityAnalysisEnum
++syn keyword juliaConstC BalancevelocitySolutionEnum
++syn keyword juliaConstC BasalforcingsIsmip6Enum
++syn keyword juliaConstC BasalforcingsPicoEnum
++syn keyword juliaConstC BeckmannGoosseFloatingMeltRateEnum
++syn keyword juliaConstC BedSlopeSolutionEnum
++syn keyword juliaConstC BoolExternalResultEnum
++syn keyword juliaConstC BoolInputEnum
++syn keyword juliaConstC IntInputEnum
++syn keyword juliaConstC DoubleInputEnum
++syn keyword juliaConstC BoolParamEnum
++syn keyword juliaConstC BoundaryEnum
++syn keyword juliaConstC BuddJackaEnum
++syn keyword juliaConstC CalvingDev2Enum
++syn keyword juliaConstC CalvingHabEnum
++syn keyword juliaConstC CalvingLevermannEnum
++syn keyword juliaConstC CalvingTestEnum
++syn keyword juliaConstC CalvingParameterizationEnum
++syn keyword juliaConstC CalvingVonmisesEnum
++syn keyword juliaConstC CfdragcoeffabsgradEnum
++syn keyword juliaConstC CfsurfacelogvelEnum
++syn keyword juliaConstC CfsurfacesquareEnum
++syn keyword juliaConstC CflevelsetmisfitEnum
++syn keyword juliaConstC ChannelEnum
++syn keyword juliaConstC ChannelAreaEnum
++syn keyword juliaConstC ChannelAreaOldEnum
++syn keyword juliaConstC ChannelDischargeEnum
++syn keyword juliaConstC ClosedEnum
++syn keyword juliaConstC ColinearEnum
++syn keyword juliaConstC ConstraintsEnum
++syn keyword juliaConstC ContactEnum
++syn keyword juliaConstC ContourEnum
++syn keyword juliaConstC ContoursEnum
++syn keyword juliaConstC ControlInputEnum
++syn keyword juliaConstC ControlInputGradEnum
++syn keyword juliaConstC ControlInputMaxsEnum
++syn keyword juliaConstC ControlInputMinsEnum
++syn keyword juliaConstC ControlInputValuesEnum
++syn keyword juliaConstC CrouzeixRaviartEnum
++syn keyword juliaConstC CuffeyEnum
++syn keyword juliaConstC CuffeyTemperateEnum
++syn keyword juliaConstC DamageEvolutionAnalysisEnum
++syn keyword juliaConstC DamageEvolutionSolutionEnum
++syn keyword juliaConstC DataSetEnum
++syn keyword juliaConstC DataSetParamEnum
++syn keyword juliaConstC DatasetInputEnum
++syn keyword juliaConstC DefaultAnalysisEnum
++syn keyword juliaConstC DefaultCalvingEnum
++syn keyword juliaConstC DenseEnum
++syn keyword juliaConstC DependentObjectEnum
++syn keyword juliaConstC DepthAverageAnalysisEnum
++syn keyword juliaConstC DeviatoricStressErrorEstimatorEnum
++syn keyword juliaConstC DivergenceEnum
++syn keyword juliaConstC Domain3DsurfaceEnum
++syn keyword juliaConstC DoubleArrayInputEnum
++syn keyword juliaConstC ArrayInputEnum
++syn keyword juliaConstC IntArrayInputEnum
++syn keyword juliaConstC DoubleExternalResultEnum
++syn keyword juliaConstC DoubleMatArrayParamEnum
++syn keyword juliaConstC DoubleMatExternalResultEnum
++syn keyword juliaConstC DoubleMatParamEnum
++syn keyword juliaConstC DoubleParamEnum
++syn keyword juliaConstC DoubleVecParamEnum
++syn keyword juliaConstC ElementEnum
++syn keyword juliaConstC ElementHookEnum
++syn keyword juliaConstC ElementSIdEnum
++syn keyword juliaConstC EnthalpyAnalysisEnum
++syn keyword juliaConstC EsaAnalysisEnum
++syn keyword juliaConstC EsaSolutionEnum
++syn keyword juliaConstC EsaTransitionsEnum
++syn keyword juliaConstC ExternalResultEnum
++syn keyword juliaConstC ExtrapolationAnalysisEnum
++syn keyword juliaConstC ExtrudeFromBaseAnalysisEnum
++syn keyword juliaConstC ExtrudeFromTopAnalysisEnum
++syn keyword juliaConstC FSApproximationEnum
++syn keyword juliaConstC FSSolverEnum
++syn keyword juliaConstC FSpressureEnum
++syn keyword juliaConstC FSvelocityEnum
++syn keyword juliaConstC FemModelEnum
++syn keyword juliaConstC FileParamEnum
++syn keyword juliaConstC FixedTimesteppingEnum
++syn keyword juliaConstC FloatingAreaEnum
++syn keyword juliaConstC FloatingAreaScaledEnum
++syn keyword juliaConstC FloatingMeltRateEnum
++syn keyword juliaConstC FreeEnum
++syn keyword juliaConstC FreeSurfaceBaseAnalysisEnum
++syn keyword juliaConstC FreeSurfaceTopAnalysisEnum
++syn keyword juliaConstC FrontalForcingsDefaultEnum
++syn keyword juliaConstC FrontalForcingsRignotEnum
++syn keyword juliaConstC FrontalForcingsRignotAutoregressionEnum
++syn keyword juliaConstC FsetEnum
++syn keyword juliaConstC FullMeltOnPartiallyFloatingEnum
++syn keyword juliaConstC GLheightadvectionAnalysisEnum
++syn keyword juliaConstC GaussPentaEnum
++syn keyword juliaConstC GaussSegEnum
++syn keyword juliaConstC GaussTetraEnum
++syn keyword juliaConstC GaussTriaEnum
++syn keyword juliaConstC GenericOptionEnum
++syn keyword juliaConstC GenericParamEnum
++syn keyword juliaConstC GenericExternalResultEnum
++syn keyword juliaConstC Gradient1Enum
++syn keyword juliaConstC Gradient2Enum
++syn keyword juliaConstC Gradient3Enum
++syn keyword juliaConstC Gradient4Enum
++syn keyword juliaConstC GroundedAreaEnum
++syn keyword juliaConstC GroundedAreaScaledEnum
++syn keyword juliaConstC GroundingOnlyEnum
++syn keyword juliaConstC GroundinglineMassFluxEnum
++syn keyword juliaConstC GsetEnum
++syn keyword juliaConstC GslEnum
++syn keyword juliaConstC HOApproximationEnum
++syn keyword juliaConstC HOFSApproximationEnum
++syn keyword juliaConstC HookEnum
++syn keyword juliaConstC HydrologyDCEfficientAnalysisEnum
++syn keyword juliaConstC HydrologyDCInefficientAnalysisEnum
++syn keyword juliaConstC HydrologyGlaDSAnalysisEnum
++syn keyword juliaConstC HydrologyGlaDSEnum
++syn keyword juliaConstC HydrologyPismAnalysisEnum
++syn keyword juliaConstC HydrologyShaktiAnalysisEnum
++syn keyword juliaConstC HydrologyShreveAnalysisEnum
++syn keyword juliaConstC HydrologySolutionEnum
++syn keyword juliaConstC HydrologySubstepEnum
++syn keyword juliaConstC HydrologydcEnum
++syn keyword juliaConstC HydrologypismEnum
++syn keyword juliaConstC HydrologyshaktiEnum
++syn keyword juliaConstC HydrologyshreveEnum
++syn keyword juliaConstC IceMassEnum
++syn keyword juliaConstC IceMassScaledEnum
++syn keyword juliaConstC IceVolumeAboveFloatationEnum
++syn keyword juliaConstC IceVolumeAboveFloatationScaledEnum
++syn keyword juliaConstC IceVolumeEnum
++syn keyword juliaConstC IceVolumeScaledEnum
++syn keyword juliaConstC IcefrontMassFluxEnum
++syn keyword juliaConstC IcefrontMassFluxLevelsetEnum
++syn keyword juliaConstC IncrementalEnum
++syn keyword juliaConstC IndexedEnum
++syn keyword juliaConstC IntExternalResultEnum
++syn keyword juliaConstC ElementInputEnum
++syn keyword juliaConstC IntMatExternalResultEnum
++syn keyword juliaConstC IntMatParamEnum
++syn keyword juliaConstC IntParamEnum
++syn keyword juliaConstC IntVecParamEnum
++syn keyword juliaConstC InputsEnum
++syn keyword juliaConstC InternalEnum
++syn keyword juliaConstC IntersectEnum
++syn keyword juliaConstC InversionVzObsEnum
++syn keyword juliaConstC JEnum
++syn keyword juliaConstC L1L2ApproximationEnum
++syn keyword juliaConstC MOLHOApproximationEnum
++syn keyword juliaConstC L2ProjectionBaseAnalysisEnum
++syn keyword juliaConstC L2ProjectionEPLAnalysisEnum
++syn keyword juliaConstC LACrouzeixRaviartEnum
++syn keyword juliaConstC LATaylorHoodEnum
++syn keyword juliaConstC LambdaSEnum
++syn keyword juliaConstC LevelsetAnalysisEnum
++syn keyword juliaConstC LevelsetfunctionPicardEnum
++syn keyword juliaConstC LinearFloatingMeltRateEnum
++syn keyword juliaConstC LliboutryDuvalEnum
++syn keyword juliaConstC LoadsEnum
++syn keyword juliaConstC LoveAnalysisEnum
++syn keyword juliaConstC LoveHfEnum
++syn keyword juliaConstC LoveHtEnum
++syn keyword juliaConstC LoveKernelsImagEnum
++syn keyword juliaConstC LoveKernelsRealEnum
++syn keyword juliaConstC LoveKfEnum
++syn keyword juliaConstC LoveKtEnum
++syn keyword juliaConstC LoveLfEnum
++syn keyword juliaConstC LoveLtEnum
++syn keyword juliaConstC LoveTidalHtEnum
++syn keyword juliaConstC LoveTidalKtEnum
++syn keyword juliaConstC LoveTidalLtEnum
++syn keyword juliaConstC LovePMTF1tEnum
++syn keyword juliaConstC LovePMTF2tEnum
++syn keyword juliaConstC LoveYiEnum
++syn keyword juliaConstC LoveRhsEnum
++syn keyword juliaConstC LoveSolutionEnum
++syn keyword juliaConstC MINIEnum
++syn keyword juliaConstC MINIcondensedEnum
++syn keyword juliaConstC MantlePlumeGeothermalFluxEnum
++syn keyword juliaConstC MassFluxEnum
++syn keyword juliaConstC MassconEnum
++syn keyword juliaConstC MassconaxpbyEnum
++syn keyword juliaConstC MassfluxatgateEnum
++syn keyword juliaConstC MasstransportAnalysisEnum
++syn keyword juliaConstC MasstransportSolutionEnum
++syn keyword juliaConstC MatdamageiceEnum
++syn keyword juliaConstC MatenhancediceEnum
++syn keyword juliaConstC MaterialsEnum
++syn keyword juliaConstC MatestarEnum
++syn keyword juliaConstC MaticeEnum
++syn keyword juliaConstC MatlithoEnum
++syn keyword juliaConstC MathydroEnum
++syn keyword juliaConstC MatrixParamEnum
++syn keyword juliaConstC MaxAbsVxEnum
++syn keyword juliaConstC MaxAbsVyEnum
++syn keyword juliaConstC MaxAbsVzEnum
++syn keyword juliaConstC MaxDivergenceEnum
++syn keyword juliaConstC MaxVelEnum
++syn keyword juliaConstC MaxVxEnum
++syn keyword juliaConstC MaxVyEnum
++syn keyword juliaConstC MaxVzEnum
++syn keyword juliaConstC MelangeEnum
++syn keyword juliaConstC MeltingAnalysisEnum
++syn keyword juliaConstC MeshElementsEnum
++syn keyword juliaConstC MeshXEnum
++syn keyword juliaConstC MeshYEnum
++syn keyword juliaConstC MinVelEnum
++syn keyword juliaConstC MinVxEnum
++syn keyword juliaConstC MinVyEnum
++syn keyword juliaConstC MinVzEnum
++syn keyword juliaConstC MismipFloatingMeltRateEnum
++syn keyword juliaConstC MoulinEnum
++syn keyword juliaConstC MpiDenseEnum
++syn keyword juliaConstC MpiEnum
++syn keyword juliaConstC MpiSparseEnum
++syn keyword juliaConstC MumpsEnum
++syn keyword juliaConstC NoFrictionOnPartiallyFloatingEnum
++syn keyword juliaConstC NoMeltOnPartiallyFloatingEnum
++syn keyword juliaConstC NodalEnum
++syn keyword juliaConstC NodalvalueEnum
++syn keyword juliaConstC NodeSIdEnum
++syn keyword juliaConstC NoneApproximationEnum
++syn keyword juliaConstC NoneEnum
++syn keyword juliaConstC NumberedcostfunctionEnum
++syn keyword juliaConstC NyeCO2Enum
++syn keyword juliaConstC NyeH2OEnum
++syn keyword juliaConstC NumericalfluxEnum
++syn keyword juliaConstC OceantransportAnalysisEnum
++syn keyword juliaConstC OceantransportSolutionEnum
++syn keyword juliaConstC OldGradientEnum
++syn keyword juliaConstC OneLayerP4zEnum
++syn keyword juliaConstC OpenEnum
++syn keyword juliaConstC OptionEnum
++syn keyword juliaConstC ParamEnum
++syn keyword juliaConstC ParametersEnum
++syn keyword juliaConstC P0ArrayEnum
++syn keyword juliaConstC P0DGEnum
++syn keyword juliaConstC P1DGEnum
++syn keyword juliaConstC P1P1Enum
++syn keyword juliaConstC P1P1GLSEnum
++syn keyword juliaConstC P1bubbleEnum
++syn keyword juliaConstC P1bubblecondensedEnum
++syn keyword juliaConstC P1xP2Enum
++syn keyword juliaConstC P1xP3Enum
++syn keyword juliaConstC P1xP4Enum
++syn keyword juliaConstC P2Enum
++syn keyword juliaConstC P2bubbleEnum
++syn keyword juliaConstC P2bubblecondensedEnum
++syn keyword juliaConstC P2xP1Enum
++syn keyword juliaConstC P2xP4Enum
++syn keyword juliaConstC PatersonEnum
++syn keyword juliaConstC PengridEnum
++syn keyword juliaConstC PenpairEnum
++syn keyword juliaConstC PentaEnum
++syn keyword juliaConstC PentaInputEnum
++syn keyword juliaConstC ProfilerEnum
++syn keyword juliaConstC ProfilingCurrentFlopsEnum
++syn keyword juliaConstC ProfilingCurrentMemEnum
++syn keyword juliaConstC ProfilingSolutionTimeEnum
++syn keyword juliaConstC RegionaloutputEnum
++syn keyword juliaConstC RegularEnum
++syn keyword juliaConstC RecoveryAnalysisEnum
++syn keyword juliaConstC RiftfrontEnum
++syn keyword juliaConstC SamplingAnalysisEnum
++syn keyword juliaConstC SamplingSolutionEnum
++syn keyword juliaConstC SIAApproximationEnum
++syn keyword juliaConstC SMBautoregressionEnum
++syn keyword juliaConstC SMBcomponentsEnum
++syn keyword juliaConstC SMBd18opddEnum
++syn keyword juliaConstC SMBforcingEnum
++syn keyword juliaConstC SMBgcmEnum
++syn keyword juliaConstC SMBgembEnum
++syn keyword juliaConstC SMBgradientsEnum
++syn keyword juliaConstC SMBgradientscomponentsEnum
++syn keyword juliaConstC SMBgradientselaEnum
++syn keyword juliaConstC SMBhenningEnum
++syn keyword juliaConstC SMBmeltcomponentsEnum
++syn keyword juliaConstC SMBpddEnum
++syn keyword juliaConstC SMBpddSicopolisEnum
++syn keyword juliaConstC SMBsemicEnum
++syn keyword juliaConstC SSAApproximationEnum
++syn keyword juliaConstC SSAFSApproximationEnum
++syn keyword juliaConstC SSAHOApproximationEnum
++syn keyword juliaConstC ScaledEnum
++syn keyword juliaConstC SealevelAbsoluteEnum
++syn keyword juliaConstC SealevelEmotionEnum
++syn keyword juliaConstC SealevelchangePolarMotionXEnum
++syn keyword juliaConstC SealevelchangePolarMotionYEnum
++syn keyword juliaConstC SealevelchangePolarMotionZEnum
++syn keyword juliaConstC SealevelchangePolarMotionEnum
++syn keyword juliaConstC SealevelNmotionEnum
++syn keyword juliaConstC SealevelUmotionEnum
++syn keyword juliaConstC SealevelchangeAnalysisEnum
++syn keyword juliaConstC SegEnum
++syn keyword juliaConstC SegInputEnum
++syn keyword juliaConstC SegmentEnum
++syn keyword juliaConstC SegmentRiftfrontEnum
++syn keyword juliaConstC SeparateEnum
++syn keyword juliaConstC SeqEnum
++syn keyword juliaConstC SmbAnalysisEnum
++syn keyword juliaConstC SmbSolutionEnum
++syn keyword juliaConstC SmoothAnalysisEnum
++syn keyword juliaConstC SoftMigrationEnum
++syn keyword juliaConstC SpatialLinearFloatingMeltRateEnum
++syn keyword juliaConstC SpcDynamicEnum
++syn keyword juliaConstC SpcStaticEnum
++syn keyword juliaConstC SpcTransientEnum
++syn keyword juliaConstC SsetEnum
++syn keyword juliaConstC StatisticsSolutionEnum
++syn keyword juliaConstC SteadystateSolutionEnum
++syn keyword juliaConstC StressIntensityFactorEnum
++syn keyword juliaConstC StressbalanceAnalysisEnum
++syn keyword juliaConstC StressbalanceConvergenceNumStepsEnum
++syn keyword juliaConstC StressbalanceSIAAnalysisEnum
++syn keyword juliaConstC StressbalanceSolutionEnum
++syn keyword juliaConstC StressbalanceVerticalAnalysisEnum
++syn keyword juliaConstC StringArrayParamEnum
++syn keyword juliaConstC StringExternalResultEnum
++syn keyword juliaConstC StringParamEnum
++syn keyword juliaConstC SubelementFriction1Enum
++syn keyword juliaConstC SubelementFriction2Enum
++syn keyword juliaConstC SubelementMelt1Enum
++syn keyword juliaConstC SubelementMelt2Enum
++syn keyword juliaConstC SubelementMigrationEnum
++syn keyword juliaConstC SurfaceSlopeSolutionEnum
++syn keyword juliaConstC TaylorHoodEnum
++syn keyword juliaConstC TetraEnum
++syn keyword juliaConstC TetraInputEnum
++syn keyword juliaConstC ThermalAnalysisEnum
++syn keyword juliaConstC ThermalSolutionEnum
++syn keyword juliaConstC ThicknessErrorEstimatorEnum
++syn keyword juliaConstC TotalCalvingFluxLevelsetEnum
++syn keyword juliaConstC TotalCalvingMeltingFluxLevelsetEnum
++syn keyword juliaConstC TotalFloatingBmbEnum
++syn keyword juliaConstC TotalFloatingBmbScaledEnum
++syn keyword juliaConstC TotalGroundedBmbEnum
++syn keyword juliaConstC TotalGroundedBmbScaledEnum
++syn keyword juliaConstC TotalSmbEnum
++syn keyword juliaConstC TotalSmbScaledEnum
++syn keyword juliaConstC TransientArrayParamEnum
++syn keyword juliaConstC TransientInputEnum
++syn keyword juliaConstC TransientParamEnum
++syn keyword juliaConstC TransientSolutionEnum
++syn keyword juliaConstC TriaEnum
++syn keyword juliaConstC TriaInputEnum
++syn keyword juliaConstC UzawaPressureAnalysisEnum
++syn keyword juliaConstC VectorParamEnum
++syn keyword juliaConstC VertexEnum
++syn keyword juliaConstC VertexLIdEnum
++syn keyword juliaConstC VertexPIdEnum
++syn keyword juliaConstC VertexSIdEnum
++syn keyword juliaConstC VerticesEnum
++syn keyword juliaConstC ViscousHeatingEnum
++syn keyword juliaConstC WaterEnum
++syn keyword juliaConstC XTaylorHoodEnum
++syn keyword juliaConstC XYEnum
++syn keyword juliaConstC XYZEnum
++syn keyword juliaConstC BalancethicknessD0Enum
++syn keyword juliaConstC BalancethicknessDiffusionCoefficientEnum
++syn keyword juliaConstC BilinearInterpEnum
++syn keyword juliaConstC CalvingdevCoeffEnum
++syn keyword juliaConstC DeviatoricStressEnum
++syn keyword juliaConstC EtaAbsGradientEnum
++syn keyword juliaConstC MeshZEnum
++syn keyword juliaConstC NearestInterpEnum
++syn keyword juliaConstC OutputdefinitionListEnum
++syn keyword juliaConstC SealevelObsEnum
++syn keyword juliaConstC SealevelWeightsEnum
++syn keyword juliaConstC StrainRateEnum
++syn keyword juliaConstC StressTensorEnum
++syn keyword juliaConstC StressbalanceViscosityOvershootEnum
++syn keyword juliaConstC SubelementMigration4Enum
++syn keyword juliaConstC TimesteppingTimeAdaptEnum
++syn keyword juliaConstC TriangleInterpEnum
++syn keyword juliaConstC MaximumNumberOfDefinitionsEnum
++"ISSM Enums end
++syn keyword juliaConstC ParametersSTARTEnum
++syn keyword juliaConstC AdolcParamEnum
++syn keyword juliaConstC AmrDeviatoricErrorGroupThresholdEnum
++syn keyword juliaConstC AmrDeviatoricErrorMaximumEnum
++syn keyword juliaConstC AmrDeviatoricErrorResolutionEnum
++syn keyword juliaConstC AmrDeviatoricErrorThresholdEnum
++syn keyword juliaConstC AmrErrEnum
++syn keyword juliaConstC AmrFieldEnum
++syn keyword juliaConstC AmrGradationEnum
++syn keyword juliaConstC AmrGroundingLineDistanceEnum
++syn keyword juliaConstC AmrGroundingLineResolutionEnum
++syn keyword juliaConstC AmrHmaxEnum
++syn keyword juliaConstC AmrHminEnum
++syn keyword juliaConstC AmrIceFrontDistanceEnum
++syn keyword juliaConstC AmrIceFrontResolutionEnum
++syn keyword juliaConstC AmrKeepMetricEnum
++syn keyword juliaConstC AmrLagEnum
++syn keyword juliaConstC AmrLevelMaxEnum
++syn keyword juliaConstC AmrRestartEnum
++syn keyword juliaConstC AmrThicknessErrorGroupThresholdEnum
++syn keyword juliaConstC AmrThicknessErrorMaximumEnum
++syn keyword juliaConstC AmrThicknessErrorResolutionEnum
++syn keyword juliaConstC AmrThicknessErrorThresholdEnum
++syn keyword juliaConstC AmrTypeEnum
++syn keyword juliaConstC AnalysisCounterEnum
++syn keyword juliaConstC AnalysisTypeEnum
++syn keyword juliaConstC AugmentedLagrangianREnum
++syn keyword juliaConstC AugmentedLagrangianRholambdaEnum
++syn keyword juliaConstC AugmentedLagrangianRhopEnum
++syn keyword juliaConstC AugmentedLagrangianRlambdaEnum
++syn keyword juliaConstC AugmentedLagrangianThetaEnum
++syn keyword juliaConstC AutodiffCbufsizeEnum
++syn keyword juliaConstC AutodiffDependentObjectsEnum
++syn keyword juliaConstC AutodiffDriverEnum
++syn keyword juliaConstC AutodiffFosForwardIndexEnum
++syn keyword juliaConstC AutodiffFosReverseIndexEnum
++syn keyword juliaConstC AutodiffFovForwardIndicesEnum
++syn keyword juliaConstC AutodiffGcTriggerMaxSizeEnum
++syn keyword juliaConstC AutodiffGcTriggerRatioEnum
++syn keyword juliaConstC AutodiffIsautodiffEnum
++syn keyword juliaConstC AutodiffLbufsizeEnum
++syn keyword juliaConstC AutodiffNumDependentsEnum
++syn keyword juliaConstC AutodiffNumIndependentsEnum
++syn keyword juliaConstC AutodiffObufsizeEnum
++syn keyword juliaConstC AutodiffTapeAllocEnum
++syn keyword juliaConstC AutodiffTbufsizeEnum
++syn keyword juliaConstC AutodiffXpEnum
++syn keyword juliaConstC BalancethicknessStabilizationEnum
++syn keyword juliaConstC BarystaticContributionsEnum
++syn keyword juliaConstC BasalforcingsAutoregressionInitialTimeEnum
++syn keyword juliaConstC BasalforcingsAutoregressionTimestepEnum
++syn keyword juliaConstC BasalforcingsAutoregressiveOrderEnum
++syn keyword juliaConstC BasalforcingsBeta0Enum
++syn keyword juliaConstC BasalforcingsBeta1Enum
++syn keyword juliaConstC BasalforcingsBottomplumedepthEnum
++syn keyword juliaConstC BasalforcingsCrustthicknessEnum
++syn keyword juliaConstC BasalforcingsDeepwaterElevationEnum
++syn keyword juliaConstC BasalforcingsDeepwaterMeltingRateEnum
++syn keyword juliaConstC BasalforcingsDtbgEnum
++syn keyword juliaConstC BasalforcingsEnum
++syn keyword juliaConstC BasalforcingsIsmip6AverageTfEnum
++syn keyword juliaConstC BasalforcingsIsmip6BasinAreaEnum
++syn keyword juliaConstC BasalforcingsIsmip6DeltaTEnum
++syn keyword juliaConstC BasalforcingsIsmip6Gamma0Enum
++syn keyword juliaConstC BasalforcingsIsmip6IsLocalEnum
++syn keyword juliaConstC BasalforcingsIsmip6NumBasinsEnum
++syn keyword juliaConstC BasalforcingsIsmip6TfDepthsEnum
++syn keyword juliaConstC BasalforcingsLinearNumBasinsEnum
++syn keyword juliaConstC BasalforcingsLowercrustheatEnum
++syn keyword juliaConstC BasalforcingsMantleconductivityEnum
++syn keyword juliaConstC BasalforcingsNusseltEnum
++syn keyword juliaConstC BasalforcingsPhiEnum
++syn keyword juliaConstC BasalforcingsPicoAverageOverturningEnum
++syn keyword juliaConstC BasalforcingsPicoAverageSalinityEnum
++syn keyword juliaConstC BasalforcingsPicoAverageTemperatureEnum
++syn keyword juliaConstC BasalforcingsPicoBoxAreaEnum
++syn keyword juliaConstC BasalforcingsPicoFarOceansalinityEnum
++syn keyword juliaConstC BasalforcingsPicoFarOceantemperatureEnum
++syn keyword juliaConstC BasalforcingsPicoGammaTEnum
++syn keyword juliaConstC BasalforcingsPicoIsplumeEnum
++syn keyword juliaConstC BasalforcingsPicoMaxboxcountEnum
++syn keyword juliaConstC BasalforcingsPicoNumBasinsEnum
++syn keyword juliaConstC BasalforcingsPlumeradiusEnum
++syn keyword juliaConstC BasalforcingsPlumexEnum
++syn keyword juliaConstC BasalforcingsPlumeyEnum
++syn keyword juliaConstC BasalforcingsThresholdThicknessEnum
++syn keyword juliaConstC BasalforcingsTopplumedepthEnum
++syn keyword juliaConstC BasalforcingsUppercrustheatEnum
++syn keyword juliaConstC BasalforcingsUppercrustthicknessEnum
++syn keyword juliaConstC BasalforcingsUpperdepthMeltEnum
++syn keyword juliaConstC BasalforcingsUpperwaterElevationEnum
++syn keyword juliaConstC BasalforcingsUpperwaterMeltingRateEnum
++syn keyword juliaConstC CalvingCrevasseDepthEnum
++syn keyword juliaConstC CalvingCrevasseThresholdEnum
++syn keyword juliaConstC CalvingHeightAboveFloatationEnum
++syn keyword juliaConstC CalvingLawEnum
++syn keyword juliaConstC CalvingMinthicknessEnum
++syn keyword juliaConstC CalvingTestSpeedfactorEnum
++syn keyword juliaConstC CalvingTestIndependentRateEnum
++syn keyword juliaConstC CalvingUseParamEnum
++syn keyword juliaConstC CalvingThetaEnum
++syn keyword juliaConstC CalvingAlphaEnum
++syn keyword juliaConstC CalvingXoffsetEnum
++syn keyword juliaConstC CalvingYoffsetEnum
++syn keyword juliaConstC ConfigurationTypeEnum
++syn keyword juliaConstC ConstantsGEnum
++syn keyword juliaConstC ConstantsNewtonGravityEnum
++syn keyword juliaConstC ConstantsReferencetemperatureEnum
++syn keyword juliaConstC ConstantsYtsEnum
++syn keyword juliaConstC ControlInputSizeMEnum
++syn keyword juliaConstC ControlInputSizeNEnum
++syn keyword juliaConstC ControlInputInterpolationEnum
++syn keyword juliaConstC CumBslcEnum
++syn keyword juliaConstC CumBslcIceEnum
++syn keyword juliaConstC CumBslcHydroEnum
++syn keyword juliaConstC CumBslcOceanEnum
++syn keyword juliaConstC CumBslcIcePartitionEnum
++syn keyword juliaConstC CumBslcHydroPartitionEnum
++syn keyword juliaConstC CumBslcOceanPartitionEnum
++syn keyword juliaConstC CumGmtslcEnum
++syn keyword juliaConstC CumGmslcEnum
++syn keyword juliaConstC DamageC1Enum
++syn keyword juliaConstC DamageC2Enum
++syn keyword juliaConstC DamageC3Enum
++syn keyword juliaConstC DamageC4Enum
++syn keyword juliaConstC DamageEnum
++syn keyword juliaConstC DamageEquivStressEnum
++syn keyword juliaConstC DamageEvolutionNumRequestedOutputsEnum
++syn keyword juliaConstC DamageEvolutionRequestedOutputsEnum
++syn keyword juliaConstC DamageHealingEnum
++syn keyword juliaConstC DamageKappaEnum
++syn keyword juliaConstC DamageLawEnum
++syn keyword juliaConstC DamageMaxDamageEnum
++syn keyword juliaConstC DamageStabilizationEnum
++syn keyword juliaConstC DamageStressThresholdEnum
++syn keyword juliaConstC DamageStressUBoundEnum
++syn keyword juliaConstC DebugProfilingEnum
++syn keyword juliaConstC DomainDimensionEnum
++syn keyword juliaConstC DomainTypeEnum
++syn keyword juliaConstC DslModelEnum
++syn keyword juliaConstC DslModelidEnum
++syn keyword juliaConstC DslNummodelsEnum
++syn keyword juliaConstC SolidearthIsExternalEnum
++syn keyword juliaConstC SolidearthExternalNatureEnum
++syn keyword juliaConstC SolidearthExternalModelidEnum
++syn keyword juliaConstC SolidearthExternalNummodelsEnum
++syn keyword juliaConstC SolidearthSettingsComputeBpGrdEnum
++syn keyword juliaConstC EarthIdEnum
++syn keyword juliaConstC ElasticEnum
++syn keyword juliaConstC EplZigZagCounterEnum
++syn keyword juliaConstC EsaHElasticEnum
++syn keyword juliaConstC EsaHemisphereEnum
++syn keyword juliaConstC EsaRequestedOutputsEnum
++syn keyword juliaConstC EsaUElasticEnum
++syn keyword juliaConstC ExtrapolationVariableEnum
++syn keyword juliaConstC FemModelCommEnum
++syn keyword juliaConstC FieldsEnum
++syn keyword juliaConstC FlowequationFeFSEnum
++syn keyword juliaConstC FlowequationIsFSEnum
++syn keyword juliaConstC FlowequationIsHOEnum
++syn keyword juliaConstC FlowequationIsL1L2Enum
++syn keyword juliaConstC FlowequationIsMOLHOEnum
++syn keyword juliaConstC FlowequationIsSIAEnum
++syn keyword juliaConstC FlowequationIsSSAEnum
++syn keyword juliaConstC FlowequationIsNitscheEnum
++syn keyword juliaConstC FeFSNitscheGammaEnum
++syn keyword juliaConstC FrictionCouplingEnum
++syn keyword juliaConstC FrictionDeltaEnum
++syn keyword juliaConstC FrictionEffectivePressureLimitEnum
++syn keyword juliaConstC FrictionFEnum
++syn keyword juliaConstC FrictionGammaEnum
++syn keyword juliaConstC FrictionLawEnum
++syn keyword juliaConstC FrictionPseudoplasticityExponentEnum
++syn keyword juliaConstC FrictionThresholdSpeedEnum
++syn keyword juliaConstC FrictionVoidRatioEnum
++syn keyword juliaConstC FrontalForcingsBasinIcefrontAreaEnum
++syn keyword juliaConstC FrontalForcingsAutoregressionInitialTimeEnum
++syn keyword juliaConstC FrontalForcingsAutoregressionTimestepEnum
++syn keyword juliaConstC FrontalForcingsAutoregressiveOrderEnum
++syn keyword juliaConstC FrontalForcingsBeta0Enum
++syn keyword juliaConstC FrontalForcingsBeta1Enum
++syn keyword juliaConstC FrontalForcingsNumberofBasinsEnum
++syn keyword juliaConstC FrontalForcingsParamEnum
++syn keyword juliaConstC FrontalForcingsPhiEnum
++syn keyword juliaConstC GrdModelEnum
++syn keyword juliaConstC GroundinglineFrictionInterpolationEnum
++syn keyword juliaConstC GroundinglineMeltInterpolationEnum
++syn keyword juliaConstC GroundinglineMigrationEnum
++syn keyword juliaConstC GroundinglineNumRequestedOutputsEnum
++syn keyword juliaConstC GroundinglineRequestedOutputsEnum
++syn keyword juliaConstC HydrologyAveragingEnum
++syn keyword juliaConstC HydrologyCavitySpacingEnum
++syn keyword juliaConstC HydrologyChannelConductivityEnum
++syn keyword juliaConstC HydrologyChannelSheetWidthEnum
++syn keyword juliaConstC HydrologyEnglacialVoidRatioEnum
++syn keyword juliaConstC HydrologyIschannelsEnum
++syn keyword juliaConstC HydrologyMeltFlagEnum
++syn keyword juliaConstC HydrologyModelEnum
++syn keyword juliaConstC HydrologyNumRequestedOutputsEnum
++syn keyword juliaConstC HydrologyPressureMeltCoefficientEnum
++syn keyword juliaConstC HydrologyRelaxationEnum
++syn keyword juliaConstC HydrologyRequestedOutputsEnum
++syn keyword juliaConstC HydrologySedimentKmaxEnum
++syn keyword juliaConstC HydrologyStepsPerStepEnum
++syn keyword juliaConstC HydrologyStorageEnum
++syn keyword juliaConstC HydrologydcEplColapseThicknessEnum
++syn keyword juliaConstC HydrologydcEplConductivityEnum
++syn keyword juliaConstC HydrologydcEplInitialThicknessEnum
++syn keyword juliaConstC HydrologydcEplLayerCompressibilityEnum
++syn keyword juliaConstC HydrologydcEplMaxThicknessEnum
++syn keyword juliaConstC HydrologydcEplPoreWaterMassEnum
++syn keyword juliaConstC HydrologydcEplThickCompEnum
++syn keyword juliaConstC HydrologydcEplflipLockEnum
++syn keyword juliaConstC HydrologydcIsefficientlayerEnum
++syn keyword juliaConstC HydrologydcLeakageFactorEnum
++syn keyword juliaConstC HydrologydcMaxIterEnum
++syn keyword juliaConstC HydrologydcPenaltyFactorEnum
++syn keyword juliaConstC HydrologydcPenaltyLockEnum
++syn keyword juliaConstC HydrologydcRelTolEnum
++syn keyword juliaConstC HydrologydcSedimentlimitEnum
++syn keyword juliaConstC HydrologydcSedimentlimitFlagEnum
++syn keyword juliaConstC HydrologydcSedimentLayerCompressibilityEnum
++syn keyword juliaConstC HydrologydcSedimentPoreWaterMassEnum
++syn keyword juliaConstC HydrologydcSedimentPorosityEnum
++syn keyword juliaConstC HydrologydcSedimentThicknessEnum
++syn keyword juliaConstC HydrologyStepAdaptEnum
++syn keyword juliaConstC HydrologydcTransferFlagEnum
++syn keyword juliaConstC HydrologydcUnconfinedFlagEnum
++syn keyword juliaConstC HydrologyshreveStabilizationEnum
++syn keyword juliaConstC IcecapToEarthCommEnum
++syn keyword juliaConstC IndexEnum
++syn keyword juliaConstC InputFileNameEnum
++syn keyword juliaConstC DirectoryNameEnum
++syn keyword juliaConstC IndicesEnum
++syn keyword juliaConstC InputToDepthaverageInEnum
++syn keyword juliaConstC InputToDepthaverageOutEnum
++syn keyword juliaConstC InputToExtrudeEnum
++syn keyword juliaConstC InputToL2ProjectEnum
++syn keyword juliaConstC InputToSmoothEnum
++syn keyword juliaConstC InversionAlgorithmEnum
++syn keyword juliaConstC InversionControlParametersEnum
++syn keyword juliaConstC InversionControlScalingFactorsEnum
++syn keyword juliaConstC InversionCostFunctionsEnum
++syn keyword juliaConstC InversionDxminEnum
++syn keyword juliaConstC InversionGatolEnum
++syn keyword juliaConstC InversionGradientScalingEnum
++syn keyword juliaConstC InversionGrtolEnum
++syn keyword juliaConstC InversionGttolEnum
++syn keyword juliaConstC InversionIncompleteAdjointEnum
++syn keyword juliaConstC InversionIscontrolEnum
++syn keyword juliaConstC InversionMaxiterEnum
++syn keyword juliaConstC InversionMaxiterPerStepEnum
++syn keyword juliaConstC InversionMaxstepsEnum
++syn keyword juliaConstC InversionNstepsEnum
++syn keyword juliaConstC InversionNumControlParametersEnum
++syn keyword juliaConstC InversionNumCostFunctionsEnum
++syn keyword juliaConstC InversionStepThresholdEnum
++syn keyword juliaConstC InversionTypeEnum
++syn keyword juliaConstC IvinsEnum
++syn keyword juliaConstC IsSlcCouplingEnum
++syn keyword juliaConstC LevelsetKillIcebergsEnum
++syn keyword juliaConstC LevelsetReinitFrequencyEnum
++syn keyword juliaConstC LevelsetStabilizationEnum
++syn keyword juliaConstC LockFileNameEnum
++syn keyword juliaConstC LoveAllowLayerDeletionEnum
++syn keyword juliaConstC LoveChandlerWobbleEnum
++syn keyword juliaConstC LoveCoreMantleBoundaryEnum
++syn keyword juliaConstC LoveEarthMassEnum
++syn keyword juliaConstC LoveForcingTypeEnum
++syn keyword juliaConstC LoveFrequenciesEnum
++syn keyword juliaConstC LoveIsTemporalEnum
++syn keyword juliaConstC LoveG0Enum
++syn keyword juliaConstC LoveGravitationalConstantEnum
++syn keyword juliaConstC LoveInnerCoreBoundaryEnum
++syn keyword juliaConstC LoveComplexComputationEnum
++syn keyword juliaConstC LoveQuadPrecisionEnum
++syn keyword juliaConstC LoveIntStepsPerLayerEnum
++syn keyword juliaConstC LoveMinIntegrationStepsEnum
++syn keyword juliaConstC LoveMaxIntegrationdrEnum
++syn keyword juliaConstC LoveKernelsEnum
++syn keyword juliaConstC LoveMu0Enum
++syn keyword juliaConstC LoveNfreqEnum
++syn keyword juliaConstC LoveNTemporalIterationsEnum
++syn keyword juliaConstC LoveNYiEquationsEnum
++syn keyword juliaConstC LoveR0Enum
++syn keyword juliaConstC LoveShNmaxEnum
++syn keyword juliaConstC LoveShNminEnum
++syn keyword juliaConstC LoveStartingLayerEnum
++syn keyword juliaConstC LoveUnderflowTolEnum
++syn keyword juliaConstC LovePostWidderThresholdEnum
++syn keyword juliaConstC LoveDebugEnum
++syn keyword juliaConstC LoveHypergeomNZEnum
++syn keyword juliaConstC LoveHypergeomNAlphaEnum
++syn keyword juliaConstC MassFluxSegmentsEnum
++syn keyword juliaConstC MassFluxSegmentsPresentEnum
++syn keyword juliaConstC MasstransportHydrostaticAdjustmentEnum
++syn keyword juliaConstC MasstransportIsfreesurfaceEnum
++syn keyword juliaConstC MasstransportMinThicknessEnum
++syn keyword juliaConstC MasstransportNumRequestedOutputsEnum
++syn keyword juliaConstC MasstransportPenaltyFactorEnum
++syn keyword juliaConstC MasstransportRequestedOutputsEnum
++syn keyword juliaConstC MasstransportStabilizationEnum
++syn keyword juliaConstC MaterialsBetaEnum
++syn keyword juliaConstC MaterialsEarthDensityEnum
++syn keyword juliaConstC MaterialsEffectiveconductivityAveragingEnum
++syn keyword juliaConstC MaterialsHeatcapacityEnum
++syn keyword juliaConstC MaterialsLatentheatEnum
++syn keyword juliaConstC MaterialsMeltingpointEnum
++syn keyword juliaConstC MaterialsMixedLayerCapacityEnum
++syn keyword juliaConstC MaterialsMuWaterEnum
++syn keyword juliaConstC MaterialsRheologyLawEnum
++syn keyword juliaConstC MaterialsRhoFreshwaterEnum
++syn keyword juliaConstC MaterialsRhoIceEnum
++syn keyword juliaConstC MaterialsRhoSeawaterEnum
++syn keyword juliaConstC MaterialsTemperateiceconductivityEnum
++syn keyword juliaConstC MaterialsThermalExchangeVelocityEnum
++syn keyword juliaConstC MaterialsThermalconductivityEnum
++syn keyword juliaConstC MeltingOffsetEnum
++syn keyword juliaConstC MeshAverageVertexConnectivityEnum
++syn keyword juliaConstC MeshElementtypeEnum
++syn keyword juliaConstC MeshNumberoflayersEnum
++syn keyword juliaConstC MeshNumberofverticesEnum
++syn keyword juliaConstC MeshNumberofelementsEnum
++syn keyword juliaConstC MigrationMaxEnum
++syn keyword juliaConstC ModelIdEnum
++syn keyword juliaConstC NbinsEnum
++syn keyword juliaConstC NodesEnum
++syn keyword juliaConstC NumModelsEnum
++syn keyword juliaConstC OceanGridNxEnum
++syn keyword juliaConstC OceanGridNyEnum
++syn keyword juliaConstC OceanGridXEnum
++syn keyword juliaConstC OceanGridYEnum
++syn keyword juliaConstC OutputBufferPointerEnum
++syn keyword juliaConstC OutputBufferSizePointerEnum
++syn keyword juliaConstC OutputFileNameEnum
++syn keyword juliaConstC OutputFilePointerEnum
++syn keyword juliaConstC OutputdefinitionEnum
++syn keyword juliaConstC QmuErrNameEnum
++syn keyword juliaConstC QmuInNameEnum
++syn keyword juliaConstC QmuIsdakotaEnum
++syn keyword juliaConstC QmuOutNameEnum
++syn keyword juliaConstC QmuOutputEnum
++syn keyword juliaConstC QmuCurrEvalIdEnum
++syn keyword juliaConstC QmuNsampleEnum
++syn keyword juliaConstC QmuResponsedescriptorsEnum
++syn keyword juliaConstC QmuVariableDescriptorsEnum
++syn keyword juliaConstC QmuVariablePartitionsEnum
++syn keyword juliaConstC QmuVariablePartitionsNpartEnum
++syn keyword juliaConstC QmuVariablePartitionsNtEnum
++syn keyword juliaConstC QmuResponsePartitionsEnum
++syn keyword juliaConstC QmuResponsePartitionsNpartEnum
++syn keyword juliaConstC QmuStatisticsEnum
++syn keyword juliaConstC QmuNumstatisticsEnum
++syn keyword juliaConstC QmuNdirectoriesEnum
++syn keyword juliaConstC QmuNfilesPerDirectoryEnum
++syn keyword juliaConstC QmuStatisticsMethodEnum
++syn keyword juliaConstC QmuMethodsEnum
++syn keyword juliaConstC RestartFileNameEnum
++syn keyword juliaConstC ResultsEnum
++syn keyword juliaConstC RootPathEnum
++syn keyword juliaConstC ModelnameEnum
++syn keyword juliaConstC SamplingAlphaEnum
++syn keyword juliaConstC SamplingNumRequestedOutputsEnum
++syn keyword juliaConstC SamplingRequestedOutputsEnum
++syn keyword juliaConstC SamplingRobinEnum
++syn keyword juliaConstC SamplingSeedEnum
++syn keyword juliaConstC SaveResultsEnum
++syn keyword juliaConstC SolidearthPartitionIceEnum
++syn keyword juliaConstC SolidearthPartitionHydroEnum
++syn keyword juliaConstC SolidearthPartitionOceanEnum
++syn keyword juliaConstC SolidearthNpartIceEnum
++syn keyword juliaConstC SolidearthNpartOceanEnum
++syn keyword juliaConstC SolidearthNpartHydroEnum
++syn keyword juliaConstC SolidearthPlanetRadiusEnum
++syn keyword juliaConstC SolidearthPlanetAreaEnum
++syn keyword juliaConstC SolidearthSettingsAbstolEnum
++syn keyword juliaConstC SolidearthSettingsCrossSectionShapeEnum
++syn keyword juliaConstC SolidearthSettingsElasticEnum
++syn keyword juliaConstC SolidearthSettingsViscousEnum
++syn keyword juliaConstC SolidearthSettingsSatelliteGraviEnum
++syn keyword juliaConstC SolidearthSettingsDegreeAccuracyEnum
++syn keyword juliaConstC SealevelchangeGeometryDoneEnum
++syn keyword juliaConstC SealevelchangeViscousNumStepsEnum
++syn keyword juliaConstC SealevelchangeViscousTimesEnum
++syn keyword juliaConstC SealevelchangeViscousIndexEnum
++syn keyword juliaConstC SealevelchangeViscousPolarMotionEnum
++syn keyword juliaConstC SealevelchangeRunCountEnum
++syn keyword juliaConstC SealevelchangeTransitionsEnum
++syn keyword juliaConstC SealevelchangeRequestedOutputsEnum
++syn keyword juliaConstC RotationalAngularVelocityEnum
++syn keyword juliaConstC RotationalEquatorialMoiEnum
++syn keyword juliaConstC RotationalPolarMoiEnum
++syn keyword juliaConstC LovePolarMotionTransferFunctionColinearEnum
++syn keyword juliaConstC LovePolarMotionTransferFunctionOrthogonalEnum
++syn keyword juliaConstC TidalLoveHEnum
++syn keyword juliaConstC TidalLoveKEnum
++syn keyword juliaConstC TidalLoveLEnum
++syn keyword juliaConstC TidalLoveK2SecularEnum
++syn keyword juliaConstC LoadLoveHEnum
++syn keyword juliaConstC LoadLoveKEnum
++syn keyword juliaConstC LoadLoveLEnum
++syn keyword juliaConstC LoveTimeFreqEnum
++syn keyword juliaConstC LoveIsTimeEnum
++syn keyword juliaConstC LoveHypergeomZEnum
++syn keyword juliaConstC LoveHypergeomTable1Enum
++syn keyword juliaConstC LoveHypergeomTable2Enum
++syn keyword juliaConstC SealevelchangeGSelfAttractionEnum
++syn keyword juliaConstC SealevelchangeGViscoElasticEnum
++syn keyword juliaConstC SealevelchangeUViscoElasticEnum
++syn keyword juliaConstC SealevelchangeHViscoElasticEnum
++syn keyword juliaConstC SealevelchangePolarMotionTransferFunctionColinearEnum
++syn keyword juliaConstC SealevelchangePolarMotionTransferFunctionOrthogonalEnum
++syn keyword juliaConstC SealevelchangePolarMotionTransferFunctionZEnum
++syn keyword juliaConstC SealevelchangeTidalK2Enum
++syn keyword juliaConstC SealevelchangeTidalH2Enum
++syn keyword juliaConstC SealevelchangeTidalL2Enum
++syn keyword juliaConstC SolidearthSettingsSealevelLoadingEnum
++syn keyword juliaConstC SolidearthSettingsGRDEnum
++syn keyword juliaConstC SolidearthSettingsRunFrequencyEnum
++syn keyword juliaConstC SolidearthSettingsTimeAccEnum
++syn keyword juliaConstC SolidearthSettingsHorizEnum
++syn keyword juliaConstC SolidearthSettingsMaxiterEnum
++syn keyword juliaConstC SolidearthSettingsGrdOceanEnum
++syn keyword juliaConstC SolidearthSettingsOceanAreaScalingEnum
++syn keyword juliaConstC StochasticForcingCovarianceEnum
++syn keyword juliaConstC StochasticForcingDefaultDimensionEnum
++syn keyword juliaConstC StochasticForcingDimensionsEnum
++syn keyword juliaConstC StochasticForcingFieldsEnum
++syn keyword juliaConstC StochasticForcingIsEffectivePressureEnum
++syn keyword juliaConstC StochasticForcingIsStochasticForcingEnum
++syn keyword juliaConstC StochasticForcingIsWaterPressureEnum
++syn keyword juliaConstC StochasticForcingNoisetermsEnum
++syn keyword juliaConstC StochasticForcingNumFieldsEnum
++syn keyword juliaConstC StochasticForcingRandomflagEnum
++syn keyword juliaConstC StochasticForcingTimestepEnum
++syn keyword juliaConstC SolidearthSettingsReltolEnum
++syn keyword juliaConstC SolidearthSettingsSelfAttractionEnum
++syn keyword juliaConstC SolidearthSettingsRotationEnum
++syn keyword juliaConstC SolidearthSettingsMaxSHCoeffEnum
++syn keyword juliaConstC SettingsIoGatherEnum
++syn keyword juliaConstC SettingsNumResultsOnNodesEnum
++syn keyword juliaConstC SettingsOutputFrequencyEnum
++syn keyword juliaConstC SettingsCheckpointFrequencyEnum
++syn keyword juliaConstC SettingsResultsOnNodesEnum
++syn keyword juliaConstC SettingsSbCouplingFrequencyEnum
++syn keyword juliaConstC SettingsSolverResidueThresholdEnum
++syn keyword juliaConstC SettingsWaitonlockEnum
++syn keyword juliaConstC SmbAIceEnum
++syn keyword juliaConstC SmbAIdxEnum
++syn keyword juliaConstC SmbASnowEnum
++syn keyword juliaConstC SmbAccualtiEnum
++syn keyword juliaConstC SmbAccugradEnum
++syn keyword juliaConstC SmbAccurefEnum
++syn keyword juliaConstC SmbAdThreshEnum
++syn keyword juliaConstC SmbAutoregressionInitialTimeEnum
++syn keyword juliaConstC SmbAutoregressionTimestepEnum
++syn keyword juliaConstC SmbAutoregressiveOrderEnum
++syn keyword juliaConstC SmbAveragingEnum
++syn keyword juliaConstC SmbBeta0Enum
++syn keyword juliaConstC SmbBeta1Enum
++syn keyword juliaConstC SmbDesfacEnum
++syn keyword juliaConstC SmbDpermilEnum
++syn keyword juliaConstC SmbDsnowIdxEnum
++syn keyword juliaConstC SmbElevationBinsEnum
++syn keyword juliaConstC SmbCldFracEnum
++syn keyword juliaConstC SmbDelta18oEnum
++syn keyword juliaConstC SmbDelta18oSurfaceEnum
++syn keyword juliaConstC SmbDenIdxEnum
++syn keyword juliaConstC SmbDtEnum
++syn keyword juliaConstC SmbEnum
++syn keyword juliaConstC SmbEIdxEnum
++syn keyword juliaConstC SmbFEnum
++syn keyword juliaConstC SmbInitDensityScalingEnum
++syn keyword juliaConstC SmbIsaccumulationEnum
++syn keyword juliaConstC SmbIsalbedoEnum
++syn keyword juliaConstC SmbIsconstrainsurfaceTEnum
++syn keyword juliaConstC SmbIsd18opdEnum
++syn keyword juliaConstC SmbIsdelta18oEnum
++syn keyword juliaConstC SmbIsdensificationEnum
++syn keyword juliaConstC SmbIsdeltaLWupEnum
++syn keyword juliaConstC SmbIsfirnwarmingEnum
++syn keyword juliaConstC SmbIsgraingrowthEnum
++syn keyword juliaConstC SmbIsmeltEnum
++syn keyword juliaConstC SmbIsmungsmEnum
++syn keyword juliaConstC SmbIsprecipscaledEnum
++syn keyword juliaConstC SmbIssetpddfacEnum
++syn keyword juliaConstC SmbIsshortwaveEnum
++syn keyword juliaConstC SmbIstemperaturescaledEnum
++syn keyword juliaConstC SmbIsthermalEnum
++syn keyword juliaConstC SmbIsturbulentfluxEnum
++syn keyword juliaConstC SmbKEnum
++syn keyword juliaConstC SmbLapseRatesEnum
++syn keyword juliaConstC SmbNumBasinsEnum
++syn keyword juliaConstC SmbNumElevationBinsEnum
++syn keyword juliaConstC SmbNumRequestedOutputsEnum
++syn keyword juliaConstC SmbPfacEnum
++syn keyword juliaConstC SmbPhiEnum
++syn keyword juliaConstC SmbRdlEnum
++syn keyword juliaConstC SmbRefElevationEnum
++syn keyword juliaConstC SmbRequestedOutputsEnum
++syn keyword juliaConstC SmbRlapsEnum
++syn keyword juliaConstC SmbRlapslgmEnum
++syn keyword juliaConstC SmbRunoffaltiEnum
++syn keyword juliaConstC SmbRunoffgradEnum
++syn keyword juliaConstC SmbRunoffrefEnum
++syn keyword juliaConstC SmbSealevEnum
++syn keyword juliaConstC SmbStepsPerStepEnum
++syn keyword juliaConstC SmbSwIdxEnum
++syn keyword juliaConstC SmbT0dryEnum
++syn keyword juliaConstC SmbT0wetEnum
++syn keyword juliaConstC SmbTeThreshEnum
++syn keyword juliaConstC SmbTdiffEnum
++syn keyword juliaConstC SmbThermoDeltaTScalingEnum
++syn keyword juliaConstC SmbTemperaturesReconstructedYearsEnum
++syn keyword juliaConstC SmbPrecipitationsReconstructedYearsEnum
++syn keyword juliaConstC SmoothThicknessMultiplierEnum
++syn keyword juliaConstC SolutionTypeEnum
++syn keyword juliaConstC SteadystateMaxiterEnum
++syn keyword juliaConstC SteadystateNumRequestedOutputsEnum
++syn keyword juliaConstC SteadystateReltolEnum
++syn keyword juliaConstC SteadystateRequestedOutputsEnum
++syn keyword juliaConstC StepEnum
++syn keyword juliaConstC StepsEnum
++syn keyword juliaConstC StressbalanceAbstolEnum
++syn keyword juliaConstC StressbalanceFSreconditioningEnum
++syn keyword juliaConstC StressbalanceIsnewtonEnum
++syn keyword juliaConstC StressbalanceMaxiterEnum
++syn keyword juliaConstC StressbalanceNumRequestedOutputsEnum
++syn keyword juliaConstC StressbalancePenaltyFactorEnum
++syn keyword juliaConstC StressbalanceReltolEnum
++syn keyword juliaConstC StressbalanceRequestedOutputsEnum
++syn keyword juliaConstC StressbalanceRestolEnum
++syn keyword juliaConstC StressbalanceRiftPenaltyThresholdEnum
++syn keyword juliaConstC StressbalanceShelfDampeningEnum
++syn keyword juliaConstC ThermalIsdrainicecolumnEnum
++syn keyword juliaConstC ThermalIsdynamicbasalspcEnum
++syn keyword juliaConstC ThermalIsenthalpyEnum
++syn keyword juliaConstC ThermalMaxiterEnum
++syn keyword juliaConstC ThermalNumRequestedOutputsEnum
++syn keyword juliaConstC ThermalPenaltyFactorEnum
++syn keyword juliaConstC ThermalPenaltyLockEnum
++syn keyword juliaConstC ThermalPenaltyThresholdEnum
++syn keyword juliaConstC ThermalReltolEnum
++syn keyword juliaConstC ThermalRequestedOutputsEnum
++syn keyword juliaConstC ThermalStabilizationEnum
++syn keyword juliaConstC ThermalWatercolumnUpperlimitEnum
++syn keyword juliaConstC TimeEnum
++syn keyword juliaConstC TimesteppingCflCoefficientEnum
++syn keyword juliaConstC TimesteppingCouplingTimeEnum
++syn keyword juliaConstC TimesteppingFinalTimeEnum
++syn keyword juliaConstC TimesteppingInterpForcingEnum
++syn keyword juliaConstC TimesteppingCycleForcingEnum
++syn keyword juliaConstC TimesteppingStartTimeEnum
++syn keyword juliaConstC TimesteppingTimeStepEnum
++syn keyword juliaConstC TimesteppingTimeStepMaxEnum
++syn keyword juliaConstC TimesteppingTimeStepMinEnum
++syn keyword juliaConstC TimesteppingTypeEnum
++syn keyword juliaConstC ToMITgcmCommEnum
++syn keyword juliaConstC ToolkitsFileNameEnum
++syn keyword juliaConstC ToolkitsOptionsAnalysesEnum
++syn keyword juliaConstC ToolkitsOptionsStringsEnum
++syn keyword juliaConstC ToolkitsTypesEnum
++syn keyword juliaConstC TransientAmrFrequencyEnum
++syn keyword juliaConstC TransientIsdamageevolutionEnum
++syn keyword juliaConstC TransientIsesaEnum
++syn keyword juliaConstC TransientIsgiaEnum
++syn keyword juliaConstC TransientIsgroundinglineEnum
++syn keyword juliaConstC TransientIshydrologyEnum
++syn keyword juliaConstC TransientIsmasstransportEnum
++syn keyword juliaConstC TransientIsoceantransportEnum
++syn keyword juliaConstC TransientIsmovingfrontEnum
++syn keyword juliaConstC TransientIsoceancouplingEnum
++syn keyword juliaConstC TransientIssamplingEnum
++syn keyword juliaConstC TransientIsslcEnum
++syn keyword juliaConstC TransientIssmbEnum
++syn keyword juliaConstC TransientIsstressbalanceEnum
++syn keyword juliaConstC TransientIsthermalEnum
++syn keyword juliaConstC TransientNumRequestedOutputsEnum
++syn keyword juliaConstC TransientRequestedOutputsEnum
++syn keyword juliaConstC VelocityEnum
++syn keyword juliaConstC XxeEnum
++syn keyword juliaConstC YyeEnum
++syn keyword juliaConstC ZzeEnum
++syn keyword juliaConstC AreaeEnum
++syn keyword juliaConstC WorldCommEnum
++syn keyword juliaConstC ParametersENDEnum
++syn keyword juliaConstC InputsSTARTEnum
++syn keyword juliaConstC AccumulatedDeltaBottomPressureEnum
++syn keyword juliaConstC AccumulatedDeltaIceThicknessEnum
++syn keyword juliaConstC AccumulatedDeltaTwsEnum
++syn keyword juliaConstC AdjointEnum
++syn keyword juliaConstC AdjointpEnum
++syn keyword juliaConstC AdjointxEnum
++syn keyword juliaConstC AdjointxBaseEnum
++syn keyword juliaConstC AdjointxShearEnum
++syn keyword juliaConstC AdjointyEnum
++syn keyword juliaConstC AdjointyBaseEnum
++syn keyword juliaConstC AdjointyShearEnum
++syn keyword juliaConstC AdjointzEnum
++syn keyword juliaConstC AirEnum
++syn keyword juliaConstC ApproximationEnum
++syn keyword juliaConstC BalancethicknessMisfitEnum
++syn keyword juliaConstC BalancethicknessOmega0Enum
++syn keyword juliaConstC BalancethicknessOmegaEnum
++syn keyword juliaConstC BalancethicknessSpcthicknessEnum
++syn keyword juliaConstC BalancethicknessThickeningRateEnum
++syn keyword juliaConstC BasalCrevasseEnum
++syn keyword juliaConstC BasalforcingsDeepwaterMeltingRateAutoregressionEnum
++syn keyword juliaConstC BasalforcingsDeepwaterMeltingRateNoiseEnum
++syn keyword juliaConstC BasalforcingsDeepwaterMeltingRateValuesAutoregressionEnum
++syn keyword juliaConstC BasalforcingsFloatingiceMeltingRateEnum
++syn keyword juliaConstC BasalforcingsGeothermalfluxEnum
++syn keyword juliaConstC BasalforcingsGroundediceMeltingRateEnum
++syn keyword juliaConstC BasalforcingsLinearBasinIdEnum
++syn keyword juliaConstC BasalforcingsPerturbationMeltingRateEnum
++syn keyword juliaConstC BasalforcingsSpatialDeepwaterElevationEnum
++syn keyword juliaConstC BasalforcingsSpatialDeepwaterMeltingRateEnum
++syn keyword juliaConstC BasalforcingsSpatialUpperwaterElevationEnum
++syn keyword juliaConstC BasalforcingsSpatialUpperwaterMeltingRateEnum
++syn keyword juliaConstC BasalforcingsIsmip6BasinIdEnum
++syn keyword juliaConstC BasalforcingsIsmip6TfEnum
++syn keyword juliaConstC BasalforcingsIsmip6TfShelfEnum
++syn keyword juliaConstC BasalforcingsIsmip6MeltAnomalyEnum
++syn keyword juliaConstC BasalforcingsMeltrateFactorEnum
++syn keyword juliaConstC BasalforcingsOceanSalinityEnum
++syn keyword juliaConstC BasalforcingsOceanTempEnum
++syn keyword juliaConstC BasalforcingsPicoBasinIdEnum
++syn keyword juliaConstC BasalforcingsPicoBoxIdEnum
++syn keyword juliaConstC BasalforcingsPicoOverturningCoeffEnum
++syn keyword juliaConstC BasalforcingsPicoSubShelfOceanOverturningEnum
++syn keyword juliaConstC BasalforcingsPicoSubShelfOceanSalinityEnum
++syn keyword juliaConstC BasalforcingsPicoSubShelfOceanTempEnum
++syn keyword juliaConstC BasalStressxEnum
++syn keyword juliaConstC BasalStressyEnum
++syn keyword juliaConstC BasalStressEnum
++syn keyword juliaConstC BaseEnum
++syn keyword juliaConstC BaseOldEnum
++syn keyword juliaConstC BaseSlopeXEnum
++syn keyword juliaConstC BaseSlopeYEnum
++syn keyword juliaConstC BaselineBasalforcingsFloatingiceMeltingRateEnum
++syn keyword juliaConstC BaselineBasalforcingsSpatialDeepwaterMeltingRateEnum
++syn keyword juliaConstC BaselineCalvingCalvingrateEnum
++syn keyword juliaConstC BaselineFrictionEffectivePressureEnum
++syn keyword juliaConstC BaselineSmbMassBalanceEnum
++syn keyword juliaConstC BedEnum
++syn keyword juliaConstC BedGRDEnum
++syn keyword juliaConstC BedEastEnum
++syn keyword juliaConstC BedEastGRDEnum
++syn keyword juliaConstC BedNorthEnum
++syn keyword juliaConstC BedNorthGRDEnum
++syn keyword juliaConstC BedSlopeXEnum
++syn keyword juliaConstC BedSlopeYEnum
++syn keyword juliaConstC BottomPressureEnum
++syn keyword juliaConstC BottomPressureOldEnum
++syn keyword juliaConstC CalvingCalvingrateEnum
++syn keyword juliaConstC CalvingHabFractionEnum
++syn keyword juliaConstC CalvingAblationrateEnum
++syn keyword juliaConstC CalvingMeltingrateEnum
++syn keyword juliaConstC CalvingStressThresholdFloatingiceEnum
++syn keyword juliaConstC CalvingStressThresholdGroundediceEnum
++syn keyword juliaConstC CalvinglevermannCoeffEnum
++syn keyword juliaConstC CalvingratexEnum
++syn keyword juliaConstC CalvingrateyEnum
++syn keyword juliaConstC CalvingFluxLevelsetEnum
++syn keyword juliaConstC CalvingMeltingFluxLevelsetEnum
++syn keyword juliaConstC ConvergedEnum
++syn keyword juliaConstC CrevasseDepthEnum
++syn keyword juliaConstC DamageDEnum
++syn keyword juliaConstC DamageDOldEnum
++syn keyword juliaConstC DamageDbarEnum
++syn keyword juliaConstC DamageDbarOldEnum
++syn keyword juliaConstC DamageFEnum
++syn keyword juliaConstC DegreeOfChannelizationEnum
++syn keyword juliaConstC DepthBelowSurfaceEnum
++syn keyword juliaConstC DeltaIceThicknessEnum
++syn keyword juliaConstC DeltaTwsEnum
++syn keyword juliaConstC DeltaBottomPressureEnum
++syn keyword juliaConstC DeltaDslEnum
++syn keyword juliaConstC DslOldEnum
++syn keyword juliaConstC DslEnum
++syn keyword juliaConstC DeltaStrEnum
++syn keyword juliaConstC StrOldEnum
++syn keyword juliaConstC StrEnum
++syn keyword juliaConstC DeviatoricStresseffectiveEnum
++syn keyword juliaConstC DeviatoricStressxxEnum
++syn keyword juliaConstC DeviatoricStressxyEnum
++syn keyword juliaConstC DeviatoricStressxzEnum
++syn keyword juliaConstC DeviatoricStressyyEnum
++syn keyword juliaConstC DeviatoricStressyzEnum
++syn keyword juliaConstC DeviatoricStresszzEnum
++syn keyword juliaConstC DeviatoricStress1Enum
++syn keyword juliaConstC DeviatoricStress2Enum
++syn keyword juliaConstC DistanceToCalvingfrontEnum
++syn keyword juliaConstC DistanceToGroundinglineEnum
++syn keyword juliaConstC Domain2DhorizontalEnum
++syn keyword juliaConstC Domain2DverticalEnum
++syn keyword juliaConstC Domain3DEnum
++syn keyword juliaConstC DragCoefficientAbsGradientEnum
++syn keyword juliaConstC DrivingStressXEnum
++syn keyword juliaConstC DrivingStressYEnum
++syn keyword juliaConstC DummyEnum
++syn keyword juliaConstC EffectivePressureEnum
++syn keyword juliaConstC EffectivePressureSubstepEnum
++syn keyword juliaConstC EffectivePressureTransientEnum
++syn keyword juliaConstC EnthalpyEnum
++syn keyword juliaConstC EnthalpyPicardEnum
++syn keyword juliaConstC EplHeadEnum
++syn keyword juliaConstC EplHeadOldEnum
++syn keyword juliaConstC EplHeadSlopeXEnum
++syn keyword juliaConstC EplHeadSlopeYEnum
++syn keyword juliaConstC EplHeadSubstepEnum
++syn keyword juliaConstC EplHeadTransientEnum
++syn keyword juliaConstC EsaEmotionEnum
++syn keyword juliaConstC EsaNmotionEnum
++syn keyword juliaConstC EsaRotationrateEnum
++syn keyword juliaConstC EsaStrainratexxEnum
++syn keyword juliaConstC EsaStrainratexyEnum
++syn keyword juliaConstC EsaStrainrateyyEnum
++syn keyword juliaConstC EsaUmotionEnum
++syn keyword juliaConstC EsaXmotionEnum
++syn keyword juliaConstC EsaYmotionEnum
++syn keyword juliaConstC EtaDiffEnum
++syn keyword juliaConstC FlowequationBorderFSEnum
++syn keyword juliaConstC FrictionAsEnum
++syn keyword juliaConstC FrictionCEnum
++syn keyword juliaConstC FrictionCmaxEnum
++syn keyword juliaConstC FrictionCoefficientEnum
++syn keyword juliaConstC FrictionCoefficientcoulombEnum
++syn keyword juliaConstC FrictionEffectivePressureEnum
++syn keyword juliaConstC FrictionMEnum
++syn keyword juliaConstC FrictionPEnum
++syn keyword juliaConstC FrictionPressureAdjustedTemperatureEnum
++syn keyword juliaConstC FrictionQEnum
++syn keyword juliaConstC FrictionSedimentCompressibilityCoefficientEnum
++syn keyword juliaConstC FrictionTillFrictionAngleEnum
++syn keyword juliaConstC FrictionWaterLayerEnum
++syn keyword juliaConstC FrictionfEnum
++syn keyword juliaConstC FrontalForcingsBasinIdEnum
++syn keyword juliaConstC FrontalForcingsSubglacialDischargeEnum
++syn keyword juliaConstC FrontalForcingsThermalForcingEnum
++syn keyword juliaConstC GeometryHydrostaticRatioEnum
++syn keyword juliaConstC NGiaEnum
++syn keyword juliaConstC NGiaRateEnum
++syn keyword juliaConstC UGiaEnum
++syn keyword juliaConstC UGiaRateEnum
++syn keyword juliaConstC GradientEnum
++syn keyword juliaConstC GroundinglineHeightEnum
++syn keyword juliaConstC HydraulicPotentialEnum
++syn keyword juliaConstC HydraulicPotentialOldEnum
++syn keyword juliaConstC HydrologyBasalFluxEnum
++syn keyword juliaConstC HydrologyBumpHeightEnum
++syn keyword juliaConstC HydrologyBumpSpacingEnum
++syn keyword juliaConstC HydrologydcBasalMoulinInputEnum
++syn keyword juliaConstC HydrologydcEplThicknessEnum
++syn keyword juliaConstC HydrologydcEplThicknessOldEnum
++syn keyword juliaConstC HydrologydcEplThicknessSubstepEnum
++syn keyword juliaConstC HydrologydcEplThicknessTransientEnum
++syn keyword juliaConstC HydrologydcMaskEplactiveEltEnum
++syn keyword juliaConstC HydrologydcMaskEplactiveNodeEnum
++syn keyword juliaConstC HydrologydcMaskThawedEltEnum
++syn keyword juliaConstC HydrologydcMaskThawedNodeEnum
++syn keyword juliaConstC HydrologydcSedimentTransmitivityEnum
++syn keyword juliaConstC HydrologyDrainageRateEnum
++syn keyword juliaConstC HydrologyEnglacialInputEnum
++syn keyword juliaConstC HydrologyGapHeightEnum
++syn keyword juliaConstC HydrologyGapHeightXEnum
++syn keyword juliaConstC HydrologyGapHeightXXEnum
++syn keyword juliaConstC HydrologyGapHeightYEnum
++syn keyword juliaConstC HydrologyGapHeightYYEnum
++syn keyword juliaConstC HydrologyHeadEnum
++syn keyword juliaConstC HydrologyHeadOldEnum
++syn keyword juliaConstC HydrologyMoulinInputEnum
++syn keyword juliaConstC HydrologyNeumannfluxEnum
++syn keyword juliaConstC HydrologyReynoldsEnum
++syn keyword juliaConstC HydrologySheetConductivityEnum
++syn keyword juliaConstC HydrologySheetThicknessEnum
++syn keyword juliaConstC HydrologySheetThicknessOldEnum
++syn keyword juliaConstC HydrologyTwsEnum
++syn keyword juliaConstC HydrologyTwsSpcEnum
++syn keyword juliaConstC HydrologyTwsAnalysisEnum
++syn keyword juliaConstC HydrologyWatercolumnMaxEnum
++syn keyword juliaConstC HydrologyWaterVxEnum
++syn keyword juliaConstC HydrologyWaterVyEnum
++syn keyword juliaConstC IceEnum
++syn keyword juliaConstC IceMaskNodeActivationEnum
++syn keyword juliaConstC InputEnum
++syn keyword juliaConstC InversionCostFunctionsCoefficientsEnum
++syn keyword juliaConstC InversionSurfaceObsEnum
++syn keyword juliaConstC InversionThicknessObsEnum
++syn keyword juliaConstC InversionVelObsEnum
++syn keyword juliaConstC InversionVxObsEnum
++syn keyword juliaConstC InversionVyObsEnum
++syn keyword juliaConstC LevelsetfunctionSlopeXEnum
++syn keyword juliaConstC LevelsetfunctionSlopeYEnum
++syn keyword juliaConstC LevelsetObservationEnum
++syn keyword juliaConstC LoadingforceXEnum
++syn keyword juliaConstC LoadingforceYEnum
++syn keyword juliaConstC LoadingforceZEnum
++syn keyword juliaConstC MaskOceanLevelsetEnum
++syn keyword juliaConstC MaskIceLevelsetEnum
++syn keyword juliaConstC MaskIceRefLevelsetEnum
++syn keyword juliaConstC MasstransportSpcthicknessEnum
++syn keyword juliaConstC MaterialsRheologyBEnum
++syn keyword juliaConstC MaterialsRheologyBbarEnum
++syn keyword juliaConstC MaterialsRheologyEEnum
++syn keyword juliaConstC MaterialsRheologyEbarEnum
++syn keyword juliaConstC MaterialsRheologyEcEnum
++syn keyword juliaConstC MaterialsRheologyEcbarEnum
++syn keyword juliaConstC MaterialsRheologyEsEnum
++syn keyword juliaConstC MaterialsRheologyEsbarEnum
++syn keyword juliaConstC MaterialsRheologyNEnum
++syn keyword juliaConstC MeshScaleFactorEnum
++syn keyword juliaConstC MeshVertexonbaseEnum
++syn keyword juliaConstC MeshVertexonboundaryEnum
++syn keyword juliaConstC MeshVertexonsurfaceEnum
++syn keyword juliaConstC MisfitEnum
++syn keyword juliaConstC MovingFrontalVxEnum
++syn keyword juliaConstC MovingFrontalVyEnum
++syn keyword juliaConstC NeumannfluxEnum
++syn keyword juliaConstC NewDamageEnum
++syn keyword juliaConstC NodeEnum
++syn keyword juliaConstC OmegaAbsGradientEnum
++syn keyword juliaConstC OceantransportSpcbottompressureEnum
++syn keyword juliaConstC OceantransportSpcstrEnum
++syn keyword juliaConstC OceantransportSpcdslEnum
++syn keyword juliaConstC P0Enum
++syn keyword juliaConstC P1Enum
++syn keyword juliaConstC PartitioningEnum
++syn keyword juliaConstC PressureEnum
++syn keyword juliaConstC RadarEnum
++syn keyword juliaConstC RadarAttenuationMacGregorEnum
++syn keyword juliaConstC RadarAttenuationWolffEnum
++syn keyword juliaConstC RadarIcePeriodEnum
++syn keyword juliaConstC RadarPowerMacGregorEnum
++syn keyword juliaConstC RadarPowerWolffEnum
++syn keyword juliaConstC RheologyBAbsGradientEnum
++syn keyword juliaConstC RheologyBInitialguessEnum
++syn keyword juliaConstC RheologyBInitialguessMisfitEnum
++syn keyword juliaConstC RheologyBbarAbsGradientEnum
++syn keyword juliaConstC SampleEnum
++syn keyword juliaConstC SampleOldEnum
++syn keyword juliaConstC SampleNoiseEnum
++syn keyword juliaConstC SamplingBetaEnum
++syn keyword juliaConstC SamplingKappaEnum
++syn keyword juliaConstC SamplingPhiEnum
++syn keyword juliaConstC SamplingTauEnum
++syn keyword juliaConstC SealevelEnum
++syn keyword juliaConstC SealevelGRDEnum
++syn keyword juliaConstC SatGraviGRDEnum
++syn keyword juliaConstC SealevelBarystaticMaskEnum
++syn keyword juliaConstC SealevelBarystaticIceMaskEnum
++syn keyword juliaConstC SealevelBarystaticIceWeightsEnum
++syn keyword juliaConstC SealevelBarystaticIceAreaEnum
++syn keyword juliaConstC SealevelBarystaticIceLatbarEnum
++syn keyword juliaConstC SealevelBarystaticIceLongbarEnum
++syn keyword juliaConstC SealevelBarystaticIceLoadEnum
++syn keyword juliaConstC SealevelBarystaticHydroMaskEnum
++syn keyword juliaConstC SealevelBarystaticHydroWeightsEnum
++syn keyword juliaConstC SealevelBarystaticHydroAreaEnum
++syn keyword juliaConstC SealevelBarystaticHydroLatbarEnum
++syn keyword juliaConstC SealevelBarystaticHydroLongbarEnum
++syn keyword juliaConstC SealevelBarystaticHydroLoadEnum
++syn keyword juliaConstC SealevelBarystaticBpMaskEnum
++syn keyword juliaConstC SealevelBarystaticBpWeightsEnum
++syn keyword juliaConstC SealevelBarystaticBpAreaEnum
++syn keyword juliaConstC SealevelBarystaticBpLoadEnum
++syn keyword juliaConstC SealevelBarystaticOceanMaskEnum
++syn keyword juliaConstC SealevelBarystaticOceanWeightsEnum
++syn keyword juliaConstC SealevelBarystaticOceanAreaEnum
++syn keyword juliaConstC SealevelBarystaticOceanLatbarEnum
++syn keyword juliaConstC SealevelBarystaticOceanLongbarEnum
++syn keyword juliaConstC SealevelBarystaticOceanLoadEnum
++syn keyword juliaConstC SealevelNEsaEnum
++syn keyword juliaConstC SealevelNEsaRateEnum
++syn keyword juliaConstC SealevelRSLEnum
++syn keyword juliaConstC BslcEnum
++syn keyword juliaConstC BslcIceEnum
++syn keyword juliaConstC BslcHydroEnum
++syn keyword juliaConstC BslcOceanEnum
++syn keyword juliaConstC BslcRateEnum
++syn keyword juliaConstC GmtslcEnum
++syn keyword juliaConstC SealevelRSLBarystaticEnum
++syn keyword juliaConstC SealevelRSLRateEnum
++syn keyword juliaConstC SealevelUGrdEnum
++syn keyword juliaConstC SealevelNGrdEnum
++syn keyword juliaConstC SealevelUEastEsaEnum
++syn keyword juliaConstC SealevelUNorthEsaEnum
++syn keyword juliaConstC SealevelchangeIndicesEnum
++syn keyword juliaConstC SealevelchangeAlphaIndexEnum
++syn keyword juliaConstC SealevelchangeAzimuthIndexEnum
++syn keyword juliaConstC SealevelchangeGrotEnum
++syn keyword juliaConstC SealevelchangeGSatGravirotEnum
++syn keyword juliaConstC SealevelchangeGUrotEnum
++syn keyword juliaConstC SealevelchangeGNrotEnum
++syn keyword juliaConstC SealevelchangeGErotEnum
++syn keyword juliaConstC SealevelchangeAlphaIndexOceanEnum
++syn keyword juliaConstC SealevelchangeAlphaIndexIceEnum
++syn keyword juliaConstC SealevelchangeAlphaIndexHydroEnum
++syn keyword juliaConstC SealevelchangeAzimuthIndexOceanEnum
++syn keyword juliaConstC SealevelchangeAzimuthIndexIceEnum
++syn keyword juliaConstC SealevelchangeAzimuthIndexHydroEnum
++syn keyword juliaConstC SealevelchangeViscousRSLEnum
++syn keyword juliaConstC SealevelchangeViscousSGEnum
++syn keyword juliaConstC SealevelchangeViscousUEnum
++syn keyword juliaConstC SealevelchangeViscousNEnum
++syn keyword juliaConstC SealevelchangeViscousEEnum
++syn keyword juliaConstC SedimentHeadEnum
++syn keyword juliaConstC SedimentHeadOldEnum
++syn keyword juliaConstC SedimentHeadSubstepEnum
++syn keyword juliaConstC SedimentHeadTransientEnum
++syn keyword juliaConstC SedimentHeadResidualEnum
++syn keyword juliaConstC SedimentHeadStackedEnum
++syn keyword juliaConstC SigmaNNEnum
++syn keyword juliaConstC SigmaVMEnum
++syn keyword juliaConstC SmbAccumulatedECEnum
++syn keyword juliaConstC SmbAccumulatedMassBalanceEnum
++syn keyword juliaConstC SmbAccumulatedMeltEnum
++syn keyword juliaConstC SmbAccumulatedPrecipitationEnum
++syn keyword juliaConstC SmbAccumulatedRainEnum
++syn keyword juliaConstC SmbAccumulatedRefreezeEnum
++syn keyword juliaConstC SmbAccumulatedRunoffEnum
++syn keyword juliaConstC SmbAEnum
++syn keyword juliaConstC SmbAdiffEnum
++syn keyword juliaConstC SmbAValueEnum
++syn keyword juliaConstC SmbAccumulationEnum
++syn keyword juliaConstC SmbAdiffiniEnum
++syn keyword juliaConstC SmbAiniEnum
++syn keyword juliaConstC SmbAutoregressionNoiseEnum
++syn keyword juliaConstC SmbBasinsIdEnum
++syn keyword juliaConstC SmbBMaxEnum
++syn keyword juliaConstC SmbBMinEnum
++syn keyword juliaConstC SmbBNegEnum
++syn keyword juliaConstC SmbBPosEnum
++syn keyword juliaConstC SmbCEnum
++syn keyword juliaConstC SmbCcsnowValueEnum
++syn keyword juliaConstC SmbCciceValueEnum
++syn keyword juliaConstC SmbCotValueEnum
++syn keyword juliaConstC SmbDEnum
++syn keyword juliaConstC SmbDailyairdensityEnum
++syn keyword juliaConstC SmbDailyairhumidityEnum
++syn keyword juliaConstC SmbDailydlradiationEnum
++syn keyword juliaConstC SmbDailydsradiationEnum
++syn keyword juliaConstC SmbDailypressureEnum
++syn keyword juliaConstC SmbDailyrainfallEnum
++syn keyword juliaConstC SmbDailysnowfallEnum
++syn keyword juliaConstC SmbDailytemperatureEnum
++syn keyword juliaConstC SmbDailywindspeedEnum
++syn keyword juliaConstC SmbDiniEnum
++syn keyword juliaConstC SmbDlwrfEnum
++syn keyword juliaConstC SmbDulwrfValueEnum
++syn keyword juliaConstC SmbDswrfEnum
++syn keyword juliaConstC SmbDswdiffrfEnum
++syn keyword juliaConstC SmbDzAddEnum
++syn keyword juliaConstC SmbDzEnum
++syn keyword juliaConstC SmbDzMinEnum
++syn keyword juliaConstC SmbDzTopEnum
++syn keyword juliaConstC SmbDziniEnum
++syn keyword juliaConstC SmbEAirEnum
++syn keyword juliaConstC SmbECEnum
++syn keyword juliaConstC SmbECDtEnum
++syn keyword juliaConstC SmbECiniEnum
++syn keyword juliaConstC SmbElaEnum
++syn keyword juliaConstC SmbEvaporationEnum
++syn keyword juliaConstC SmbFACEnum
++syn keyword juliaConstC SmbGdnEnum
++syn keyword juliaConstC SmbGdniniEnum
++syn keyword juliaConstC SmbGspEnum
++syn keyword juliaConstC SmbGspiniEnum
++syn keyword juliaConstC SmbHrefEnum
++syn keyword juliaConstC SmbIsInitializedEnum
++syn keyword juliaConstC SmbMAddEnum
++syn keyword juliaConstC SmbMassBalanceEnum
++syn keyword juliaConstC SmbMassBalanceSubstepEnum
++syn keyword juliaConstC SmbMassBalanceTransientEnum
++syn keyword juliaConstC SmbMeanLHFEnum
++syn keyword juliaConstC SmbMeanSHFEnum
++syn keyword juliaConstC SmbMeanULWEnum
++syn keyword juliaConstC SmbMeltEnum
++syn keyword juliaConstC SmbMonthlytemperaturesEnum
++syn keyword juliaConstC SmbMSurfEnum
++syn keyword juliaConstC SmbNetLWEnum
++syn keyword juliaConstC SmbNetSWEnum
++syn keyword juliaConstC SmbPAirEnum
++syn keyword juliaConstC SmbPEnum
++syn keyword juliaConstC SmbPddfacIceEnum
++syn keyword juliaConstC SmbPddfacSnowEnum
++syn keyword juliaConstC SmbPrecipitationEnum
++syn keyword juliaConstC SmbPrecipitationsAnomalyEnum
++syn keyword juliaConstC SmbPrecipitationsLgmEnum
++syn keyword juliaConstC SmbPrecipitationsPresentdayEnum
++syn keyword juliaConstC SmbPrecipitationsReconstructedEnum
++syn keyword juliaConstC SmbRainEnum
++syn keyword juliaConstC SmbReEnum
++syn keyword juliaConstC SmbRefreezeEnum
++syn keyword juliaConstC SmbReiniEnum
++syn keyword juliaConstC SmbRunoffEnum
++syn keyword juliaConstC SmbRunoffSubstepEnum
++syn keyword juliaConstC SmbRunoffTransientEnum
++syn keyword juliaConstC SmbS0gcmEnum
++syn keyword juliaConstC SmbS0pEnum
++syn keyword juliaConstC SmbS0tEnum
++syn keyword juliaConstC SmbSizeiniEnum
++syn keyword juliaConstC SmbSmbCorrEnum
++syn keyword juliaConstC SmbSmbrefEnum
++syn keyword juliaConstC SmbSzaValueEnum
++syn keyword juliaConstC SmbTEnum
++syn keyword juliaConstC SmbTaEnum
++syn keyword juliaConstC SmbTeValueEnum
++syn keyword juliaConstC SmbTemperaturesAnomalyEnum
++syn keyword juliaConstC SmbTemperaturesLgmEnum
++syn keyword juliaConstC SmbTemperaturesPresentdayEnum
++syn keyword juliaConstC SmbTemperaturesReconstructedEnum
++syn keyword juliaConstC SmbTiniEnum
++syn keyword juliaConstC SmbTmeanEnum
++syn keyword juliaConstC SmbTzEnum
++syn keyword juliaConstC SmbValuesAutoregressionEnum
++syn keyword juliaConstC SmbVEnum
++syn keyword juliaConstC SmbVmeanEnum
++syn keyword juliaConstC SmbVzEnum
++syn keyword juliaConstC SmbWEnum
++syn keyword juliaConstC SmbWAddEnum
++syn keyword juliaConstC SmbWiniEnum
++syn keyword juliaConstC SmbZMaxEnum
++syn keyword juliaConstC SmbZMinEnum
++syn keyword juliaConstC SmbZTopEnum
++syn keyword juliaConstC SmbZYEnum
++syn keyword juliaConstC SolidearthExternalDisplacementEastRateEnum
++syn keyword juliaConstC SolidearthExternalDisplacementNorthRateEnum
++syn keyword juliaConstC SolidearthExternalDisplacementUpRateEnum
++syn keyword juliaConstC SolidearthExternalGeoidRateEnum
++syn keyword juliaConstC StochasticForcingDefaultIdEnum
++syn keyword juliaConstC StrainRateeffectiveEnum
++syn keyword juliaConstC StrainRateparallelEnum
++syn keyword juliaConstC StrainRateperpendicularEnum
++syn keyword juliaConstC StrainRatexxEnum
++syn keyword juliaConstC StrainRatexyEnum
++syn keyword juliaConstC StrainRatexzEnum
++syn keyword juliaConstC StrainRateyyEnum
++syn keyword juliaConstC StrainRateyzEnum
++syn keyword juliaConstC StrainRatezzEnum
++syn keyword juliaConstC StressMaxPrincipalEnum
++syn keyword juliaConstC StressTensorxxEnum
++syn keyword juliaConstC StressTensorxyEnum
++syn keyword juliaConstC StressTensorxzEnum
++syn keyword juliaConstC StressTensoryyEnum
++syn keyword juliaConstC StressTensoryzEnum
++syn keyword juliaConstC StressTensorzzEnum
++syn keyword juliaConstC SurfaceAbsMisfitEnum
++syn keyword juliaConstC SurfaceAbsVelMisfitEnum
++syn keyword juliaConstC AreaEnum
++syn keyword juliaConstC SealevelAreaEnum
++syn keyword juliaConstC SurfaceAreaEnum
++syn keyword juliaConstC SurfaceAverageVelMisfitEnum
++syn keyword juliaConstC SurfaceCrevasseEnum
++syn keyword juliaConstC SurfaceEnum
++syn keyword juliaConstC SurfaceOldEnum
++syn keyword juliaConstC SurfaceLogVelMisfitEnum
++syn keyword juliaConstC SurfaceLogVxVyMisfitEnum
++syn keyword juliaConstC SurfaceObservationEnum
++syn keyword juliaConstC SurfaceRelVelMisfitEnum
++syn keyword juliaConstC SurfaceSlopeXEnum
++syn keyword juliaConstC SurfaceSlopeYEnum
++syn keyword juliaConstC TemperatureEnum
++syn keyword juliaConstC TemperaturePDDEnum
++syn keyword juliaConstC TemperaturePicardEnum
++syn keyword juliaConstC TemperatureSEMICEnum
++syn keyword juliaConstC ThermalforcingAutoregressionNoiseEnum
++syn keyword juliaConstC ThermalforcingValuesAutoregressionEnum
++syn keyword juliaConstC ThermalSpctemperatureEnum
++syn keyword juliaConstC ThicknessAbsGradientEnum
++syn keyword juliaConstC ThicknessAbsMisfitEnum
++syn keyword juliaConstC ThicknessAcrossGradientEnum
++syn keyword juliaConstC ThicknessAlongGradientEnum
++syn keyword juliaConstC ThicknessEnum
++syn keyword juliaConstC ThicknessOldEnum
++syn keyword juliaConstC ThicknessPositiveEnum
++syn keyword juliaConstC ThicknessResidualEnum
++syn keyword juliaConstC TransientAccumulatedDeltaIceThicknessEnum
++syn keyword juliaConstC VelEnum
++syn keyword juliaConstC VxAverageEnum
++syn keyword juliaConstC VxBaseEnum
++syn keyword juliaConstC VxEnum
++syn keyword juliaConstC VxMeshEnum
++syn keyword juliaConstC VxObsEnum
++syn keyword juliaConstC VxShearEnum
++syn keyword juliaConstC VxSurfaceEnum
++syn keyword juliaConstC VyAverageEnum
++syn keyword juliaConstC VyBaseEnum
++syn keyword juliaConstC VyEnum
++syn keyword juliaConstC VyMeshEnum
++syn keyword juliaConstC VyObsEnum
++syn keyword juliaConstC VyShearEnum
++syn keyword juliaConstC VySurfaceEnum
++syn keyword juliaConstC VzEnum
++syn keyword juliaConstC VzFSEnum
++syn keyword juliaConstC VzHOEnum
++syn keyword juliaConstC VzMeshEnum
++syn keyword juliaConstC VzSSAEnum
++syn keyword juliaConstC WaterColumnOldEnum
++syn keyword juliaConstC WatercolumnEnum
++syn keyword juliaConstC WaterfractionDrainageEnum
++syn keyword juliaConstC WaterfractionDrainageIntegratedEnum
++syn keyword juliaConstC WaterfractionEnum
++syn keyword juliaConstC WaterheightEnum
++syn keyword juliaConstC FrictionWaterPressureEnum
++syn keyword juliaConstC FrictionWaterPressureNoiseEnum
++syn keyword juliaConstC WeightsLevelsetObservationEnum
++syn keyword juliaConstC WeightsSurfaceObservationEnum
++syn keyword juliaConstC OldAccumulatedDeltaBottomPressureEnum
++syn keyword juliaConstC OldAccumulatedDeltaIceThicknessEnum
++syn keyword juliaConstC OldAccumulatedDeltaTwsEnum
++syn keyword juliaConstC Outputdefinition1Enum
++syn keyword juliaConstC Outputdefinition10Enum
++syn keyword juliaConstC Outputdefinition11Enum
++syn keyword juliaConstC Outputdefinition12Enum
++syn keyword juliaConstC Outputdefinition13Enum
++syn keyword juliaConstC Outputdefinition14Enum
++syn keyword juliaConstC Outputdefinition15Enum
++syn keyword juliaConstC Outputdefinition16Enum
++syn keyword juliaConstC Outputdefinition17Enum
++syn keyword juliaConstC Outputdefinition18Enum
++syn keyword juliaConstC Outputdefinition19Enum
++syn keyword juliaConstC Outputdefinition20Enum
++syn keyword juliaConstC Outputdefinition21Enum
++syn keyword juliaConstC Outputdefinition22Enum
++syn keyword juliaConstC Outputdefinition23Enum
++syn keyword juliaConstC Outputdefinition24Enum
++syn keyword juliaConstC Outputdefinition25Enum
++syn keyword juliaConstC Outputdefinition26Enum
++syn keyword juliaConstC Outputdefinition27Enum
++syn keyword juliaConstC Outputdefinition28Enum
++syn keyword juliaConstC Outputdefinition29Enum
++syn keyword juliaConstC Outputdefinition2Enum
++syn keyword juliaConstC Outputdefinition30Enum
++syn keyword juliaConstC Outputdefinition31Enum
++syn keyword juliaConstC Outputdefinition32Enum
++syn keyword juliaConstC Outputdefinition33Enum
++syn keyword juliaConstC Outputdefinition34Enum
++syn keyword juliaConstC Outputdefinition35Enum
++syn keyword juliaConstC Outputdefinition36Enum
++syn keyword juliaConstC Outputdefinition37Enum
++syn keyword juliaConstC Outputdefinition38Enum
++syn keyword juliaConstC Outputdefinition39Enum
++syn keyword juliaConstC Outputdefinition3Enum
++syn keyword juliaConstC Outputdefinition40Enum
++syn keyword juliaConstC Outputdefinition41Enum
++syn keyword juliaConstC Outputdefinition42Enum
++syn keyword juliaConstC Outputdefinition43Enum
++syn keyword juliaConstC Outputdefinition44Enum
++syn keyword juliaConstC Outputdefinition45Enum
++syn keyword juliaConstC Outputdefinition46Enum
++syn keyword juliaConstC Outputdefinition47Enum
++syn keyword juliaConstC Outputdefinition48Enum
++syn keyword juliaConstC Outputdefinition49Enum
++syn keyword juliaConstC Outputdefinition4Enum
++syn keyword juliaConstC Outputdefinition50Enum
++syn keyword juliaConstC Outputdefinition51Enum
++syn keyword juliaConstC Outputdefinition52Enum
++syn keyword juliaConstC Outputdefinition53Enum
++syn keyword juliaConstC Outputdefinition54Enum
++syn keyword juliaConstC Outputdefinition55Enum
++syn keyword juliaConstC Outputdefinition56Enum
++syn keyword juliaConstC Outputdefinition57Enum
++syn keyword juliaConstC Outputdefinition58Enum
++syn keyword juliaConstC Outputdefinition59Enum
++syn keyword juliaConstC Outputdefinition5Enum
++syn keyword juliaConstC Outputdefinition60Enum
++syn keyword juliaConstC Outputdefinition61Enum
++syn keyword juliaConstC Outputdefinition62Enum
++syn keyword juliaConstC Outputdefinition63Enum
++syn keyword juliaConstC Outputdefinition64Enum
++syn keyword juliaConstC Outputdefinition65Enum
++syn keyword juliaConstC Outputdefinition66Enum
++syn keyword juliaConstC Outputdefinition67Enum
++syn keyword juliaConstC Outputdefinition68Enum
++syn keyword juliaConstC Outputdefinition69Enum
++syn keyword juliaConstC Outputdefinition6Enum
++syn keyword juliaConstC Outputdefinition70Enum
++syn keyword juliaConstC Outputdefinition71Enum
++syn keyword juliaConstC Outputdefinition72Enum
++syn keyword juliaConstC Outputdefinition73Enum
++syn keyword juliaConstC Outputdefinition74Enum
++syn keyword juliaConstC Outputdefinition75Enum
++syn keyword juliaConstC Outputdefinition76Enum
++syn keyword juliaConstC Outputdefinition77Enum
++syn keyword juliaConstC Outputdefinition78Enum
++syn keyword juliaConstC Outputdefinition79Enum
++syn keyword juliaConstC Outputdefinition7Enum
++syn keyword juliaConstC Outputdefinition80Enum
++syn keyword juliaConstC Outputdefinition81Enum
++syn keyword juliaConstC Outputdefinition82Enum
++syn keyword juliaConstC Outputdefinition83Enum
++syn keyword juliaConstC Outputdefinition84Enum
++syn keyword juliaConstC Outputdefinition85Enum
++syn keyword juliaConstC Outputdefinition86Enum
++syn keyword juliaConstC Outputdefinition87Enum
++syn keyword juliaConstC Outputdefinition88Enum
++syn keyword juliaConstC Outputdefinition89Enum
++syn keyword juliaConstC Outputdefinition8Enum
++syn keyword juliaConstC Outputdefinition90Enum
++syn keyword juliaConstC Outputdefinition91Enum
++syn keyword juliaConstC Outputdefinition92Enum
++syn keyword juliaConstC Outputdefinition93Enum
++syn keyword juliaConstC Outputdefinition94Enum
++syn keyword juliaConstC Outputdefinition95Enum
++syn keyword juliaConstC Outputdefinition96Enum
++syn keyword juliaConstC Outputdefinition97Enum
++syn keyword juliaConstC Outputdefinition98Enum
++syn keyword juliaConstC Outputdefinition99Enum
++syn keyword juliaConstC Outputdefinition9Enum
++syn keyword juliaConstC Outputdefinition100Enum
++syn keyword juliaConstC InputsENDEnum
++syn keyword juliaConstC AbsoluteEnum
++syn keyword juliaConstC AdaptiveTimesteppingEnum
++syn keyword juliaConstC AdjointBalancethickness2AnalysisEnum
++syn keyword juliaConstC AdjointBalancethicknessAnalysisEnum
++syn keyword juliaConstC AdjointHorizAnalysisEnum
++syn keyword juliaConstC AggressiveMigrationEnum
++syn keyword juliaConstC AmrBamgEnum
++syn keyword juliaConstC AmrNeopzEnum
++syn keyword juliaConstC AndroidFrictionCoefficientEnum
++syn keyword juliaConstC ArrheniusEnum
++syn keyword juliaConstC AutodiffJacobianEnum
++syn keyword juliaConstC AutoregressionLinearFloatingMeltRateEnum
++syn keyword juliaConstC Balancethickness2AnalysisEnum
++syn keyword juliaConstC Balancethickness2SolutionEnum
++syn keyword juliaConstC BalancethicknessAnalysisEnum
++syn keyword juliaConstC BalancethicknessApparentMassbalanceEnum
++syn keyword juliaConstC BalancethicknessSoftAnalysisEnum
++syn keyword juliaConstC BalancethicknessSoftSolutionEnum
++syn keyword juliaConstC BalancethicknessSolutionEnum
++syn keyword juliaConstC BalancevelocityAnalysisEnum
++syn keyword juliaConstC BalancevelocitySolutionEnum
++syn keyword juliaConstC BasalforcingsIsmip6Enum
++syn keyword juliaConstC BasalforcingsPicoEnum
++syn keyword juliaConstC BeckmannGoosseFloatingMeltRateEnum
++syn keyword juliaConstC BedSlopeSolutionEnum
++syn keyword juliaConstC BoolExternalResultEnum
++syn keyword juliaConstC BoolInputEnum
++syn keyword juliaConstC IntInputEnum
++syn keyword juliaConstC DoubleInputEnum
++syn keyword juliaConstC BoolParamEnum
++syn keyword juliaConstC BoundaryEnum
++syn keyword juliaConstC BuddJackaEnum
++syn keyword juliaConstC CalvingDev2Enum
++syn keyword juliaConstC CalvingHabEnum
++syn keyword juliaConstC CalvingLevermannEnum
++syn keyword juliaConstC CalvingTestEnum
++syn keyword juliaConstC CalvingParameterizationEnum
++syn keyword juliaConstC CalvingVonmisesEnum
++syn keyword juliaConstC CfdragcoeffabsgradEnum
++syn keyword juliaConstC CfsurfacelogvelEnum
++syn keyword juliaConstC CfsurfacesquareEnum
++syn keyword juliaConstC CflevelsetmisfitEnum
++syn keyword juliaConstC ChannelEnum
++syn keyword juliaConstC ChannelAreaEnum
++syn keyword juliaConstC ChannelAreaOldEnum
++syn keyword juliaConstC ChannelDischargeEnum
++syn keyword juliaConstC ClosedEnum
++syn keyword juliaConstC ColinearEnum
++syn keyword juliaConstC ConstraintsEnum
++syn keyword juliaConstC ContactEnum
++syn keyword juliaConstC ContourEnum
++syn keyword juliaConstC ContoursEnum
++syn keyword juliaConstC ControlInputEnum
++syn keyword juliaConstC ControlInputGradEnum
++syn keyword juliaConstC ControlInputMaxsEnum
++syn keyword juliaConstC ControlInputMinsEnum
++syn keyword juliaConstC ControlInputValuesEnum
++syn keyword juliaConstC CrouzeixRaviartEnum
++syn keyword juliaConstC CuffeyEnum
++syn keyword juliaConstC CuffeyTemperateEnum
++syn keyword juliaConstC DamageEvolutionAnalysisEnum
++syn keyword juliaConstC DamageEvolutionSolutionEnum
++syn keyword juliaConstC DataSetEnum
++syn keyword juliaConstC DataSetParamEnum
++syn keyword juliaConstC DatasetInputEnum
++syn keyword juliaConstC DefaultAnalysisEnum
++syn keyword juliaConstC DefaultCalvingEnum
++syn keyword juliaConstC DenseEnum
++syn keyword juliaConstC DependentObjectEnum
++syn keyword juliaConstC DepthAverageAnalysisEnum
++syn keyword juliaConstC DeviatoricStressErrorEstimatorEnum
++syn keyword juliaConstC DivergenceEnum
++syn keyword juliaConstC Domain3DsurfaceEnum
++syn keyword juliaConstC DoubleArrayInputEnum
++syn keyword juliaConstC ArrayInputEnum
++syn keyword juliaConstC IntArrayInputEnum
++syn keyword juliaConstC DoubleExternalResultEnum
++syn keyword juliaConstC DoubleMatArrayParamEnum
++syn keyword juliaConstC DoubleMatExternalResultEnum
++syn keyword juliaConstC DoubleMatParamEnum
++syn keyword juliaConstC DoubleParamEnum
++syn keyword juliaConstC DoubleVecParamEnum
++syn keyword juliaConstC ElementEnum
++syn keyword juliaConstC ElementHookEnum
++syn keyword juliaConstC ElementSIdEnum
++syn keyword juliaConstC EnthalpyAnalysisEnum
++syn keyword juliaConstC EsaAnalysisEnum
++syn keyword juliaConstC EsaSolutionEnum
++syn keyword juliaConstC EsaTransitionsEnum
++syn keyword juliaConstC ExternalResultEnum
++syn keyword juliaConstC ExtrapolationAnalysisEnum
++syn keyword juliaConstC ExtrudeFromBaseAnalysisEnum
++syn keyword juliaConstC ExtrudeFromTopAnalysisEnum
++syn keyword juliaConstC FSApproximationEnum
++syn keyword juliaConstC FSSolverEnum
++syn keyword juliaConstC FSpressureEnum
++syn keyword juliaConstC FSvelocityEnum
++syn keyword juliaConstC FemModelEnum
++syn keyword juliaConstC FileParamEnum
++syn keyword juliaConstC FixedTimesteppingEnum
++syn keyword juliaConstC FloatingAreaEnum
++syn keyword juliaConstC FloatingAreaScaledEnum
++syn keyword juliaConstC FloatingMeltRateEnum
++syn keyword juliaConstC FreeEnum
++syn keyword juliaConstC FreeSurfaceBaseAnalysisEnum
++syn keyword juliaConstC FreeSurfaceTopAnalysisEnum
++syn keyword juliaConstC FrontalForcingsDefaultEnum
++syn keyword juliaConstC FrontalForcingsRignotEnum
++syn keyword juliaConstC FrontalForcingsRignotAutoregressionEnum
++syn keyword juliaConstC FsetEnum
++syn keyword juliaConstC FullMeltOnPartiallyFloatingEnum
++syn keyword juliaConstC GLheightadvectionAnalysisEnum
++syn keyword juliaConstC GaussPentaEnum
++syn keyword juliaConstC GaussSegEnum
++syn keyword juliaConstC GaussTetraEnum
++syn keyword juliaConstC GaussTriaEnum
++syn keyword juliaConstC GenericOptionEnum
++syn keyword juliaConstC GenericParamEnum
++syn keyword juliaConstC GenericExternalResultEnum
++syn keyword juliaConstC Gradient1Enum
++syn keyword juliaConstC Gradient2Enum
++syn keyword juliaConstC Gradient3Enum
++syn keyword juliaConstC Gradient4Enum
++syn keyword juliaConstC GroundedAreaEnum
++syn keyword juliaConstC GroundedAreaScaledEnum
++syn keyword juliaConstC GroundingOnlyEnum
++syn keyword juliaConstC GroundinglineMassFluxEnum
++syn keyword juliaConstC GsetEnum
++syn keyword juliaConstC GslEnum
++syn keyword juliaConstC HOApproximationEnum
++syn keyword juliaConstC HOFSApproximationEnum
++syn keyword juliaConstC HookEnum
++syn keyword juliaConstC HydrologyDCEfficientAnalysisEnum
++syn keyword juliaConstC HydrologyDCInefficientAnalysisEnum
++syn keyword juliaConstC HydrologyGlaDSAnalysisEnum
++syn keyword juliaConstC HydrologyGlaDSEnum
++syn keyword juliaConstC HydrologyPismAnalysisEnum
++syn keyword juliaConstC HydrologyShaktiAnalysisEnum
++syn keyword juliaConstC HydrologyShreveAnalysisEnum
++syn keyword juliaConstC HydrologySolutionEnum
++syn keyword juliaConstC HydrologySubstepsEnum
++syn keyword juliaConstC HydrologydcEnum
++syn keyword juliaConstC HydrologypismEnum
++syn keyword juliaConstC HydrologyshaktiEnum
++syn keyword juliaConstC HydrologyshreveEnum
++syn keyword juliaConstC IceMassEnum
++syn keyword juliaConstC IceMassScaledEnum
++syn keyword juliaConstC IceVolumeAboveFloatationEnum
++syn keyword juliaConstC IceVolumeAboveFloatationScaledEnum
++syn keyword juliaConstC IceVolumeEnum
++syn keyword juliaConstC IceVolumeScaledEnum
++syn keyword juliaConstC IcefrontMassFluxEnum
++syn keyword juliaConstC IcefrontMassFluxLevelsetEnum
++syn keyword juliaConstC IncrementalEnum
++syn keyword juliaConstC IndexedEnum
++syn keyword juliaConstC IntExternalResultEnum
++syn keyword juliaConstC ElementInputEnum
++syn keyword juliaConstC IntMatExternalResultEnum
++syn keyword juliaConstC IntMatParamEnum
++syn keyword juliaConstC IntParamEnum
++syn keyword juliaConstC IntVecParamEnum
++syn keyword juliaConstC InputsEnum
++syn keyword juliaConstC InternalEnum
++syn keyword juliaConstC IntersectEnum
++syn keyword juliaConstC InversionVzObsEnum
++syn keyword juliaConstC JEnum
++syn keyword juliaConstC L1L2ApproximationEnum
++syn keyword juliaConstC MOLHOApproximationEnum
++syn keyword juliaConstC L2ProjectionBaseAnalysisEnum
++syn keyword juliaConstC L2ProjectionEPLAnalysisEnum
++syn keyword juliaConstC LACrouzeixRaviartEnum
++syn keyword juliaConstC LATaylorHoodEnum
++syn keyword juliaConstC LambdaSEnum
++syn keyword juliaConstC LevelsetAnalysisEnum
++syn keyword juliaConstC LevelsetfunctionPicardEnum
++syn keyword juliaConstC LinearFloatingMeltRateEnum
++syn keyword juliaConstC LliboutryDuvalEnum
++syn keyword juliaConstC LoadsEnum
++syn keyword juliaConstC LoveAnalysisEnum
++syn keyword juliaConstC LoveHfEnum
++syn keyword juliaConstC LoveHtEnum
++syn keyword juliaConstC LoveKernelsImagEnum
++syn keyword juliaConstC LoveKernelsRealEnum
++syn keyword juliaConstC LoveKfEnum
++syn keyword juliaConstC LoveKtEnum
++syn keyword juliaConstC LoveLfEnum
++syn keyword juliaConstC LoveLtEnum
++syn keyword juliaConstC LoveTidalHtEnum
++syn keyword juliaConstC LoveTidalKtEnum
++syn keyword juliaConstC LoveTidalLtEnum
++syn keyword juliaConstC LovePMTF1tEnum
++syn keyword juliaConstC LovePMTF2tEnum
++syn keyword juliaConstC LoveYiEnum
++syn keyword juliaConstC LoveRhsEnum
++syn keyword juliaConstC LoveSolutionEnum
++syn keyword juliaConstC MINIEnum
++syn keyword juliaConstC MINIcondensedEnum
++syn keyword juliaConstC MantlePlumeGeothermalFluxEnum
++syn keyword juliaConstC MassFluxEnum
++syn keyword juliaConstC MassconEnum
++syn keyword juliaConstC MassconaxpbyEnum
++syn keyword juliaConstC MassfluxatgateEnum
++syn keyword juliaConstC MasstransportAnalysisEnum
++syn keyword juliaConstC MasstransportSolutionEnum
++syn keyword juliaConstC MatdamageiceEnum
++syn keyword juliaConstC MatenhancediceEnum
++syn keyword juliaConstC MaterialsEnum
++syn keyword juliaConstC MatestarEnum
++syn keyword juliaConstC MaticeEnum
++syn keyword juliaConstC MatlithoEnum
++syn keyword juliaConstC MathydroEnum
++syn keyword juliaConstC MatrixParamEnum
++syn keyword juliaConstC MaxAbsVxEnum
++syn keyword juliaConstC MaxAbsVyEnum
++syn keyword juliaConstC MaxAbsVzEnum
++syn keyword juliaConstC MaxDivergenceEnum
++syn keyword juliaConstC MaxVelEnum
++syn keyword juliaConstC MaxVxEnum
++syn keyword juliaConstC MaxVyEnum
++syn keyword juliaConstC MaxVzEnum
++syn keyword juliaConstC MelangeEnum
++syn keyword juliaConstC MeltingAnalysisEnum
++syn keyword juliaConstC MeshElementsEnum
++syn keyword juliaConstC MeshXEnum
++syn keyword juliaConstC MeshYEnum
++syn keyword juliaConstC MinVelEnum
++syn keyword juliaConstC MinVxEnum
++syn keyword juliaConstC MinVyEnum
++syn keyword juliaConstC MinVzEnum
++syn keyword juliaConstC MismipFloatingMeltRateEnum
++syn keyword juliaConstC MoulinEnum
++syn keyword juliaConstC MpiDenseEnum
++syn keyword juliaConstC MpiEnum
++syn keyword juliaConstC MpiSparseEnum
++syn keyword juliaConstC MumpsEnum
++syn keyword juliaConstC NoFrictionOnPartiallyFloatingEnum
++syn keyword juliaConstC NoMeltOnPartiallyFloatingEnum
++syn keyword juliaConstC NodalEnum
++syn keyword juliaConstC NodalvalueEnum
++syn keyword juliaConstC NodeSIdEnum
++syn keyword juliaConstC NoneApproximationEnum
++syn keyword juliaConstC NoneEnum
++syn keyword juliaConstC NumberedcostfunctionEnum
++syn keyword juliaConstC NyeCO2Enum
++syn keyword juliaConstC NyeH2OEnum
++syn keyword juliaConstC NumericalfluxEnum
++syn keyword juliaConstC OceantransportAnalysisEnum
++syn keyword juliaConstC OceantransportSolutionEnum
++syn keyword juliaConstC OldGradientEnum
++syn keyword juliaConstC OneLayerP4zEnum
++syn keyword juliaConstC OpenEnum
++syn keyword juliaConstC OptionEnum
++syn keyword juliaConstC ParamEnum
++syn keyword juliaConstC ParametersEnum
++syn keyword juliaConstC P0ArrayEnum
++syn keyword juliaConstC P0DGEnum
++syn keyword juliaConstC P1DGEnum
++syn keyword juliaConstC P1P1Enum
++syn keyword juliaConstC P1P1GLSEnum
++syn keyword juliaConstC P1bubbleEnum
++syn keyword juliaConstC P1bubblecondensedEnum
++syn keyword juliaConstC P1xP2Enum
++syn keyword juliaConstC P1xP3Enum
++syn keyword juliaConstC P1xP4Enum
++syn keyword juliaConstC P2Enum
++syn keyword juliaConstC P2bubbleEnum
++syn keyword juliaConstC P2bubblecondensedEnum
++syn keyword juliaConstC P2xP1Enum
++syn keyword juliaConstC P2xP4Enum
++syn keyword juliaConstC PatersonEnum
++syn keyword juliaConstC PengridEnum
++syn keyword juliaConstC PenpairEnum
++syn keyword juliaConstC PentaEnum
++syn keyword juliaConstC PentaInputEnum
++syn keyword juliaConstC ProfilerEnum
++syn keyword juliaConstC ProfilingCurrentFlopsEnum
++syn keyword juliaConstC ProfilingCurrentMemEnum
++syn keyword juliaConstC ProfilingSolutionTimeEnum
++syn keyword juliaConstC RegionaloutputEnum
++syn keyword juliaConstC RegularEnum
++syn keyword juliaConstC RecoveryAnalysisEnum
++syn keyword juliaConstC RiftfrontEnum
++syn keyword juliaConstC SamplingAnalysisEnum
++syn keyword juliaConstC SamplingSolutionEnum
++syn keyword juliaConstC SIAApproximationEnum
++syn keyword juliaConstC SMBautoregressionEnum
++syn keyword juliaConstC SMBcomponentsEnum
++syn keyword juliaConstC SMBd18opddEnum
++syn keyword juliaConstC SMBforcingEnum
++syn keyword juliaConstC SMBgcmEnum
++syn keyword juliaConstC SMBgembEnum
++syn keyword juliaConstC SMBgradientsEnum
++syn keyword juliaConstC SMBgradientscomponentsEnum
++syn keyword juliaConstC SMBgradientselaEnum
++syn keyword juliaConstC SMBhenningEnum
++syn keyword juliaConstC SMBmeltcomponentsEnum
++syn keyword juliaConstC SMBpddEnum
++syn keyword juliaConstC SMBpddSicopolisEnum
++syn keyword juliaConstC SMBsemicEnum
++syn keyword juliaConstC SSAApproximationEnum
++syn keyword juliaConstC SSAFSApproximationEnum
++syn keyword juliaConstC SSAHOApproximationEnum
++syn keyword juliaConstC ScaledEnum
++syn keyword juliaConstC SealevelAbsoluteEnum
++syn keyword juliaConstC SealevelEmotionEnum
++syn keyword juliaConstC SealevelchangePolarMotionXEnum
++syn keyword juliaConstC SealevelchangePolarMotionYEnum
++syn keyword juliaConstC SealevelchangePolarMotionZEnum
++syn keyword juliaConstC SealevelchangePolarMotionEnum
++syn keyword juliaConstC SealevelNmotionEnum
++syn keyword juliaConstC SealevelUmotionEnum
++syn keyword juliaConstC SealevelchangeAnalysisEnum
++syn keyword juliaConstC SegEnum
++syn keyword juliaConstC SegInputEnum
++syn keyword juliaConstC SegmentEnum
++syn keyword juliaConstC SegmentRiftfrontEnum
++syn keyword juliaConstC SeparateEnum
++syn keyword juliaConstC SeqEnum
++syn keyword juliaConstC SmbAnalysisEnum
++syn keyword juliaConstC SmbSolutionEnum
++syn keyword juliaConstC SmoothAnalysisEnum
++syn keyword juliaConstC SoftMigrationEnum
++syn keyword juliaConstC SpatialLinearFloatingMeltRateEnum
++syn keyword juliaConstC SpcDynamicEnum
++syn keyword juliaConstC SpcStaticEnum
++syn keyword juliaConstC SpcTransientEnum
++syn keyword juliaConstC SsetEnum
++syn keyword juliaConstC StatisticsSolutionEnum
++syn keyword juliaConstC SteadystateSolutionEnum
++syn keyword juliaConstC StressIntensityFactorEnum
++syn keyword juliaConstC StressbalanceAnalysisEnum
++syn keyword juliaConstC StressbalanceConvergenceNumStepsEnum
++syn keyword juliaConstC StressbalanceSIAAnalysisEnum
++syn keyword juliaConstC StressbalanceSolutionEnum
++syn keyword juliaConstC StressbalanceVerticalAnalysisEnum
++syn keyword juliaConstC StringArrayParamEnum
++syn keyword juliaConstC StringExternalResultEnum
++syn keyword juliaConstC StringParamEnum
++syn keyword juliaConstC SubelementFriction1Enum
++syn keyword juliaConstC SubelementFriction2Enum
++syn keyword juliaConstC SubelementMelt1Enum
++syn keyword juliaConstC SubelementMelt2Enum
++syn keyword juliaConstC SubelementMigrationEnum
++syn keyword juliaConstC SurfaceSlopeSolutionEnum
++syn keyword juliaConstC TaylorHoodEnum
++syn keyword juliaConstC TetraEnum
++syn keyword juliaConstC TetraInputEnum
++syn keyword juliaConstC ThermalAnalysisEnum
++syn keyword juliaConstC ThermalSolutionEnum
++syn keyword juliaConstC ThicknessErrorEstimatorEnum
++syn keyword juliaConstC TotalCalvingFluxLevelsetEnum
++syn keyword juliaConstC TotalCalvingMeltingFluxLevelsetEnum
++syn keyword juliaConstC TotalFloatingBmbEnum
++syn keyword juliaConstC TotalFloatingBmbScaledEnum
++syn keyword juliaConstC TotalGroundedBmbEnum
++syn keyword juliaConstC TotalGroundedBmbScaledEnum
++syn keyword juliaConstC TotalSmbEnum
++syn keyword juliaConstC TotalSmbScaledEnum
++syn keyword juliaConstC TransientArrayParamEnum
++syn keyword juliaConstC TransientInputEnum
++syn keyword juliaConstC TransientParamEnum
++syn keyword juliaConstC TransientSolutionEnum
++syn keyword juliaConstC TriaEnum
++syn keyword juliaConstC TriaInputEnum
++syn keyword juliaConstC UzawaPressureAnalysisEnum
++syn keyword juliaConstC VectorParamEnum
++syn keyword juliaConstC VertexEnum
++syn keyword juliaConstC VertexLIdEnum
++syn keyword juliaConstC VertexPIdEnum
++syn keyword juliaConstC VertexSIdEnum
++syn keyword juliaConstC VerticesEnum
++syn keyword juliaConstC ViscousHeatingEnum
++syn keyword juliaConstC WaterEnum
++syn keyword juliaConstC XTaylorHoodEnum
++syn keyword juliaConstC XYEnum
++syn keyword juliaConstC XYZEnum
++syn keyword juliaConstC BalancethicknessD0Enum
++syn keyword juliaConstC BalancethicknessDiffusionCoefficientEnum
++syn keyword juliaConstC BilinearInterpEnum
++syn keyword juliaConstC CalvingdevCoeffEnum
++syn keyword juliaConstC DeviatoricStressEnum
++syn keyword juliaConstC EtaAbsGradientEnum
++syn keyword juliaConstC MeshZEnum
++syn keyword juliaConstC NearestInterpEnum
++syn keyword juliaConstC OutputdefinitionListEnum
++syn keyword juliaConstC SealevelObsEnum
++syn keyword juliaConstC SealevelWeightsEnum
++syn keyword juliaConstC StrainRateEnum
++syn keyword juliaConstC StressTensorEnum
++syn keyword juliaConstC StressbalanceViscosityOvershootEnum
++syn keyword juliaConstC SubelementMigration4Enum
++syn keyword juliaConstC TimesteppingTimeAdaptEnum
++syn keyword juliaConstC TriangleInterpEnum
++syn keyword juliaConstC MaximumNumberOfDefinitionsEnum
++"ISSM Enums end
++syn keyword juliaConstC ParametersSTARTEnum
++syn keyword juliaConstC AdolcParamEnum
++syn keyword juliaConstC AmrDeviatoricErrorGroupThresholdEnum
++syn keyword juliaConstC AmrDeviatoricErrorMaximumEnum
++syn keyword juliaConstC AmrDeviatoricErrorResolutionEnum
++syn keyword juliaConstC AmrDeviatoricErrorThresholdEnum
++syn keyword juliaConstC AmrErrEnum
++syn keyword juliaConstC AmrFieldEnum
++syn keyword juliaConstC AmrGradationEnum
++syn keyword juliaConstC AmrGroundingLineDistanceEnum
++syn keyword juliaConstC AmrGroundingLineResolutionEnum
++syn keyword juliaConstC AmrHmaxEnum
++syn keyword juliaConstC AmrHminEnum
++syn keyword juliaConstC AmrIceFrontDistanceEnum
++syn keyword juliaConstC AmrIceFrontResolutionEnum
++syn keyword juliaConstC AmrKeepMetricEnum
++syn keyword juliaConstC AmrLagEnum
++syn keyword juliaConstC AmrLevelMaxEnum
++syn keyword juliaConstC AmrRestartEnum
++syn keyword juliaConstC AmrThicknessErrorGroupThresholdEnum
++syn keyword juliaConstC AmrThicknessErrorMaximumEnum
++syn keyword juliaConstC AmrThicknessErrorResolutionEnum
++syn keyword juliaConstC AmrThicknessErrorThresholdEnum
++syn keyword juliaConstC AmrTypeEnum
++syn keyword juliaConstC AnalysisCounterEnum
++syn keyword juliaConstC AnalysisTypeEnum
++syn keyword juliaConstC AugmentedLagrangianREnum
++syn keyword juliaConstC AugmentedLagrangianRholambdaEnum
++syn keyword juliaConstC AugmentedLagrangianRhopEnum
++syn keyword juliaConstC AugmentedLagrangianRlambdaEnum
++syn keyword juliaConstC AugmentedLagrangianThetaEnum
++syn keyword juliaConstC AutodiffCbufsizeEnum
++syn keyword juliaConstC AutodiffDependentObjectsEnum
++syn keyword juliaConstC AutodiffDriverEnum
++syn keyword juliaConstC AutodiffFosForwardIndexEnum
++syn keyword juliaConstC AutodiffFosReverseIndexEnum
++syn keyword juliaConstC AutodiffFovForwardIndicesEnum
++syn keyword juliaConstC AutodiffGcTriggerMaxSizeEnum
++syn keyword juliaConstC AutodiffGcTriggerRatioEnum
++syn keyword juliaConstC AutodiffIsautodiffEnum
++syn keyword juliaConstC AutodiffLbufsizeEnum
++syn keyword juliaConstC AutodiffNumDependentsEnum
++syn keyword juliaConstC AutodiffNumIndependentsEnum
++syn keyword juliaConstC AutodiffObufsizeEnum
++syn keyword juliaConstC AutodiffTapeAllocEnum
++syn keyword juliaConstC AutodiffTbufsizeEnum
++syn keyword juliaConstC AutodiffXpEnum
++syn keyword juliaConstC BalancethicknessStabilizationEnum
++syn keyword juliaConstC BarystaticContributionsEnum
++syn keyword juliaConstC BasalforcingsAutoregressionInitialTimeEnum
++syn keyword juliaConstC BasalforcingsAutoregressionTimestepEnum
++syn keyword juliaConstC BasalforcingsAutoregressiveOrderEnum
++syn keyword juliaConstC BasalforcingsBeta0Enum
++syn keyword juliaConstC BasalforcingsBeta1Enum
++syn keyword juliaConstC BasalforcingsBottomplumedepthEnum
++syn keyword juliaConstC BasalforcingsCrustthicknessEnum
++syn keyword juliaConstC BasalforcingsDeepwaterElevationEnum
++syn keyword juliaConstC BasalforcingsDeepwaterMeltingRateEnum
++syn keyword juliaConstC BasalforcingsDtbgEnum
++syn keyword juliaConstC BasalforcingsEnum
++syn keyword juliaConstC BasalforcingsIsmip6AverageTfEnum
++syn keyword juliaConstC BasalforcingsIsmip6BasinAreaEnum
++syn keyword juliaConstC BasalforcingsIsmip6DeltaTEnum
++syn keyword juliaConstC BasalforcingsIsmip6Gamma0Enum
++syn keyword juliaConstC BasalforcingsIsmip6IsLocalEnum
++syn keyword juliaConstC BasalforcingsIsmip6NumBasinsEnum
++syn keyword juliaConstC BasalforcingsIsmip6TfDepthsEnum
++syn keyword juliaConstC BasalforcingsLinearNumBasinsEnum
++syn keyword juliaConstC BasalforcingsLowercrustheatEnum
++syn keyword juliaConstC BasalforcingsMantleconductivityEnum
++syn keyword juliaConstC BasalforcingsNusseltEnum
++syn keyword juliaConstC BasalforcingsPhiEnum
++syn keyword juliaConstC BasalforcingsPicoAverageOverturningEnum
++syn keyword juliaConstC BasalforcingsPicoAverageSalinityEnum
++syn keyword juliaConstC BasalforcingsPicoAverageTemperatureEnum
++syn keyword juliaConstC BasalforcingsPicoBoxAreaEnum
++syn keyword juliaConstC BasalforcingsPicoFarOceansalinityEnum
++syn keyword juliaConstC BasalforcingsPicoFarOceantemperatureEnum
++syn keyword juliaConstC BasalforcingsPicoGammaTEnum
++syn keyword juliaConstC BasalforcingsPicoIsplumeEnum
++syn keyword juliaConstC BasalforcingsPicoMaxboxcountEnum
++syn keyword juliaConstC BasalforcingsPicoNumBasinsEnum
++syn keyword juliaConstC BasalforcingsPlumeradiusEnum
++syn keyword juliaConstC BasalforcingsPlumexEnum
++syn keyword juliaConstC BasalforcingsPlumeyEnum
++syn keyword juliaConstC BasalforcingsThresholdThicknessEnum
++syn keyword juliaConstC BasalforcingsTopplumedepthEnum
++syn keyword juliaConstC BasalforcingsUppercrustheatEnum
++syn keyword juliaConstC BasalforcingsUppercrustthicknessEnum
++syn keyword juliaConstC BasalforcingsUpperdepthMeltEnum
++syn keyword juliaConstC BasalforcingsUpperwaterElevationEnum
++syn keyword juliaConstC BasalforcingsUpperwaterMeltingRateEnum
++syn keyword juliaConstC CalvingCrevasseDepthEnum
++syn keyword juliaConstC CalvingCrevasseThresholdEnum
++syn keyword juliaConstC CalvingHeightAboveFloatationEnum
++syn keyword juliaConstC CalvingLawEnum
++syn keyword juliaConstC CalvingMinthicknessEnum
++syn keyword juliaConstC CalvingTestSpeedfactorEnum
++syn keyword juliaConstC CalvingTestIndependentRateEnum
++syn keyword juliaConstC CalvingUseParamEnum
++syn keyword juliaConstC CalvingThetaEnum
++syn keyword juliaConstC CalvingAlphaEnum
++syn keyword juliaConstC CalvingXoffsetEnum
++syn keyword juliaConstC CalvingYoffsetEnum
++syn keyword juliaConstC ConfigurationTypeEnum
++syn keyword juliaConstC ConstantsGEnum
++syn keyword juliaConstC ConstantsNewtonGravityEnum
++syn keyword juliaConstC ConstantsReferencetemperatureEnum
++syn keyword juliaConstC ConstantsYtsEnum
++syn keyword juliaConstC ControlInputSizeMEnum
++syn keyword juliaConstC ControlInputSizeNEnum
++syn keyword juliaConstC ControlInputInterpolationEnum
++syn keyword juliaConstC CumBslcEnum
++syn keyword juliaConstC CumBslcIceEnum
++syn keyword juliaConstC CumBslcHydroEnum
++syn keyword juliaConstC CumBslcOceanEnum
++syn keyword juliaConstC CumBslcIcePartitionEnum
++syn keyword juliaConstC CumBslcHydroPartitionEnum
++syn keyword juliaConstC CumBslcOceanPartitionEnum
++syn keyword juliaConstC CumGmtslcEnum
++syn keyword juliaConstC CumGmslcEnum
++syn keyword juliaConstC DamageC1Enum
++syn keyword juliaConstC DamageC2Enum
++syn keyword juliaConstC DamageC3Enum
++syn keyword juliaConstC DamageC4Enum
++syn keyword juliaConstC DamageEnum
++syn keyword juliaConstC DamageEquivStressEnum
++syn keyword juliaConstC DamageEvolutionNumRequestedOutputsEnum
++syn keyword juliaConstC DamageEvolutionRequestedOutputsEnum
++syn keyword juliaConstC DamageHealingEnum
++syn keyword juliaConstC DamageKappaEnum
++syn keyword juliaConstC DamageLawEnum
++syn keyword juliaConstC DamageMaxDamageEnum
++syn keyword juliaConstC DamageStabilizationEnum
++syn keyword juliaConstC DamageStressThresholdEnum
++syn keyword juliaConstC DamageStressUBoundEnum
++syn keyword juliaConstC DebugProfilingEnum
++syn keyword juliaConstC DomainDimensionEnum
++syn keyword juliaConstC DomainTypeEnum
++syn keyword juliaConstC DslModelEnum
++syn keyword juliaConstC DslModelidEnum
++syn keyword juliaConstC DslNummodelsEnum
++syn keyword juliaConstC SolidearthIsExternalEnum
++syn keyword juliaConstC SolidearthExternalNatureEnum
++syn keyword juliaConstC SolidearthExternalModelidEnum
++syn keyword juliaConstC SolidearthExternalNummodelsEnum
++syn keyword juliaConstC SolidearthSettingsComputeBpGrdEnum
++syn keyword juliaConstC EarthIdEnum
++syn keyword juliaConstC ElasticEnum
++syn keyword juliaConstC EplZigZagCounterEnum
++syn keyword juliaConstC EsaHElasticEnum
++syn keyword juliaConstC EsaHemisphereEnum
++syn keyword juliaConstC EsaRequestedOutputsEnum
++syn keyword juliaConstC EsaUElasticEnum
++syn keyword juliaConstC ExtrapolationVariableEnum
++syn keyword juliaConstC FemModelCommEnum
++syn keyword juliaConstC FieldsEnum
++syn keyword juliaConstC FlowequationFeFSEnum
++syn keyword juliaConstC FlowequationIsFSEnum
++syn keyword juliaConstC FlowequationIsHOEnum
++syn keyword juliaConstC FlowequationIsL1L2Enum
++syn keyword juliaConstC FlowequationIsMOLHOEnum
++syn keyword juliaConstC FlowequationIsSIAEnum
++syn keyword juliaConstC FlowequationIsSSAEnum
++syn keyword juliaConstC FlowequationIsNitscheEnum
++syn keyword juliaConstC FeFSNitscheGammaEnum
++syn keyword juliaConstC FrictionCouplingEnum
++syn keyword juliaConstC FrictionDeltaEnum
++syn keyword juliaConstC FrictionEffectivePressureLimitEnum
++syn keyword juliaConstC FrictionFEnum
++syn keyword juliaConstC FrictionGammaEnum
++syn keyword juliaConstC FrictionLawEnum
++syn keyword juliaConstC FrictionPseudoplasticityExponentEnum
++syn keyword juliaConstC FrictionThresholdSpeedEnum
++syn keyword juliaConstC FrictionVoidRatioEnum
++syn keyword juliaConstC FrontalForcingsBasinIcefrontAreaEnum
++syn keyword juliaConstC FrontalForcingsAutoregressionInitialTimeEnum
++syn keyword juliaConstC FrontalForcingsAutoregressionTimestepEnum
++syn keyword juliaConstC FrontalForcingsAutoregressiveOrderEnum
++syn keyword juliaConstC FrontalForcingsBeta0Enum
++syn keyword juliaConstC FrontalForcingsBeta1Enum
++syn keyword juliaConstC FrontalForcingsNumberofBasinsEnum
++syn keyword juliaConstC FrontalForcingsParamEnum
++syn keyword juliaConstC FrontalForcingsPhiEnum
++syn keyword juliaConstC GrdModelEnum
++syn keyword juliaConstC GroundinglineFrictionInterpolationEnum
++syn keyword juliaConstC GroundinglineMeltInterpolationEnum
++syn keyword juliaConstC GroundinglineMigrationEnum
++syn keyword juliaConstC GroundinglineNumRequestedOutputsEnum
++syn keyword juliaConstC GroundinglineRequestedOutputsEnum
++syn keyword juliaConstC HydrologyAveragingEnum
++syn keyword juliaConstC HydrologyCavitySpacingEnum
++syn keyword juliaConstC HydrologyChannelConductivityEnum
++syn keyword juliaConstC HydrologyChannelSheetWidthEnum
++syn keyword juliaConstC HydrologyEnglacialVoidRatioEnum
++syn keyword juliaConstC HydrologyIschannelsEnum
++syn keyword juliaConstC HydrologyMeltFlagEnum
++syn keyword juliaConstC HydrologyModelEnum
++syn keyword juliaConstC HydrologyNumRequestedOutputsEnum
++syn keyword juliaConstC HydrologyPressureMeltCoefficientEnum
++syn keyword juliaConstC HydrologyRelaxationEnum
++syn keyword juliaConstC HydrologyRequestedOutputsEnum
++syn keyword juliaConstC HydrologySedimentKmaxEnum
++syn keyword juliaConstC HydrologyStepsPerStepEnum
++syn keyword juliaConstC HydrologyStorageEnum
++syn keyword juliaConstC HydrologydcEplColapseThicknessEnum
++syn keyword juliaConstC HydrologydcEplConductivityEnum
++syn keyword juliaConstC HydrologydcEplInitialThicknessEnum
++syn keyword juliaConstC HydrologydcEplLayerCompressibilityEnum
++syn keyword juliaConstC HydrologydcEplMaxThicknessEnum
++syn keyword juliaConstC HydrologydcEplPoreWaterMassEnum
++syn keyword juliaConstC HydrologydcEplThickCompEnum
++syn keyword juliaConstC HydrologydcEplflipLockEnum
++syn keyword juliaConstC HydrologydcIsefficientlayerEnum
++syn keyword juliaConstC HydrologydcLeakageFactorEnum
++syn keyword juliaConstC HydrologydcMaxIterEnum
++syn keyword juliaConstC HydrologydcPenaltyFactorEnum
++syn keyword juliaConstC HydrologydcPenaltyLockEnum
++syn keyword juliaConstC HydrologydcRelTolEnum
++syn keyword juliaConstC HydrologydcSedimentlimitEnum
++syn keyword juliaConstC HydrologydcSedimentlimitFlagEnum
++syn keyword juliaConstC HydrologydcSedimentLayerCompressibilityEnum
++syn keyword juliaConstC HydrologydcSedimentPoreWaterMassEnum
++syn keyword juliaConstC HydrologydcSedimentPorosityEnum
++syn keyword juliaConstC HydrologydcSedimentThicknessEnum
++syn keyword juliaConstC HydrologyStepAdaptEnum
++syn keyword juliaConstC HydrologydcTransferFlagEnum
++syn keyword juliaConstC HydrologydcUnconfinedFlagEnum
++syn keyword juliaConstC HydrologyshreveStabilizationEnum
++syn keyword juliaConstC IcecapToEarthCommEnum
++syn keyword juliaConstC IndexEnum
++syn keyword juliaConstC InputFileNameEnum
++syn keyword juliaConstC DirectoryNameEnum
++syn keyword juliaConstC IndicesEnum
++syn keyword juliaConstC InputToDepthaverageInEnum
++syn keyword juliaConstC InputToDepthaverageOutEnum
++syn keyword juliaConstC InputToExtrudeEnum
++syn keyword juliaConstC InputToL2ProjectEnum
++syn keyword juliaConstC InputToSmoothEnum
++syn keyword juliaConstC InversionAlgorithmEnum
++syn keyword juliaConstC InversionControlParametersEnum
++syn keyword juliaConstC InversionControlScalingFactorsEnum
++syn keyword juliaConstC InversionCostFunctionsEnum
++syn keyword juliaConstC InversionDxminEnum
++syn keyword juliaConstC InversionGatolEnum
++syn keyword juliaConstC InversionGradientScalingEnum
++syn keyword juliaConstC InversionGrtolEnum
++syn keyword juliaConstC InversionGttolEnum
++syn keyword juliaConstC InversionIncompleteAdjointEnum
++syn keyword juliaConstC InversionIscontrolEnum
++syn keyword juliaConstC InversionMaxiterEnum
++syn keyword juliaConstC InversionMaxiterPerStepEnum
++syn keyword juliaConstC InversionMaxstepsEnum
++syn keyword juliaConstC InversionNstepsEnum
++syn keyword juliaConstC InversionNumControlParametersEnum
++syn keyword juliaConstC InversionNumCostFunctionsEnum
++syn keyword juliaConstC InversionStepThresholdEnum
++syn keyword juliaConstC InversionTypeEnum
++syn keyword juliaConstC IvinsEnum
++syn keyword juliaConstC IsSlcCouplingEnum
++syn keyword juliaConstC LevelsetKillIcebergsEnum
++syn keyword juliaConstC LevelsetReinitFrequencyEnum
++syn keyword juliaConstC LevelsetStabilizationEnum
++syn keyword juliaConstC LockFileNameEnum
++syn keyword juliaConstC LoveAllowLayerDeletionEnum
++syn keyword juliaConstC LoveChandlerWobbleEnum
++syn keyword juliaConstC LoveCoreMantleBoundaryEnum
++syn keyword juliaConstC LoveEarthMassEnum
++syn keyword juliaConstC LoveForcingTypeEnum
++syn keyword juliaConstC LoveFrequenciesEnum
++syn keyword juliaConstC LoveIsTemporalEnum
++syn keyword juliaConstC LoveG0Enum
++syn keyword juliaConstC LoveGravitationalConstantEnum
++syn keyword juliaConstC LoveInnerCoreBoundaryEnum
++syn keyword juliaConstC LoveComplexComputationEnum
++syn keyword juliaConstC LoveQuadPrecisionEnum
++syn keyword juliaConstC LoveIntStepsPerLayerEnum
++syn keyword juliaConstC LoveMinIntegrationStepsEnum
++syn keyword juliaConstC LoveMaxIntegrationdrEnum
++syn keyword juliaConstC LoveKernelsEnum
++syn keyword juliaConstC LoveMu0Enum
++syn keyword juliaConstC LoveNfreqEnum
++syn keyword juliaConstC LoveNTemporalIterationsEnum
++syn keyword juliaConstC LoveNYiEquationsEnum
++syn keyword juliaConstC LoveR0Enum
++syn keyword juliaConstC LoveShNmaxEnum
++syn keyword juliaConstC LoveShNminEnum
++syn keyword juliaConstC LoveStartingLayerEnum
++syn keyword juliaConstC LoveUnderflowTolEnum
++syn keyword juliaConstC LovePostWidderThresholdEnum
++syn keyword juliaConstC LoveDebugEnum
++syn keyword juliaConstC LoveHypergeomNZEnum
++syn keyword juliaConstC LoveHypergeomNAlphaEnum
++syn keyword juliaConstC MassFluxSegmentsEnum
++syn keyword juliaConstC MassFluxSegmentsPresentEnum
++syn keyword juliaConstC MasstransportHydrostaticAdjustmentEnum
++syn keyword juliaConstC MasstransportIsfreesurfaceEnum
++syn keyword juliaConstC MasstransportMinThicknessEnum
++syn keyword juliaConstC MasstransportNumRequestedOutputsEnum
++syn keyword juliaConstC MasstransportPenaltyFactorEnum
++syn keyword juliaConstC MasstransportRequestedOutputsEnum
++syn keyword juliaConstC MasstransportStabilizationEnum
++syn keyword juliaConstC MaterialsBetaEnum
++syn keyword juliaConstC MaterialsEarthDensityEnum
++syn keyword juliaConstC MaterialsEffectiveconductivityAveragingEnum
++syn keyword juliaConstC MaterialsHeatcapacityEnum
++syn keyword juliaConstC MaterialsLatentheatEnum
++syn keyword juliaConstC MaterialsMeltingpointEnum
++syn keyword juliaConstC MaterialsMixedLayerCapacityEnum
++syn keyword juliaConstC MaterialsMuWaterEnum
++syn keyword juliaConstC MaterialsRheologyLawEnum
++syn keyword juliaConstC MaterialsRhoFreshwaterEnum
++syn keyword juliaConstC MaterialsRhoIceEnum
++syn keyword juliaConstC MaterialsRhoSeawaterEnum
++syn keyword juliaConstC MaterialsTemperateiceconductivityEnum
++syn keyword juliaConstC MaterialsThermalExchangeVelocityEnum
++syn keyword juliaConstC MaterialsThermalconductivityEnum
++syn keyword juliaConstC MeltingOffsetEnum
++syn keyword juliaConstC MeshAverageVertexConnectivityEnum
++syn keyword juliaConstC MeshElementtypeEnum
++syn keyword juliaConstC MeshNumberoflayersEnum
++syn keyword juliaConstC MeshNumberofverticesEnum
++syn keyword juliaConstC MeshNumberofelementsEnum
++syn keyword juliaConstC MigrationMaxEnum
++syn keyword juliaConstC ModelIdEnum
++syn keyword juliaConstC NbinsEnum
++syn keyword juliaConstC NodesEnum
++syn keyword juliaConstC NumModelsEnum
++syn keyword juliaConstC OceanGridNxEnum
++syn keyword juliaConstC OceanGridNyEnum
++syn keyword juliaConstC OceanGridXEnum
++syn keyword juliaConstC OceanGridYEnum
++syn keyword juliaConstC OutputBufferPointerEnum
++syn keyword juliaConstC OutputBufferSizePointerEnum
++syn keyword juliaConstC OutputFileNameEnum
++syn keyword juliaConstC OutputFilePointerEnum
++syn keyword juliaConstC OutputdefinitionEnum
++syn keyword juliaConstC QmuErrNameEnum
++syn keyword juliaConstC QmuInNameEnum
++syn keyword juliaConstC QmuIsdakotaEnum
++syn keyword juliaConstC QmuOutNameEnum
++syn keyword juliaConstC QmuOutputEnum
++syn keyword juliaConstC QmuCurrEvalIdEnum
++syn keyword juliaConstC QmuNsampleEnum
++syn keyword juliaConstC QmuResponsedescriptorsEnum
++syn keyword juliaConstC QmuVariableDescriptorsEnum
++syn keyword juliaConstC QmuVariablePartitionsEnum
++syn keyword juliaConstC QmuVariablePartitionsNpartEnum
++syn keyword juliaConstC QmuVariablePartitionsNtEnum
++syn keyword juliaConstC QmuResponsePartitionsEnum
++syn keyword juliaConstC QmuResponsePartitionsNpartEnum
++syn keyword juliaConstC QmuStatisticsEnum
++syn keyword juliaConstC QmuNumstatisticsEnum
++syn keyword juliaConstC QmuNdirectoriesEnum
++syn keyword juliaConstC QmuNfilesPerDirectoryEnum
++syn keyword juliaConstC QmuStatisticsMethodEnum
++syn keyword juliaConstC QmuMethodsEnum
++syn keyword juliaConstC RestartFileNameEnum
++syn keyword juliaConstC ResultsEnum
++syn keyword juliaConstC RootPathEnum
++syn keyword juliaConstC ModelnameEnum
++syn keyword juliaConstC SamplingAlphaEnum
++syn keyword juliaConstC SamplingNumRequestedOutputsEnum
++syn keyword juliaConstC SamplingRequestedOutputsEnum
++syn keyword juliaConstC SamplingRobinEnum
++syn keyword juliaConstC SamplingSeedEnum
++syn keyword juliaConstC SaveResultsEnum
++syn keyword juliaConstC SolidearthPartitionIceEnum
++syn keyword juliaConstC SolidearthPartitionHydroEnum
++syn keyword juliaConstC SolidearthPartitionOceanEnum
++syn keyword juliaConstC SolidearthNpartIceEnum
++syn keyword juliaConstC SolidearthNpartOceanEnum
++syn keyword juliaConstC SolidearthNpartHydroEnum
++syn keyword juliaConstC SolidearthPlanetRadiusEnum
++syn keyword juliaConstC SolidearthPlanetAreaEnum
++syn keyword juliaConstC SolidearthSettingsAbstolEnum
++syn keyword juliaConstC SolidearthSettingsCrossSectionShapeEnum
++syn keyword juliaConstC SolidearthSettingsElasticEnum
++syn keyword juliaConstC SolidearthSettingsViscousEnum
++syn keyword juliaConstC SolidearthSettingsSatelliteGraviEnum
++syn keyword juliaConstC SolidearthSettingsDegreeAccuracyEnum
++syn keyword juliaConstC SealevelchangeGeometryDoneEnum
++syn keyword juliaConstC SealevelchangeViscousNumStepsEnum
++syn keyword juliaConstC SealevelchangeViscousTimesEnum
++syn keyword juliaConstC SealevelchangeViscousIndexEnum
++syn keyword juliaConstC SealevelchangeViscousPolarMotionEnum
++syn keyword juliaConstC SealevelchangeRunCountEnum
++syn keyword juliaConstC SealevelchangeTransitionsEnum
++syn keyword juliaConstC SealevelchangeRequestedOutputsEnum
++syn keyword juliaConstC RotationalAngularVelocityEnum
++syn keyword juliaConstC RotationalEquatorialMoiEnum
++syn keyword juliaConstC RotationalPolarMoiEnum
++syn keyword juliaConstC LovePolarMotionTransferFunctionColinearEnum
++syn keyword juliaConstC LovePolarMotionTransferFunctionOrthogonalEnum
++syn keyword juliaConstC TidalLoveHEnum
++syn keyword juliaConstC TidalLoveKEnum
++syn keyword juliaConstC TidalLoveLEnum
++syn keyword juliaConstC TidalLoveK2SecularEnum
++syn keyword juliaConstC LoadLoveHEnum
++syn keyword juliaConstC LoadLoveKEnum
++syn keyword juliaConstC LoadLoveLEnum
++syn keyword juliaConstC LoveTimeFreqEnum
++syn keyword juliaConstC LoveIsTimeEnum
++syn keyword juliaConstC LoveHypergeomZEnum
++syn keyword juliaConstC LoveHypergeomTable1Enum
++syn keyword juliaConstC LoveHypergeomTable2Enum
++syn keyword juliaConstC SealevelchangeGSelfAttractionEnum
++syn keyword juliaConstC SealevelchangeGViscoElasticEnum
++syn keyword juliaConstC SealevelchangeUViscoElasticEnum
++syn keyword juliaConstC SealevelchangeHViscoElasticEnum
++syn keyword juliaConstC SealevelchangePolarMotionTransferFunctionColinearEnum
++syn keyword juliaConstC SealevelchangePolarMotionTransferFunctionOrthogonalEnum
++syn keyword juliaConstC SealevelchangePolarMotionTransferFunctionZEnum
++syn keyword juliaConstC SealevelchangeTidalK2Enum
++syn keyword juliaConstC SealevelchangeTidalH2Enum
++syn keyword juliaConstC SealevelchangeTidalL2Enum
++syn keyword juliaConstC SolidearthSettingsSealevelLoadingEnum
++syn keyword juliaConstC SolidearthSettingsGRDEnum
++syn keyword juliaConstC SolidearthSettingsRunFrequencyEnum
++syn keyword juliaConstC SolidearthSettingsTimeAccEnum
++syn keyword juliaConstC SolidearthSettingsHorizEnum
++syn keyword juliaConstC SolidearthSettingsMaxiterEnum
++syn keyword juliaConstC SolidearthSettingsGrdOceanEnum
++syn keyword juliaConstC SolidearthSettingsOceanAreaScalingEnum
++syn keyword juliaConstC StochasticForcingCovarianceEnum
++syn keyword juliaConstC StochasticForcingDefaultDimensionEnum
++syn keyword juliaConstC StochasticForcingDimensionsEnum
++syn keyword juliaConstC StochasticForcingFieldsEnum
++syn keyword juliaConstC StochasticForcingIsEffectivePressureEnum
++syn keyword juliaConstC StochasticForcingIsStochasticForcingEnum
++syn keyword juliaConstC StochasticForcingIsWaterPressureEnum
++syn keyword juliaConstC StochasticForcingNoisetermsEnum
++syn keyword juliaConstC StochasticForcingNumFieldsEnum
++syn keyword juliaConstC StochasticForcingRandomflagEnum
++syn keyword juliaConstC StochasticForcingTimestepEnum
++syn keyword juliaConstC SolidearthSettingsReltolEnum
++syn keyword juliaConstC SolidearthSettingsSelfAttractionEnum
++syn keyword juliaConstC SolidearthSettingsRotationEnum
++syn keyword juliaConstC SolidearthSettingsMaxSHCoeffEnum
++syn keyword juliaConstC SettingsIoGatherEnum
++syn keyword juliaConstC SettingsNumResultsOnNodesEnum
++syn keyword juliaConstC SettingsOutputFrequencyEnum
++syn keyword juliaConstC SettingsCheckpointFrequencyEnum
++syn keyword juliaConstC SettingsResultsOnNodesEnum
++syn keyword juliaConstC SettingsSbCouplingFrequencyEnum
++syn keyword juliaConstC SettingsSolverResidueThresholdEnum
++syn keyword juliaConstC SettingsWaitonlockEnum
++syn keyword juliaConstC SmbAIceEnum
++syn keyword juliaConstC SmbAIdxEnum
++syn keyword juliaConstC SmbASnowEnum
++syn keyword juliaConstC SmbAccualtiEnum
++syn keyword juliaConstC SmbAccugradEnum
++syn keyword juliaConstC SmbAccurefEnum
++syn keyword juliaConstC SmbAdThreshEnum
++syn keyword juliaConstC SmbAutoregressionInitialTimeEnum
++syn keyword juliaConstC SmbAutoregressionTimestepEnum
++syn keyword juliaConstC SmbAutoregressiveOrderEnum
++syn keyword juliaConstC SmbAveragingEnum
++syn keyword juliaConstC SmbBeta0Enum
++syn keyword juliaConstC SmbBeta1Enum
++syn keyword juliaConstC SmbDesfacEnum
++syn keyword juliaConstC SmbDpermilEnum
++syn keyword juliaConstC SmbDsnowIdxEnum
++syn keyword juliaConstC SmbElevationBinsEnum
++syn keyword juliaConstC SmbCldFracEnum
++syn keyword juliaConstC SmbDelta18oEnum
++syn keyword juliaConstC SmbDelta18oSurfaceEnum
++syn keyword juliaConstC SmbDenIdxEnum
++syn keyword juliaConstC SmbDtEnum
++syn keyword juliaConstC SmbEnum
++syn keyword juliaConstC SmbEIdxEnum
++syn keyword juliaConstC SmbFEnum
++syn keyword juliaConstC SmbInitDensityScalingEnum
++syn keyword juliaConstC SmbIsaccumulationEnum
++syn keyword juliaConstC SmbIsalbedoEnum
++syn keyword juliaConstC SmbIsconstrainsurfaceTEnum
++syn keyword juliaConstC SmbIsd18opdEnum
++syn keyword juliaConstC SmbIsdelta18oEnum
++syn keyword juliaConstC SmbIsdensificationEnum
++syn keyword juliaConstC SmbIsdeltaLWupEnum
++syn keyword juliaConstC SmbIsfirnwarmingEnum
++syn keyword juliaConstC SmbIsgraingrowthEnum
++syn keyword juliaConstC SmbIsmeltEnum
++syn keyword juliaConstC SmbIsmungsmEnum
++syn keyword juliaConstC SmbIsprecipscaledEnum
++syn keyword juliaConstC SmbIssetpddfacEnum
++syn keyword juliaConstC SmbIsshortwaveEnum
++syn keyword juliaConstC SmbIstemperaturescaledEnum
++syn keyword juliaConstC SmbIsthermalEnum
++syn keyword juliaConstC SmbIsturbulentfluxEnum
++syn keyword juliaConstC SmbKEnum
++syn keyword juliaConstC SmbLapseRatesEnum
++syn keyword juliaConstC SmbNumBasinsEnum
++syn keyword juliaConstC SmbNumElevationBinsEnum
++syn keyword juliaConstC SmbNumRequestedOutputsEnum
++syn keyword juliaConstC SmbPfacEnum
++syn keyword juliaConstC SmbPhiEnum
++syn keyword juliaConstC SmbRdlEnum
++syn keyword juliaConstC SmbRefElevationEnum
++syn keyword juliaConstC SmbRequestedOutputsEnum
++syn keyword juliaConstC SmbRlapsEnum
++syn keyword juliaConstC SmbRlapslgmEnum
++syn keyword juliaConstC SmbRunoffaltiEnum
++syn keyword juliaConstC SmbRunoffgradEnum
++syn keyword juliaConstC SmbRunoffrefEnum
++syn keyword juliaConstC SmbSealevEnum
++syn keyword juliaConstC SmbStepsPerStepEnum
++syn keyword juliaConstC SmbSwIdxEnum
++syn keyword juliaConstC SmbT0dryEnum
++syn keyword juliaConstC SmbT0wetEnum
++syn keyword juliaConstC SmbTeThreshEnum
++syn keyword juliaConstC SmbTdiffEnum
++syn keyword juliaConstC SmbThermoDeltaTScalingEnum
++syn keyword juliaConstC SmbTemperaturesReconstructedYearsEnum
++syn keyword juliaConstC SmbPrecipitationsReconstructedYearsEnum
++syn keyword juliaConstC SmoothThicknessMultiplierEnum
++syn keyword juliaConstC SolutionTypeEnum
++syn keyword juliaConstC SteadystateMaxiterEnum
++syn keyword juliaConstC SteadystateNumRequestedOutputsEnum
++syn keyword juliaConstC SteadystateReltolEnum
++syn keyword juliaConstC SteadystateRequestedOutputsEnum
++syn keyword juliaConstC StepEnum
++syn keyword juliaConstC StepsEnum
++syn keyword juliaConstC StressbalanceAbstolEnum
++syn keyword juliaConstC StressbalanceFSreconditioningEnum
++syn keyword juliaConstC StressbalanceIsnewtonEnum
++syn keyword juliaConstC StressbalanceMaxiterEnum
++syn keyword juliaConstC StressbalanceNumRequestedOutputsEnum
++syn keyword juliaConstC StressbalancePenaltyFactorEnum
++syn keyword juliaConstC StressbalanceReltolEnum
++syn keyword juliaConstC StressbalanceRequestedOutputsEnum
++syn keyword juliaConstC StressbalanceRestolEnum
++syn keyword juliaConstC StressbalanceRiftPenaltyThresholdEnum
++syn keyword juliaConstC StressbalanceShelfDampeningEnum
++syn keyword juliaConstC ThermalIsdrainicecolumnEnum
++syn keyword juliaConstC ThermalIsdynamicbasalspcEnum
++syn keyword juliaConstC ThermalIsenthalpyEnum
++syn keyword juliaConstC ThermalMaxiterEnum
++syn keyword juliaConstC ThermalNumRequestedOutputsEnum
++syn keyword juliaConstC ThermalPenaltyFactorEnum
++syn keyword juliaConstC ThermalPenaltyLockEnum
++syn keyword juliaConstC ThermalPenaltyThresholdEnum
++syn keyword juliaConstC ThermalReltolEnum
++syn keyword juliaConstC ThermalRequestedOutputsEnum
++syn keyword juliaConstC ThermalStabilizationEnum
++syn keyword juliaConstC ThermalWatercolumnUpperlimitEnum
++syn keyword juliaConstC TimeEnum
++syn keyword juliaConstC TimesteppingCflCoefficientEnum
++syn keyword juliaConstC TimesteppingCouplingTimeEnum
++syn keyword juliaConstC TimesteppingFinalTimeEnum
++syn keyword juliaConstC TimesteppingInterpForcingEnum
++syn keyword juliaConstC TimesteppingCycleForcingEnum
++syn keyword juliaConstC TimesteppingStartTimeEnum
++syn keyword juliaConstC TimesteppingTimeStepEnum
++syn keyword juliaConstC TimesteppingTimeStepMaxEnum
++syn keyword juliaConstC TimesteppingTimeStepMinEnum
++syn keyword juliaConstC TimesteppingTypeEnum
++syn keyword juliaConstC ToMITgcmCommEnum
++syn keyword juliaConstC ToolkitsFileNameEnum
++syn keyword juliaConstC ToolkitsOptionsAnalysesEnum
++syn keyword juliaConstC ToolkitsOptionsStringsEnum
++syn keyword juliaConstC ToolkitsTypesEnum
++syn keyword juliaConstC TransientAmrFrequencyEnum
++syn keyword juliaConstC TransientIsdamageevolutionEnum
++syn keyword juliaConstC TransientIsesaEnum
++syn keyword juliaConstC TransientIsgiaEnum
++syn keyword juliaConstC TransientIsgroundinglineEnum
++syn keyword juliaConstC TransientIshydrologyEnum
++syn keyword juliaConstC TransientIsmasstransportEnum
++syn keyword juliaConstC TransientIsoceantransportEnum
++syn keyword juliaConstC TransientIsmovingfrontEnum
++syn keyword juliaConstC TransientIsoceancouplingEnum
++syn keyword juliaConstC TransientIssamplingEnum
++syn keyword juliaConstC TransientIsslcEnum
++syn keyword juliaConstC TransientIssmbEnum
++syn keyword juliaConstC TransientIsstressbalanceEnum
++syn keyword juliaConstC TransientIsthermalEnum
++syn keyword juliaConstC TransientNumRequestedOutputsEnum
++syn keyword juliaConstC TransientRequestedOutputsEnum
++syn keyword juliaConstC VelocityEnum
++syn keyword juliaConstC XxeEnum
++syn keyword juliaConstC YyeEnum
++syn keyword juliaConstC ZzeEnum
++syn keyword juliaConstC AreaeEnum
++syn keyword juliaConstC WorldCommEnum
++syn keyword juliaConstC ParametersENDEnum
++syn keyword juliaConstC InputsSTARTEnum
++syn keyword juliaConstC AccumulatedDeltaBottomPressureEnum
++syn keyword juliaConstC AccumulatedDeltaIceThicknessEnum
++syn keyword juliaConstC AccumulatedDeltaTwsEnum
++syn keyword juliaConstC AdjointEnum
++syn keyword juliaConstC AdjointpEnum
++syn keyword juliaConstC AdjointxEnum
++syn keyword juliaConstC AdjointxBaseEnum
++syn keyword juliaConstC AdjointxShearEnum
++syn keyword juliaConstC AdjointyEnum
++syn keyword juliaConstC AdjointyBaseEnum
++syn keyword juliaConstC AdjointyShearEnum
++syn keyword juliaConstC AdjointzEnum
++syn keyword juliaConstC AirEnum
++syn keyword juliaConstC ApproximationEnum
++syn keyword juliaConstC BalancethicknessMisfitEnum
++syn keyword juliaConstC BalancethicknessOmega0Enum
++syn keyword juliaConstC BalancethicknessOmegaEnum
++syn keyword juliaConstC BalancethicknessSpcthicknessEnum
++syn keyword juliaConstC BalancethicknessThickeningRateEnum
++syn keyword juliaConstC BasalCrevasseEnum
++syn keyword juliaConstC BasalforcingsDeepwaterMeltingRateAutoregressionEnum
++syn keyword juliaConstC BasalforcingsDeepwaterMeltingRateNoiseEnum
++syn keyword juliaConstC BasalforcingsDeepwaterMeltingRateValuesAutoregressionEnum
++syn keyword juliaConstC BasalforcingsFloatingiceMeltingRateEnum
++syn keyword juliaConstC BasalforcingsGeothermalfluxEnum
++syn keyword juliaConstC BasalforcingsGroundediceMeltingRateEnum
++syn keyword juliaConstC BasalforcingsLinearBasinIdEnum
++syn keyword juliaConstC BasalforcingsPerturbationMeltingRateEnum
++syn keyword juliaConstC BasalforcingsSpatialDeepwaterElevationEnum
++syn keyword juliaConstC BasalforcingsSpatialDeepwaterMeltingRateEnum
++syn keyword juliaConstC BasalforcingsSpatialUpperwaterElevationEnum
++syn keyword juliaConstC BasalforcingsSpatialUpperwaterMeltingRateEnum
++syn keyword juliaConstC BasalforcingsIsmip6BasinIdEnum
++syn keyword juliaConstC BasalforcingsIsmip6TfEnum
++syn keyword juliaConstC BasalforcingsIsmip6TfShelfEnum
++syn keyword juliaConstC BasalforcingsIsmip6MeltAnomalyEnum
++syn keyword juliaConstC BasalforcingsMeltrateFactorEnum
++syn keyword juliaConstC BasalforcingsOceanSalinityEnum
++syn keyword juliaConstC BasalforcingsOceanTempEnum
++syn keyword juliaConstC BasalforcingsPicoBasinIdEnum
++syn keyword juliaConstC BasalforcingsPicoBoxIdEnum
++syn keyword juliaConstC BasalforcingsPicoOverturningCoeffEnum
++syn keyword juliaConstC BasalforcingsPicoSubShelfOceanOverturningEnum
++syn keyword juliaConstC BasalforcingsPicoSubShelfOceanSalinityEnum
++syn keyword juliaConstC BasalforcingsPicoSubShelfOceanTempEnum
++syn keyword juliaConstC BasalStressxEnum
++syn keyword juliaConstC BasalStressyEnum
++syn keyword juliaConstC BasalStressEnum
++syn keyword juliaConstC BaseEnum
++syn keyword juliaConstC BaseOldEnum
++syn keyword juliaConstC BaseSlopeXEnum
++syn keyword juliaConstC BaseSlopeYEnum
++syn keyword juliaConstC BaselineBasalforcingsFloatingiceMeltingRateEnum
++syn keyword juliaConstC BaselineBasalforcingsSpatialDeepwaterMeltingRateEnum
++syn keyword juliaConstC BaselineCalvingCalvingrateEnum
++syn keyword juliaConstC BaselineFrictionEffectivePressureEnum
++syn keyword juliaConstC BaselineSmbMassBalanceEnum
++syn keyword juliaConstC BedEnum
++syn keyword juliaConstC BedGRDEnum
++syn keyword juliaConstC BedEastEnum
++syn keyword juliaConstC BedEastGRDEnum
++syn keyword juliaConstC BedNorthEnum
++syn keyword juliaConstC BedNorthGRDEnum
++syn keyword juliaConstC BedSlopeXEnum
++syn keyword juliaConstC BedSlopeYEnum
++syn keyword juliaConstC BottomPressureEnum
++syn keyword juliaConstC BottomPressureOldEnum
++syn keyword juliaConstC CalvingCalvingrateEnum
++syn keyword juliaConstC CalvingHabFractionEnum
++syn keyword juliaConstC CalvingAblationrateEnum
++syn keyword juliaConstC CalvingMeltingrateEnum
++syn keyword juliaConstC CalvingStressThresholdFloatingiceEnum
++syn keyword juliaConstC CalvingStressThresholdGroundediceEnum
++syn keyword juliaConstC CalvinglevermannCoeffEnum
++syn keyword juliaConstC CalvingratexEnum
++syn keyword juliaConstC CalvingrateyEnum
++syn keyword juliaConstC CalvingFluxLevelsetEnum
++syn keyword juliaConstC CalvingMeltingFluxLevelsetEnum
++syn keyword juliaConstC ConvergedEnum
++syn keyword juliaConstC CrevasseDepthEnum
++syn keyword juliaConstC DamageDEnum
++syn keyword juliaConstC DamageDOldEnum
++syn keyword juliaConstC DamageDbarEnum
++syn keyword juliaConstC DamageDbarOldEnum
++syn keyword juliaConstC DamageFEnum
++syn keyword juliaConstC DegreeOfChannelizationEnum
++syn keyword juliaConstC DepthBelowSurfaceEnum
++syn keyword juliaConstC DeltaIceThicknessEnum
++syn keyword juliaConstC DeltaTwsEnum
++syn keyword juliaConstC DeltaBottomPressureEnum
++syn keyword juliaConstC DeltaDslEnum
++syn keyword juliaConstC DslOldEnum
++syn keyword juliaConstC DslEnum
++syn keyword juliaConstC DeltaStrEnum
++syn keyword juliaConstC StrOldEnum
++syn keyword juliaConstC StrEnum
++syn keyword juliaConstC DeviatoricStresseffectiveEnum
++syn keyword juliaConstC DeviatoricStressxxEnum
++syn keyword juliaConstC DeviatoricStressxyEnum
++syn keyword juliaConstC DeviatoricStressxzEnum
++syn keyword juliaConstC DeviatoricStressyyEnum
++syn keyword juliaConstC DeviatoricStressyzEnum
++syn keyword juliaConstC DeviatoricStresszzEnum
++syn keyword juliaConstC DeviatoricStress1Enum
++syn keyword juliaConstC DeviatoricStress2Enum
++syn keyword juliaConstC DistanceToCalvingfrontEnum
++syn keyword juliaConstC DistanceToGroundinglineEnum
++syn keyword juliaConstC Domain2DhorizontalEnum
++syn keyword juliaConstC Domain2DverticalEnum
++syn keyword juliaConstC Domain3DEnum
++syn keyword juliaConstC DragCoefficientAbsGradientEnum
++syn keyword juliaConstC DrivingStressXEnum
++syn keyword juliaConstC DrivingStressYEnum
++syn keyword juliaConstC DummyEnum
++syn keyword juliaConstC EffectivePressureEnum
++syn keyword juliaConstC EffectivePressureSubstepEnum
++syn keyword juliaConstC EffectivePressureTransientEnum
++syn keyword juliaConstC EnthalpyEnum
++syn keyword juliaConstC EnthalpyPicardEnum
++syn keyword juliaConstC EplHeadEnum
++syn keyword juliaConstC EplHeadOldEnum
++syn keyword juliaConstC EplHeadSlopeXEnum
++syn keyword juliaConstC EplHeadSlopeYEnum
++syn keyword juliaConstC EplHeadSubstepEnum
++syn keyword juliaConstC EplHeadTransientEnum
++syn keyword juliaConstC EsaEmotionEnum
++syn keyword juliaConstC EsaNmotionEnum
++syn keyword juliaConstC EsaRotationrateEnum
++syn keyword juliaConstC EsaStrainratexxEnum
++syn keyword juliaConstC EsaStrainratexyEnum
++syn keyword juliaConstC EsaStrainrateyyEnum
++syn keyword juliaConstC EsaUmotionEnum
++syn keyword juliaConstC EsaXmotionEnum
++syn keyword juliaConstC EsaYmotionEnum
++syn keyword juliaConstC EtaDiffEnum
++syn keyword juliaConstC FlowequationBorderFSEnum
++syn keyword juliaConstC FrictionAsEnum
++syn keyword juliaConstC FrictionCEnum
++syn keyword juliaConstC FrictionCmaxEnum
++syn keyword juliaConstC FrictionCoefficientEnum
++syn keyword juliaConstC FrictionCoefficientcoulombEnum
++syn keyword juliaConstC FrictionEffectivePressureEnum
++syn keyword juliaConstC FrictionMEnum
++syn keyword juliaConstC FrictionPEnum
++syn keyword juliaConstC FrictionPressureAdjustedTemperatureEnum
++syn keyword juliaConstC FrictionQEnum
++syn keyword juliaConstC FrictionSedimentCompressibilityCoefficientEnum
++syn keyword juliaConstC FrictionTillFrictionAngleEnum
++syn keyword juliaConstC FrictionWaterLayerEnum
++syn keyword juliaConstC FrictionfEnum
++syn keyword juliaConstC FrontalForcingsBasinIdEnum
++syn keyword juliaConstC FrontalForcingsSubglacialDischargeEnum
++syn keyword juliaConstC FrontalForcingsThermalForcingEnum
++syn keyword juliaConstC GeometryHydrostaticRatioEnum
++syn keyword juliaConstC NGiaEnum
++syn keyword juliaConstC NGiaRateEnum
++syn keyword juliaConstC UGiaEnum
++syn keyword juliaConstC UGiaRateEnum
++syn keyword juliaConstC GradientEnum
++syn keyword juliaConstC GroundinglineHeightEnum
++syn keyword juliaConstC HydraulicPotentialEnum
++syn keyword juliaConstC HydraulicPotentialOldEnum
++syn keyword juliaConstC HydrologyBasalFluxEnum
++syn keyword juliaConstC HydrologyBumpHeightEnum
++syn keyword juliaConstC HydrologyBumpSpacingEnum
++syn keyword juliaConstC HydrologydcBasalMoulinInputEnum
++syn keyword juliaConstC HydrologydcEplThicknessEnum
++syn keyword juliaConstC HydrologydcEplThicknessOldEnum
++syn keyword juliaConstC HydrologydcEplThicknessSubstepEnum
++syn keyword juliaConstC HydrologydcEplThicknessTransientEnum
++syn keyword juliaConstC HydrologydcMaskEplactiveEltEnum
++syn keyword juliaConstC HydrologydcMaskEplactiveNodeEnum
++syn keyword juliaConstC HydrologydcMaskThawedEltEnum
++syn keyword juliaConstC HydrologydcMaskThawedNodeEnum
++syn keyword juliaConstC HydrologydcSedimentTransmitivityEnum
++syn keyword juliaConstC HydrologyDrainageRateEnum
++syn keyword juliaConstC HydrologyEnglacialInputEnum
++syn keyword juliaConstC HydrologyGapHeightEnum
++syn keyword juliaConstC HydrologyGapHeightXEnum
++syn keyword juliaConstC HydrologyGapHeightXXEnum
++syn keyword juliaConstC HydrologyGapHeightYEnum
++syn keyword juliaConstC HydrologyGapHeightYYEnum
++syn keyword juliaConstC HydrologyHeadEnum
++syn keyword juliaConstC HydrologyHeadOldEnum
++syn keyword juliaConstC HydrologyMoulinInputEnum
++syn keyword juliaConstC HydrologyNeumannfluxEnum
++syn keyword juliaConstC HydrologyReynoldsEnum
++syn keyword juliaConstC HydrologySheetConductivityEnum
++syn keyword juliaConstC HydrologySheetThicknessEnum
++syn keyword juliaConstC HydrologySheetThicknessOldEnum
++syn keyword juliaConstC HydrologyTwsEnum
++syn keyword juliaConstC HydrologyTwsSpcEnum
++syn keyword juliaConstC HydrologyTwsAnalysisEnum
++syn keyword juliaConstC HydrologyWatercolumnMaxEnum
++syn keyword juliaConstC HydrologyWaterVxEnum
++syn keyword juliaConstC HydrologyWaterVyEnum
++syn keyword juliaConstC IceEnum
++syn keyword juliaConstC IceMaskNodeActivationEnum
++syn keyword juliaConstC InputEnum
++syn keyword juliaConstC InversionCostFunctionsCoefficientsEnum
++syn keyword juliaConstC InversionSurfaceObsEnum
++syn keyword juliaConstC InversionThicknessObsEnum
++syn keyword juliaConstC InversionVelObsEnum
++syn keyword juliaConstC InversionVxObsEnum
++syn keyword juliaConstC InversionVyObsEnum
++syn keyword juliaConstC LevelsetfunctionSlopeXEnum
++syn keyword juliaConstC LevelsetfunctionSlopeYEnum
++syn keyword juliaConstC LevelsetObservationEnum
++syn keyword juliaConstC LoadingforceXEnum
++syn keyword juliaConstC LoadingforceYEnum
++syn keyword juliaConstC LoadingforceZEnum
++syn keyword juliaConstC MaskOceanLevelsetEnum
++syn keyword juliaConstC MaskIceLevelsetEnum
++syn keyword juliaConstC MaskIceRefLevelsetEnum
++syn keyword juliaConstC MasstransportSpcthicknessEnum
++syn keyword juliaConstC MaterialsRheologyBEnum
++syn keyword juliaConstC MaterialsRheologyBbarEnum
++syn keyword juliaConstC MaterialsRheologyEEnum
++syn keyword juliaConstC MaterialsRheologyEbarEnum
++syn keyword juliaConstC MaterialsRheologyEcEnum
++syn keyword juliaConstC MaterialsRheologyEcbarEnum
++syn keyword juliaConstC MaterialsRheologyEsEnum
++syn keyword juliaConstC MaterialsRheologyEsbarEnum
++syn keyword juliaConstC MaterialsRheologyNEnum
++syn keyword juliaConstC MeshScaleFactorEnum
++syn keyword juliaConstC MeshVertexonbaseEnum
++syn keyword juliaConstC MeshVertexonboundaryEnum
++syn keyword juliaConstC MeshVertexonsurfaceEnum
++syn keyword juliaConstC MisfitEnum
++syn keyword juliaConstC MovingFrontalVxEnum
++syn keyword juliaConstC MovingFrontalVyEnum
++syn keyword juliaConstC NeumannfluxEnum
++syn keyword juliaConstC NewDamageEnum
++syn keyword juliaConstC NodeEnum
++syn keyword juliaConstC OmegaAbsGradientEnum
++syn keyword juliaConstC OceantransportSpcbottompressureEnum
++syn keyword juliaConstC OceantransportSpcstrEnum
++syn keyword juliaConstC OceantransportSpcdslEnum
++syn keyword juliaConstC P0Enum
++syn keyword juliaConstC P1Enum
++syn keyword juliaConstC PartitioningEnum
++syn keyword juliaConstC PressureEnum
++syn keyword juliaConstC RadarEnum
++syn keyword juliaConstC RadarAttenuationMacGregorEnum
++syn keyword juliaConstC RadarAttenuationWolffEnum
++syn keyword juliaConstC RadarIcePeriodEnum
++syn keyword juliaConstC RadarPowerMacGregorEnum
++syn keyword juliaConstC RadarPowerWolffEnum
++syn keyword juliaConstC RheologyBAbsGradientEnum
++syn keyword juliaConstC RheologyBInitialguessEnum
++syn keyword juliaConstC RheologyBInitialguessMisfitEnum
++syn keyword juliaConstC RheologyBbarAbsGradientEnum
++syn keyword juliaConstC SampleEnum
++syn keyword juliaConstC SampleOldEnum
++syn keyword juliaConstC SampleNoiseEnum
++syn keyword juliaConstC SamplingBetaEnum
++syn keyword juliaConstC SamplingKappaEnum
++syn keyword juliaConstC SamplingPhiEnum
++syn keyword juliaConstC SamplingTauEnum
++syn keyword juliaConstC SealevelEnum
++syn keyword juliaConstC SealevelGRDEnum
++syn keyword juliaConstC SatGraviGRDEnum
++syn keyword juliaConstC SealevelBarystaticMaskEnum
++syn keyword juliaConstC SealevelBarystaticIceMaskEnum
++syn keyword juliaConstC SealevelBarystaticIceWeightsEnum
++syn keyword juliaConstC SealevelBarystaticIceAreaEnum
++syn keyword juliaConstC SealevelBarystaticIceLatbarEnum
++syn keyword juliaConstC SealevelBarystaticIceLongbarEnum
++syn keyword juliaConstC SealevelBarystaticIceLoadEnum
++syn keyword juliaConstC SealevelBarystaticHydroMaskEnum
++syn keyword juliaConstC SealevelBarystaticHydroWeightsEnum
++syn keyword juliaConstC SealevelBarystaticHydroAreaEnum
++syn keyword juliaConstC SealevelBarystaticHydroLatbarEnum
++syn keyword juliaConstC SealevelBarystaticHydroLongbarEnum
++syn keyword juliaConstC SealevelBarystaticHydroLoadEnum
++syn keyword juliaConstC SealevelBarystaticBpMaskEnum
++syn keyword juliaConstC SealevelBarystaticBpWeightsEnum
++syn keyword juliaConstC SealevelBarystaticBpAreaEnum
++syn keyword juliaConstC SealevelBarystaticBpLoadEnum
++syn keyword juliaConstC SealevelBarystaticOceanMaskEnum
++syn keyword juliaConstC SealevelBarystaticOceanWeightsEnum
++syn keyword juliaConstC SealevelBarystaticOceanAreaEnum
++syn keyword juliaConstC SealevelBarystaticOceanLatbarEnum
++syn keyword juliaConstC SealevelBarystaticOceanLongbarEnum
++syn keyword juliaConstC SealevelBarystaticOceanLoadEnum
++syn keyword juliaConstC SealevelNEsaEnum
++syn keyword juliaConstC SealevelNEsaRateEnum
++syn keyword juliaConstC SealevelRSLEnum
++syn keyword juliaConstC BslcEnum
++syn keyword juliaConstC BslcIceEnum
++syn keyword juliaConstC BslcHydroEnum
++syn keyword juliaConstC BslcOceanEnum
++syn keyword juliaConstC BslcRateEnum
++syn keyword juliaConstC GmtslcEnum
++syn keyword juliaConstC SealevelRSLBarystaticEnum
++syn keyword juliaConstC SealevelRSLRateEnum
++syn keyword juliaConstC SealevelUGrdEnum
++syn keyword juliaConstC SealevelNGrdEnum
++syn keyword juliaConstC SealevelUEastEsaEnum
++syn keyword juliaConstC SealevelUNorthEsaEnum
++syn keyword juliaConstC SealevelchangeIndicesEnum
++syn keyword juliaConstC SealevelchangeAlphaIndexEnum
++syn keyword juliaConstC SealevelchangeAzimuthIndexEnum
++syn keyword juliaConstC SealevelchangeGrotEnum
++syn keyword juliaConstC SealevelchangeGSatGravirotEnum
++syn keyword juliaConstC SealevelchangeGUrotEnum
++syn keyword juliaConstC SealevelchangeGNrotEnum
++syn keyword juliaConstC SealevelchangeGErotEnum
++syn keyword juliaConstC SealevelchangeAlphaIndexOceanEnum
++syn keyword juliaConstC SealevelchangeAlphaIndexIceEnum
++syn keyword juliaConstC SealevelchangeAlphaIndexHydroEnum
++syn keyword juliaConstC SealevelchangeAzimuthIndexOceanEnum
++syn keyword juliaConstC SealevelchangeAzimuthIndexIceEnum
++syn keyword juliaConstC SealevelchangeAzimuthIndexHydroEnum
++syn keyword juliaConstC SealevelchangeViscousRSLEnum
++syn keyword juliaConstC SealevelchangeViscousSGEnum
++syn keyword juliaConstC SealevelchangeViscousUEnum
++syn keyword juliaConstC SealevelchangeViscousNEnum
++syn keyword juliaConstC SealevelchangeViscousEEnum
++syn keyword juliaConstC SedimentHeadEnum
++syn keyword juliaConstC SedimentHeadOldEnum
++syn keyword juliaConstC SedimentHeadSubstepEnum
++syn keyword juliaConstC SedimentHeadTransientEnum
++syn keyword juliaConstC SedimentHeadResidualEnum
++syn keyword juliaConstC SedimentHeadStackedEnum
++syn keyword juliaConstC SigmaNNEnum
++syn keyword juliaConstC SigmaVMEnum
++syn keyword juliaConstC SmbAccumulatedECEnum
++syn keyword juliaConstC SmbAccumulatedMassBalanceEnum
++syn keyword juliaConstC SmbAccumulatedMeltEnum
++syn keyword juliaConstC SmbAccumulatedPrecipitationEnum
++syn keyword juliaConstC SmbAccumulatedRainEnum
++syn keyword juliaConstC SmbAccumulatedRefreezeEnum
++syn keyword juliaConstC SmbAccumulatedRunoffEnum
++syn keyword juliaConstC SmbAEnum
++syn keyword juliaConstC SmbAdiffEnum
++syn keyword juliaConstC SmbAValueEnum
++syn keyword juliaConstC SmbAccumulationEnum
++syn keyword juliaConstC SmbAdiffiniEnum
++syn keyword juliaConstC SmbAiniEnum
++syn keyword juliaConstC SmbAutoregressionNoiseEnum
++syn keyword juliaConstC SmbBasinsIdEnum
++syn keyword juliaConstC SmbBMaxEnum
++syn keyword juliaConstC SmbBMinEnum
++syn keyword juliaConstC SmbBNegEnum
++syn keyword juliaConstC SmbBPosEnum
++syn keyword juliaConstC SmbCEnum
++syn keyword juliaConstC SmbCcsnowValueEnum
++syn keyword juliaConstC SmbCciceValueEnum
++syn keyword juliaConstC SmbCotValueEnum
++syn keyword juliaConstC SmbDEnum
++syn keyword juliaConstC SmbDailyairdensityEnum
++syn keyword juliaConstC SmbDailyairhumidityEnum
++syn keyword juliaConstC SmbDailydlradiationEnum
++syn keyword juliaConstC SmbDailydsradiationEnum
++syn keyword juliaConstC SmbDailypressureEnum
++syn keyword juliaConstC SmbDailyrainfallEnum
++syn keyword juliaConstC SmbDailysnowfallEnum
++syn keyword juliaConstC SmbDailytemperatureEnum
++syn keyword juliaConstC SmbDailywindspeedEnum
++syn keyword juliaConstC SmbDiniEnum
++syn keyword juliaConstC SmbDlwrfEnum
++syn keyword juliaConstC SmbDulwrfValueEnum
++syn keyword juliaConstC SmbDswrfEnum
++syn keyword juliaConstC SmbDswdiffrfEnum
++syn keyword juliaConstC SmbDzAddEnum
++syn keyword juliaConstC SmbDzEnum
++syn keyword juliaConstC SmbDzMinEnum
++syn keyword juliaConstC SmbDzTopEnum
++syn keyword juliaConstC SmbDziniEnum
++syn keyword juliaConstC SmbEAirEnum
++syn keyword juliaConstC SmbECEnum
++syn keyword juliaConstC SmbECDtEnum
++syn keyword juliaConstC SmbECiniEnum
++syn keyword juliaConstC SmbElaEnum
++syn keyword juliaConstC SmbEvaporationEnum
++syn keyword juliaConstC SmbFACEnum
++syn keyword juliaConstC SmbGdnEnum
++syn keyword juliaConstC SmbGdniniEnum
++syn keyword juliaConstC SmbGspEnum
++syn keyword juliaConstC SmbGspiniEnum
++syn keyword juliaConstC SmbHrefEnum
++syn keyword juliaConstC SmbIsInitializedEnum
++syn keyword juliaConstC SmbMAddEnum
++syn keyword juliaConstC SmbMassBalanceEnum
++syn keyword juliaConstC SmbMassBalanceSubstepEnum
++syn keyword juliaConstC SmbMassBalanceTransientEnum
++syn keyword juliaConstC SmbMeanLHFEnum
++syn keyword juliaConstC SmbMeanSHFEnum
++syn keyword juliaConstC SmbMeanULWEnum
++syn keyword juliaConstC SmbMeltEnum
++syn keyword juliaConstC SmbMonthlytemperaturesEnum
++syn keyword juliaConstC SmbMSurfEnum
++syn keyword juliaConstC SmbNetLWEnum
++syn keyword juliaConstC SmbNetSWEnum
++syn keyword juliaConstC SmbPAirEnum
++syn keyword juliaConstC SmbPEnum
++syn keyword juliaConstC SmbPddfacIceEnum
++syn keyword juliaConstC SmbPddfacSnowEnum
++syn keyword juliaConstC SmbPrecipitationEnum
++syn keyword juliaConstC SmbPrecipitationsAnomalyEnum
++syn keyword juliaConstC SmbPrecipitationsLgmEnum
++syn keyword juliaConstC SmbPrecipitationsPresentdayEnum
++syn keyword juliaConstC SmbPrecipitationsReconstructedEnum
++syn keyword juliaConstC SmbRainEnum
++syn keyword juliaConstC SmbReEnum
++syn keyword juliaConstC SmbRefreezeEnum
++syn keyword juliaConstC SmbReiniEnum
++syn keyword juliaConstC SmbRunoffEnum
++syn keyword juliaConstC SmbRunoffSubstepEnum
++syn keyword juliaConstC SmbRunoffTransientEnum
++syn keyword juliaConstC SmbS0gcmEnum
++syn keyword juliaConstC SmbS0pEnum
++syn keyword juliaConstC SmbS0tEnum
++syn keyword juliaConstC SmbSizeiniEnum
++syn keyword juliaConstC SmbSmbCorrEnum
++syn keyword juliaConstC SmbSmbrefEnum
++syn keyword juliaConstC SmbSzaValueEnum
++syn keyword juliaConstC SmbTEnum
++syn keyword juliaConstC SmbTaEnum
++syn keyword juliaConstC SmbTeValueEnum
++syn keyword juliaConstC SmbTemperaturesAnomalyEnum
++syn keyword juliaConstC SmbTemperaturesLgmEnum
++syn keyword juliaConstC SmbTemperaturesPresentdayEnum
++syn keyword juliaConstC SmbTemperaturesReconstructedEnum
++syn keyword juliaConstC SmbTiniEnum
++syn keyword juliaConstC SmbTmeanEnum
++syn keyword juliaConstC SmbTzEnum
++syn keyword juliaConstC SmbValuesAutoregressionEnum
++syn keyword juliaConstC SmbVEnum
++syn keyword juliaConstC SmbVmeanEnum
++syn keyword juliaConstC SmbVzEnum
++syn keyword juliaConstC SmbWEnum
++syn keyword juliaConstC SmbWAddEnum
++syn keyword juliaConstC SmbWiniEnum
++syn keyword juliaConstC SmbZMaxEnum
++syn keyword juliaConstC SmbZMinEnum
++syn keyword juliaConstC SmbZTopEnum
++syn keyword juliaConstC SmbZYEnum
++syn keyword juliaConstC SolidearthExternalDisplacementEastRateEnum
++syn keyword juliaConstC SolidearthExternalDisplacementNorthRateEnum
++syn keyword juliaConstC SolidearthExternalDisplacementUpRateEnum
++syn keyword juliaConstC SolidearthExternalGeoidRateEnum
++syn keyword juliaConstC StochasticForcingDefaultIdEnum
++syn keyword juliaConstC StrainRateeffectiveEnum
++syn keyword juliaConstC StrainRateparallelEnum
++syn keyword juliaConstC StrainRateperpendicularEnum
++syn keyword juliaConstC StrainRatexxEnum
++syn keyword juliaConstC StrainRatexyEnum
++syn keyword juliaConstC StrainRatexzEnum
++syn keyword juliaConstC StrainRateyyEnum
++syn keyword juliaConstC StrainRateyzEnum
++syn keyword juliaConstC StrainRatezzEnum
++syn keyword juliaConstC StressMaxPrincipalEnum
++syn keyword juliaConstC StressTensorxxEnum
++syn keyword juliaConstC StressTensorxyEnum
++syn keyword juliaConstC StressTensorxzEnum
++syn keyword juliaConstC StressTensoryyEnum
++syn keyword juliaConstC StressTensoryzEnum
++syn keyword juliaConstC StressTensorzzEnum
++syn keyword juliaConstC SurfaceAbsMisfitEnum
++syn keyword juliaConstC SurfaceAbsVelMisfitEnum
++syn keyword juliaConstC AreaEnum
++syn keyword juliaConstC SealevelAreaEnum
++syn keyword juliaConstC SurfaceAreaEnum
++syn keyword juliaConstC SurfaceAverageVelMisfitEnum
++syn keyword juliaConstC SurfaceCrevasseEnum
++syn keyword juliaConstC SurfaceEnum
++syn keyword juliaConstC SurfaceOldEnum
++syn keyword juliaConstC SurfaceLogVelMisfitEnum
++syn keyword juliaConstC SurfaceLogVxVyMisfitEnum
++syn keyword juliaConstC SurfaceObservationEnum
++syn keyword juliaConstC SurfaceRelVelMisfitEnum
++syn keyword juliaConstC SurfaceSlopeXEnum
++syn keyword juliaConstC SurfaceSlopeYEnum
++syn keyword juliaConstC TemperatureEnum
++syn keyword juliaConstC TemperaturePDDEnum
++syn keyword juliaConstC TemperaturePicardEnum
++syn keyword juliaConstC TemperatureSEMICEnum
++syn keyword juliaConstC ThermalforcingAutoregressionNoiseEnum
++syn keyword juliaConstC ThermalforcingValuesAutoregressionEnum
++syn keyword juliaConstC ThermalSpctemperatureEnum
++syn keyword juliaConstC ThicknessAbsGradientEnum
++syn keyword juliaConstC ThicknessAbsMisfitEnum
++syn keyword juliaConstC ThicknessAcrossGradientEnum
++syn keyword juliaConstC ThicknessAlongGradientEnum
++syn keyword juliaConstC ThicknessEnum
++syn keyword juliaConstC ThicknessOldEnum
++syn keyword juliaConstC ThicknessPositiveEnum
++syn keyword juliaConstC ThicknessResidualEnum
++syn keyword juliaConstC TransientAccumulatedDeltaIceThicknessEnum
++syn keyword juliaConstC VelEnum
++syn keyword juliaConstC VxAverageEnum
++syn keyword juliaConstC VxBaseEnum
++syn keyword juliaConstC VxEnum
++syn keyword juliaConstC VxMeshEnum
++syn keyword juliaConstC VxObsEnum
++syn keyword juliaConstC VxShearEnum
++syn keyword juliaConstC VxSurfaceEnum
++syn keyword juliaConstC VyAverageEnum
++syn keyword juliaConstC VyBaseEnum
++syn keyword juliaConstC VyEnum
++syn keyword juliaConstC VyMeshEnum
++syn keyword juliaConstC VyObsEnum
++syn keyword juliaConstC VyShearEnum
++syn keyword juliaConstC VySurfaceEnum
++syn keyword juliaConstC VzEnum
++syn keyword juliaConstC VzFSEnum
++syn keyword juliaConstC VzHOEnum
++syn keyword juliaConstC VzMeshEnum
++syn keyword juliaConstC VzSSAEnum
++syn keyword juliaConstC WaterColumnOldEnum
++syn keyword juliaConstC WatercolumnEnum
++syn keyword juliaConstC WaterfractionDrainageEnum
++syn keyword juliaConstC WaterfractionDrainageIntegratedEnum
++syn keyword juliaConstC WaterfractionEnum
++syn keyword juliaConstC WaterheightEnum
++syn keyword juliaConstC FrictionWaterPressureEnum
++syn keyword juliaConstC FrictionWaterPressureNoiseEnum
++syn keyword juliaConstC WeightsLevelsetObservationEnum
++syn keyword juliaConstC WeightsSurfaceObservationEnum
++syn keyword juliaConstC OldAccumulatedDeltaBottomPressureEnum
++syn keyword juliaConstC OldAccumulatedDeltaIceThicknessEnum
++syn keyword juliaConstC OldAccumulatedDeltaTwsEnum
++syn keyword juliaConstC Outputdefinition1Enum
++syn keyword juliaConstC Outputdefinition10Enum
++syn keyword juliaConstC Outputdefinition11Enum
++syn keyword juliaConstC Outputdefinition12Enum
++syn keyword juliaConstC Outputdefinition13Enum
++syn keyword juliaConstC Outputdefinition14Enum
++syn keyword juliaConstC Outputdefinition15Enum
++syn keyword juliaConstC Outputdefinition16Enum
++syn keyword juliaConstC Outputdefinition17Enum
++syn keyword juliaConstC Outputdefinition18Enum
++syn keyword juliaConstC Outputdefinition19Enum
++syn keyword juliaConstC Outputdefinition20Enum
++syn keyword juliaConstC Outputdefinition21Enum
++syn keyword juliaConstC Outputdefinition22Enum
++syn keyword juliaConstC Outputdefinition23Enum
++syn keyword juliaConstC Outputdefinition24Enum
++syn keyword juliaConstC Outputdefinition25Enum
++syn keyword juliaConstC Outputdefinition26Enum
++syn keyword juliaConstC Outputdefinition27Enum
++syn keyword juliaConstC Outputdefinition28Enum
++syn keyword juliaConstC Outputdefinition29Enum
++syn keyword juliaConstC Outputdefinition2Enum
++syn keyword juliaConstC Outputdefinition30Enum
++syn keyword juliaConstC Outputdefinition31Enum
++syn keyword juliaConstC Outputdefinition32Enum
++syn keyword juliaConstC Outputdefinition33Enum
++syn keyword juliaConstC Outputdefinition34Enum
++syn keyword juliaConstC Outputdefinition35Enum
++syn keyword juliaConstC Outputdefinition36Enum
++syn keyword juliaConstC Outputdefinition37Enum
++syn keyword juliaConstC Outputdefinition38Enum
++syn keyword juliaConstC Outputdefinition39Enum
++syn keyword juliaConstC Outputdefinition3Enum
++syn keyword juliaConstC Outputdefinition40Enum
++syn keyword juliaConstC Outputdefinition41Enum
++syn keyword juliaConstC Outputdefinition42Enum
++syn keyword juliaConstC Outputdefinition43Enum
++syn keyword juliaConstC Outputdefinition44Enum
++syn keyword juliaConstC Outputdefinition45Enum
++syn keyword juliaConstC Outputdefinition46Enum
++syn keyword juliaConstC Outputdefinition47Enum
++syn keyword juliaConstC Outputdefinition48Enum
++syn keyword juliaConstC Outputdefinition49Enum
++syn keyword juliaConstC Outputdefinition4Enum
++syn keyword juliaConstC Outputdefinition50Enum
++syn keyword juliaConstC Outputdefinition51Enum
++syn keyword juliaConstC Outputdefinition52Enum
++syn keyword juliaConstC Outputdefinition53Enum
++syn keyword juliaConstC Outputdefinition54Enum
++syn keyword juliaConstC Outputdefinition55Enum
++syn keyword juliaConstC Outputdefinition56Enum
++syn keyword juliaConstC Outputdefinition57Enum
++syn keyword juliaConstC Outputdefinition58Enum
++syn keyword juliaConstC Outputdefinition59Enum
++syn keyword juliaConstC Outputdefinition5Enum
++syn keyword juliaConstC Outputdefinition60Enum
++syn keyword juliaConstC Outputdefinition61Enum
++syn keyword juliaConstC Outputdefinition62Enum
++syn keyword juliaConstC Outputdefinition63Enum
++syn keyword juliaConstC Outputdefinition64Enum
++syn keyword juliaConstC Outputdefinition65Enum
++syn keyword juliaConstC Outputdefinition66Enum
++syn keyword juliaConstC Outputdefinition67Enum
++syn keyword juliaConstC Outputdefinition68Enum
++syn keyword juliaConstC Outputdefinition69Enum
++syn keyword juliaConstC Outputdefinition6Enum
++syn keyword juliaConstC Outputdefinition70Enum
++syn keyword juliaConstC Outputdefinition71Enum
++syn keyword juliaConstC Outputdefinition72Enum
++syn keyword juliaConstC Outputdefinition73Enum
++syn keyword juliaConstC Outputdefinition74Enum
++syn keyword juliaConstC Outputdefinition75Enum
++syn keyword juliaConstC Outputdefinition76Enum
++syn keyword juliaConstC Outputdefinition77Enum
++syn keyword juliaConstC Outputdefinition78Enum
++syn keyword juliaConstC Outputdefinition79Enum
++syn keyword juliaConstC Outputdefinition7Enum
++syn keyword juliaConstC Outputdefinition80Enum
++syn keyword juliaConstC Outputdefinition81Enum
++syn keyword juliaConstC Outputdefinition82Enum
++syn keyword juliaConstC Outputdefinition83Enum
++syn keyword juliaConstC Outputdefinition84Enum
++syn keyword juliaConstC Outputdefinition85Enum
++syn keyword juliaConstC Outputdefinition86Enum
++syn keyword juliaConstC Outputdefinition87Enum
++syn keyword juliaConstC Outputdefinition88Enum
++syn keyword juliaConstC Outputdefinition89Enum
++syn keyword juliaConstC Outputdefinition8Enum
++syn keyword juliaConstC Outputdefinition90Enum
++syn keyword juliaConstC Outputdefinition91Enum
++syn keyword juliaConstC Outputdefinition92Enum
++syn keyword juliaConstC Outputdefinition93Enum
++syn keyword juliaConstC Outputdefinition94Enum
++syn keyword juliaConstC Outputdefinition95Enum
++syn keyword juliaConstC Outputdefinition96Enum
++syn keyword juliaConstC Outputdefinition97Enum
++syn keyword juliaConstC Outputdefinition98Enum
++syn keyword juliaConstC Outputdefinition99Enum
++syn keyword juliaConstC Outputdefinition9Enum
++syn keyword juliaConstC Outputdefinition100Enum
++syn keyword juliaConstC InputsENDEnum
++syn keyword juliaConstC AbsoluteEnum
++syn keyword juliaConstC AdaptiveTimesteppingEnum
++syn keyword juliaConstC AdjointBalancethickness2AnalysisEnum
++syn keyword juliaConstC AdjointBalancethicknessAnalysisEnum
++syn keyword juliaConstC AdjointHorizAnalysisEnum
++syn keyword juliaConstC AggressiveMigrationEnum
++syn keyword juliaConstC AmrBamgEnum
++syn keyword juliaConstC AmrNeopzEnum
++syn keyword juliaConstC AndroidFrictionCoefficientEnum
++syn keyword juliaConstC ArrheniusEnum
++syn keyword juliaConstC AutodiffJacobianEnum
++syn keyword juliaConstC AutoregressionLinearFloatingMeltRateEnum
++syn keyword juliaConstC Balancethickness2AnalysisEnum
++syn keyword juliaConstC Balancethickness2SolutionEnum
++syn keyword juliaConstC BalancethicknessAnalysisEnum
++syn keyword juliaConstC BalancethicknessApparentMassbalanceEnum
++syn keyword juliaConstC BalancethicknessSoftAnalysisEnum
++syn keyword juliaConstC BalancethicknessSoftSolutionEnum
++syn keyword juliaConstC BalancethicknessSolutionEnum
++syn keyword juliaConstC BalancevelocityAnalysisEnum
++syn keyword juliaConstC BalancevelocitySolutionEnum
++syn keyword juliaConstC BasalforcingsIsmip6Enum
++syn keyword juliaConstC BasalforcingsPicoEnum
++syn keyword juliaConstC BeckmannGoosseFloatingMeltRateEnum
++syn keyword juliaConstC BedSlopeSolutionEnum
++syn keyword juliaConstC BoolExternalResultEnum
++syn keyword juliaConstC BoolInputEnum
++syn keyword juliaConstC IntInputEnum
++syn keyword juliaConstC DoubleInputEnum
++syn keyword juliaConstC BoolParamEnum
++syn keyword juliaConstC BoundaryEnum
++syn keyword juliaConstC BuddJackaEnum
++syn keyword juliaConstC CalvingDev2Enum
++syn keyword juliaConstC CalvingHabEnum
++syn keyword juliaConstC CalvingLevermannEnum
++syn keyword juliaConstC CalvingTestEnum
++syn keyword juliaConstC CalvingParameterizationEnum
++syn keyword juliaConstC CalvingVonmisesEnum
++syn keyword juliaConstC CfdragcoeffabsgradEnum
++syn keyword juliaConstC CfsurfacelogvelEnum
++syn keyword juliaConstC CfsurfacesquareEnum
++syn keyword juliaConstC CflevelsetmisfitEnum
++syn keyword juliaConstC ChannelEnum
++syn keyword juliaConstC ChannelAreaEnum
++syn keyword juliaConstC ChannelAreaOldEnum
++syn keyword juliaConstC ChannelDischargeEnum
++syn keyword juliaConstC ClosedEnum
++syn keyword juliaConstC ColinearEnum
++syn keyword juliaConstC ConstraintsEnum
++syn keyword juliaConstC ContactEnum
++syn keyword juliaConstC ContourEnum
++syn keyword juliaConstC ContoursEnum
++syn keyword juliaConstC ControlInputEnum
++syn keyword juliaConstC ControlInputGradEnum
++syn keyword juliaConstC ControlInputMaxsEnum
++syn keyword juliaConstC ControlInputMinsEnum
++syn keyword juliaConstC ControlInputValuesEnum
++syn keyword juliaConstC CrouzeixRaviartEnum
++syn keyword juliaConstC CuffeyEnum
++syn keyword juliaConstC CuffeyTemperateEnum
++syn keyword juliaConstC DamageEvolutionAnalysisEnum
++syn keyword juliaConstC DamageEvolutionSolutionEnum
++syn keyword juliaConstC DataSetEnum
++syn keyword juliaConstC DataSetParamEnum
++syn keyword juliaConstC DatasetInputEnum
++syn keyword juliaConstC DefaultAnalysisEnum
++syn keyword juliaConstC DefaultCalvingEnum
++syn keyword juliaConstC DenseEnum
++syn keyword juliaConstC DependentObjectEnum
++syn keyword juliaConstC DepthAverageAnalysisEnum
++syn keyword juliaConstC DeviatoricStressErrorEstimatorEnum
++syn keyword juliaConstC DivergenceEnum
++syn keyword juliaConstC Domain3DsurfaceEnum
++syn keyword juliaConstC DoubleArrayInputEnum
++syn keyword juliaConstC ArrayInputEnum
++syn keyword juliaConstC IntArrayInputEnum
++syn keyword juliaConstC DoubleExternalResultEnum
++syn keyword juliaConstC DoubleMatArrayParamEnum
++syn keyword juliaConstC DoubleMatExternalResultEnum
++syn keyword juliaConstC DoubleMatParamEnum
++syn keyword juliaConstC DoubleParamEnum
++syn keyword juliaConstC DoubleVecParamEnum
++syn keyword juliaConstC ElementEnum
++syn keyword juliaConstC ElementHookEnum
++syn keyword juliaConstC ElementSIdEnum
++syn keyword juliaConstC EnthalpyAnalysisEnum
++syn keyword juliaConstC EsaAnalysisEnum
++syn keyword juliaConstC EsaSolutionEnum
++syn keyword juliaConstC EsaTransitionsEnum
++syn keyword juliaConstC ExternalResultEnum
++syn keyword juliaConstC ExtrapolationAnalysisEnum
++syn keyword juliaConstC ExtrudeFromBaseAnalysisEnum
++syn keyword juliaConstC ExtrudeFromTopAnalysisEnum
++syn keyword juliaConstC FSApproximationEnum
++syn keyword juliaConstC FSSolverEnum
++syn keyword juliaConstC FSpressureEnum
++syn keyword juliaConstC FSvelocityEnum
++syn keyword juliaConstC FemModelEnum
++syn keyword juliaConstC FileParamEnum
++syn keyword juliaConstC FixedTimesteppingEnum
++syn keyword juliaConstC FloatingAreaEnum
++syn keyword juliaConstC FloatingAreaScaledEnum
++syn keyword juliaConstC FloatingMeltRateEnum
++syn keyword juliaConstC FreeEnum
++syn keyword juliaConstC FreeSurfaceBaseAnalysisEnum
++syn keyword juliaConstC FreeSurfaceTopAnalysisEnum
++syn keyword juliaConstC FrontalForcingsDefaultEnum
++syn keyword juliaConstC FrontalForcingsRignotEnum
++syn keyword juliaConstC FrontalForcingsRignotAutoregressionEnum
++syn keyword juliaConstC FsetEnum
++syn keyword juliaConstC FullMeltOnPartiallyFloatingEnum
++syn keyword juliaConstC GLheightadvectionAnalysisEnum
++syn keyword juliaConstC GaussPentaEnum
++syn keyword juliaConstC GaussSegEnum
++syn keyword juliaConstC GaussTetraEnum
++syn keyword juliaConstC GaussTriaEnum
++syn keyword juliaConstC GenericOptionEnum
++syn keyword juliaConstC GenericParamEnum
++syn keyword juliaConstC GenericExternalResultEnum
++syn keyword juliaConstC Gradient1Enum
++syn keyword juliaConstC Gradient2Enum
++syn keyword juliaConstC Gradient3Enum
++syn keyword juliaConstC Gradient4Enum
++syn keyword juliaConstC GroundedAreaEnum
++syn keyword juliaConstC GroundedAreaScaledEnum
++syn keyword juliaConstC GroundingOnlyEnum
++syn keyword juliaConstC GroundinglineMassFluxEnum
++syn keyword juliaConstC GsetEnum
++syn keyword juliaConstC GslEnum
++syn keyword juliaConstC HOApproximationEnum
++syn keyword juliaConstC HOFSApproximationEnum
++syn keyword juliaConstC HookEnum
++syn keyword juliaConstC HydrologyDCEfficientAnalysisEnum
++syn keyword juliaConstC HydrologyDCInefficientAnalysisEnum
++syn keyword juliaConstC HydrologyGlaDSAnalysisEnum
++syn keyword juliaConstC HydrologyGlaDSEnum
++syn keyword juliaConstC HydrologyPismAnalysisEnum
++syn keyword juliaConstC HydrologyShaktiAnalysisEnum
++syn keyword juliaConstC HydrologyShreveAnalysisEnum
++syn keyword juliaConstC HydrologySolutionEnum
++syn keyword juliaConstC HydrologySubstepsEnum
++syn keyword juliaConstC HydrologySubTimeEnum
++syn keyword juliaConstC HydrologydcEnum
++syn keyword juliaConstC HydrologypismEnum
++syn keyword juliaConstC HydrologyshaktiEnum
++syn keyword juliaConstC HydrologyshreveEnum
++syn keyword juliaConstC IceMassEnum
++syn keyword juliaConstC IceMassScaledEnum
++syn keyword juliaConstC IceVolumeAboveFloatationEnum
++syn keyword juliaConstC IceVolumeAboveFloatationScaledEnum
++syn keyword juliaConstC IceVolumeEnum
++syn keyword juliaConstC IceVolumeScaledEnum
++syn keyword juliaConstC IcefrontMassFluxEnum
++syn keyword juliaConstC IcefrontMassFluxLevelsetEnum
++syn keyword juliaConstC IncrementalEnum
++syn keyword juliaConstC IndexedEnum
++syn keyword juliaConstC IntExternalResultEnum
++syn keyword juliaConstC ElementInputEnum
++syn keyword juliaConstC IntMatExternalResultEnum
++syn keyword juliaConstC IntMatParamEnum
++syn keyword juliaConstC IntParamEnum
++syn keyword juliaConstC IntVecParamEnum
++syn keyword juliaConstC InputsEnum
++syn keyword juliaConstC InternalEnum
++syn keyword juliaConstC IntersectEnum
++syn keyword juliaConstC InversionVzObsEnum
++syn keyword juliaConstC JEnum
++syn keyword juliaConstC L1L2ApproximationEnum
++syn keyword juliaConstC MOLHOApproximationEnum
++syn keyword juliaConstC L2ProjectionBaseAnalysisEnum
++syn keyword juliaConstC L2ProjectionEPLAnalysisEnum
++syn keyword juliaConstC LACrouzeixRaviartEnum
++syn keyword juliaConstC LATaylorHoodEnum
++syn keyword juliaConstC LambdaSEnum
++syn keyword juliaConstC LevelsetAnalysisEnum
++syn keyword juliaConstC LevelsetfunctionPicardEnum
++syn keyword juliaConstC LinearFloatingMeltRateEnum
++syn keyword juliaConstC LliboutryDuvalEnum
++syn keyword juliaConstC LoadsEnum
++syn keyword juliaConstC LoveAnalysisEnum
++syn keyword juliaConstC LoveHfEnum
++syn keyword juliaConstC LoveHtEnum
++syn keyword juliaConstC LoveKernelsImagEnum
++syn keyword juliaConstC LoveKernelsRealEnum
++syn keyword juliaConstC LoveKfEnum
++syn keyword juliaConstC LoveKtEnum
++syn keyword juliaConstC LoveLfEnum
++syn keyword juliaConstC LoveLtEnum
++syn keyword juliaConstC LoveTidalHtEnum
++syn keyword juliaConstC LoveTidalKtEnum
++syn keyword juliaConstC LoveTidalLtEnum
++syn keyword juliaConstC LovePMTF1tEnum
++syn keyword juliaConstC LovePMTF2tEnum
++syn keyword juliaConstC LoveYiEnum
++syn keyword juliaConstC LoveRhsEnum
++syn keyword juliaConstC LoveSolutionEnum
++syn keyword juliaConstC MINIEnum
++syn keyword juliaConstC MINIcondensedEnum
++syn keyword juliaConstC MantlePlumeGeothermalFluxEnum
++syn keyword juliaConstC MassFluxEnum
++syn keyword juliaConstC MassconEnum
++syn keyword juliaConstC MassconaxpbyEnum
++syn keyword juliaConstC MassfluxatgateEnum
++syn keyword juliaConstC MasstransportAnalysisEnum
++syn keyword juliaConstC MasstransportSolutionEnum
++syn keyword juliaConstC MatdamageiceEnum
++syn keyword juliaConstC MatenhancediceEnum
++syn keyword juliaConstC MaterialsEnum
++syn keyword juliaConstC MatestarEnum
++syn keyword juliaConstC MaticeEnum
++syn keyword juliaConstC MatlithoEnum
++syn keyword juliaConstC MathydroEnum
++syn keyword juliaConstC MatrixParamEnum
++syn keyword juliaConstC MaxAbsVxEnum
++syn keyword juliaConstC MaxAbsVyEnum
++syn keyword juliaConstC MaxAbsVzEnum
++syn keyword juliaConstC MaxDivergenceEnum
++syn keyword juliaConstC MaxVelEnum
++syn keyword juliaConstC MaxVxEnum
++syn keyword juliaConstC MaxVyEnum
++syn keyword juliaConstC MaxVzEnum
++syn keyword juliaConstC MelangeEnum
++syn keyword juliaConstC MeltingAnalysisEnum
++syn keyword juliaConstC MeshElementsEnum
++syn keyword juliaConstC MeshXEnum
++syn keyword juliaConstC MeshYEnum
++syn keyword juliaConstC MinVelEnum
++syn keyword juliaConstC MinVxEnum
++syn keyword juliaConstC MinVyEnum
++syn keyword juliaConstC MinVzEnum
++syn keyword juliaConstC MismipFloatingMeltRateEnum
++syn keyword juliaConstC MoulinEnum
++syn keyword juliaConstC MpiDenseEnum
++syn keyword juliaConstC MpiEnum
++syn keyword juliaConstC MpiSparseEnum
++syn keyword juliaConstC MumpsEnum
++syn keyword juliaConstC NoFrictionOnPartiallyFloatingEnum
++syn keyword juliaConstC NoMeltOnPartiallyFloatingEnum
++syn keyword juliaConstC NodalEnum
++syn keyword juliaConstC NodalvalueEnum
++syn keyword juliaConstC NodeSIdEnum
++syn keyword juliaConstC NoneApproximationEnum
++syn keyword juliaConstC NoneEnum
++syn keyword juliaConstC NumberedcostfunctionEnum
++syn keyword juliaConstC NyeCO2Enum
++syn keyword juliaConstC NyeH2OEnum
++syn keyword juliaConstC NumericalfluxEnum
++syn keyword juliaConstC OceantransportAnalysisEnum
++syn keyword juliaConstC OceantransportSolutionEnum
++syn keyword juliaConstC OldGradientEnum
++syn keyword juliaConstC OneLayerP4zEnum
++syn keyword juliaConstC OpenEnum
++syn keyword juliaConstC OptionEnum
++syn keyword juliaConstC ParamEnum
++syn keyword juliaConstC ParametersEnum
++syn keyword juliaConstC P0ArrayEnum
++syn keyword juliaConstC P0DGEnum
++syn keyword juliaConstC P1DGEnum
++syn keyword juliaConstC P1P1Enum
++syn keyword juliaConstC P1P1GLSEnum
++syn keyword juliaConstC P1bubbleEnum
++syn keyword juliaConstC P1bubblecondensedEnum
++syn keyword juliaConstC P1xP2Enum
++syn keyword juliaConstC P1xP3Enum
++syn keyword juliaConstC P1xP4Enum
++syn keyword juliaConstC P2Enum
++syn keyword juliaConstC P2bubbleEnum
++syn keyword juliaConstC P2bubblecondensedEnum
++syn keyword juliaConstC P2xP1Enum
++syn keyword juliaConstC P2xP4Enum
++syn keyword juliaConstC PatersonEnum
++syn keyword juliaConstC PengridEnum
++syn keyword juliaConstC PenpairEnum
++syn keyword juliaConstC PentaEnum
++syn keyword juliaConstC PentaInputEnum
++syn keyword juliaConstC ProfilerEnum
++syn keyword juliaConstC ProfilingCurrentFlopsEnum
++syn keyword juliaConstC ProfilingCurrentMemEnum
++syn keyword juliaConstC ProfilingSolutionTimeEnum
++syn keyword juliaConstC RegionaloutputEnum
++syn keyword juliaConstC RegularEnum
++syn keyword juliaConstC RecoveryAnalysisEnum
++syn keyword juliaConstC RiftfrontEnum
++syn keyword juliaConstC SamplingAnalysisEnum
++syn keyword juliaConstC SamplingSolutionEnum
++syn keyword juliaConstC SIAApproximationEnum
++syn keyword juliaConstC SMBautoregressionEnum
++syn keyword juliaConstC SMBcomponentsEnum
++syn keyword juliaConstC SMBd18opddEnum
++syn keyword juliaConstC SMBforcingEnum
++syn keyword juliaConstC SMBgcmEnum
++syn keyword juliaConstC SMBgembEnum
++syn keyword juliaConstC SMBgradientsEnum
++syn keyword juliaConstC SMBgradientscomponentsEnum
++syn keyword juliaConstC SMBgradientselaEnum
++syn keyword juliaConstC SMBhenningEnum
++syn keyword juliaConstC SMBmeltcomponentsEnum
++syn keyword juliaConstC SMBpddEnum
++syn keyword juliaConstC SMBpddSicopolisEnum
++syn keyword juliaConstC SMBsemicEnum
++syn keyword juliaConstC SSAApproximationEnum
++syn keyword juliaConstC SSAFSApproximationEnum
++syn keyword juliaConstC SSAHOApproximationEnum
++syn keyword juliaConstC ScaledEnum
++syn keyword juliaConstC SealevelAbsoluteEnum
++syn keyword juliaConstC SealevelEmotionEnum
++syn keyword juliaConstC SealevelchangePolarMotionXEnum
++syn keyword juliaConstC SealevelchangePolarMotionYEnum
++syn keyword juliaConstC SealevelchangePolarMotionZEnum
++syn keyword juliaConstC SealevelchangePolarMotionEnum
++syn keyword juliaConstC SealevelNmotionEnum
++syn keyword juliaConstC SealevelUmotionEnum
++syn keyword juliaConstC SealevelchangeAnalysisEnum
++syn keyword juliaConstC SegEnum
++syn keyword juliaConstC SegInputEnum
++syn keyword juliaConstC SegmentEnum
++syn keyword juliaConstC SegmentRiftfrontEnum
++syn keyword juliaConstC SeparateEnum
++syn keyword juliaConstC SeqEnum
++syn keyword juliaConstC SmbAnalysisEnum
++syn keyword juliaConstC SmbSolutionEnum
++syn keyword juliaConstC SmoothAnalysisEnum
++syn keyword juliaConstC SoftMigrationEnum
++syn keyword juliaConstC SpatialLinearFloatingMeltRateEnum
++syn keyword juliaConstC SpcDynamicEnum
++syn keyword juliaConstC SpcStaticEnum
++syn keyword juliaConstC SpcTransientEnum
++syn keyword juliaConstC SsetEnum
++syn keyword juliaConstC StatisticsSolutionEnum
++syn keyword juliaConstC SteadystateSolutionEnum
++syn keyword juliaConstC StressIntensityFactorEnum
++syn keyword juliaConstC StressbalanceAnalysisEnum
++syn keyword juliaConstC StressbalanceConvergenceNumStepsEnum
++syn keyword juliaConstC StressbalanceSIAAnalysisEnum
++syn keyword juliaConstC StressbalanceSolutionEnum
++syn keyword juliaConstC StressbalanceVerticalAnalysisEnum
++syn keyword juliaConstC StringArrayParamEnum
++syn keyword juliaConstC StringExternalResultEnum
++syn keyword juliaConstC StringParamEnum
++syn keyword juliaConstC SubelementFriction1Enum
++syn keyword juliaConstC SubelementFriction2Enum
++syn keyword juliaConstC SubelementMelt1Enum
++syn keyword juliaConstC SubelementMelt2Enum
++syn keyword juliaConstC SubelementMigrationEnum
++syn keyword juliaConstC SurfaceSlopeSolutionEnum
++syn keyword juliaConstC TaylorHoodEnum
++syn keyword juliaConstC TetraEnum
++syn keyword juliaConstC TetraInputEnum
++syn keyword juliaConstC ThermalAnalysisEnum
++syn keyword juliaConstC ThermalSolutionEnum
++syn keyword juliaConstC ThicknessErrorEstimatorEnum
++syn keyword juliaConstC TotalCalvingFluxLevelsetEnum
++syn keyword juliaConstC TotalCalvingMeltingFluxLevelsetEnum
++syn keyword juliaConstC TotalFloatingBmbEnum
++syn keyword juliaConstC TotalFloatingBmbScaledEnum
++syn keyword juliaConstC TotalGroundedBmbEnum
++syn keyword juliaConstC TotalGroundedBmbScaledEnum
++syn keyword juliaConstC TotalSmbEnum
++syn keyword juliaConstC TotalSmbScaledEnum
++syn keyword juliaConstC TransientArrayParamEnum
++syn keyword juliaConstC TransientInputEnum
++syn keyword juliaConstC TransientParamEnum
++syn keyword juliaConstC TransientSolutionEnum
++syn keyword juliaConstC TriaEnum
++syn keyword juliaConstC TriaInputEnum
++syn keyword juliaConstC UzawaPressureAnalysisEnum
++syn keyword juliaConstC VectorParamEnum
++syn keyword juliaConstC VertexEnum
++syn keyword juliaConstC VertexLIdEnum
++syn keyword juliaConstC VertexPIdEnum
++syn keyword juliaConstC VertexSIdEnum
++syn keyword juliaConstC VerticesEnum
++syn keyword juliaConstC ViscousHeatingEnum
++syn keyword juliaConstC WaterEnum
++syn keyword juliaConstC XTaylorHoodEnum
++syn keyword juliaConstC XYEnum
++syn keyword juliaConstC XYZEnum
++syn keyword juliaConstC BalancethicknessD0Enum
++syn keyword juliaConstC BalancethicknessDiffusionCoefficientEnum
++syn keyword juliaConstC BilinearInterpEnum
++syn keyword juliaConstC CalvingdevCoeffEnum
++syn keyword juliaConstC DeviatoricStressEnum
++syn keyword juliaConstC EtaAbsGradientEnum
++syn keyword juliaConstC MeshZEnum
++syn keyword juliaConstC NearestInterpEnum
++syn keyword juliaConstC OutputdefinitionListEnum
++syn keyword juliaConstC SealevelObsEnum
++syn keyword juliaConstC SealevelWeightsEnum
++syn keyword juliaConstC StrainRateEnum
++syn keyword juliaConstC StressTensorEnum
++syn keyword juliaConstC StressbalanceViscosityOvershootEnum
++syn keyword juliaConstC SubelementMigration4Enum
++syn keyword juliaConstC TimesteppingTimeAdaptEnum
++syn keyword juliaConstC TriangleInterpEnum
++syn keyword juliaConstC MaximumNumberOfDefinitionsEnum
++"ISSM Enums end
++syn keyword juliaConstC ParametersSTARTEnum
++syn keyword juliaConstC AdolcParamEnum
++syn keyword juliaConstC AmrDeviatoricErrorGroupThresholdEnum
++syn keyword juliaConstC AmrDeviatoricErrorMaximumEnum
++syn keyword juliaConstC AmrDeviatoricErrorResolutionEnum
++syn keyword juliaConstC AmrDeviatoricErrorThresholdEnum
++syn keyword juliaConstC AmrErrEnum
++syn keyword juliaConstC AmrFieldEnum
++syn keyword juliaConstC AmrGradationEnum
++syn keyword juliaConstC AmrGroundingLineDistanceEnum
++syn keyword juliaConstC AmrGroundingLineResolutionEnum
++syn keyword juliaConstC AmrHmaxEnum
++syn keyword juliaConstC AmrHminEnum
++syn keyword juliaConstC AmrIceFrontDistanceEnum
++syn keyword juliaConstC AmrIceFrontResolutionEnum
++syn keyword juliaConstC AmrKeepMetricEnum
++syn keyword juliaConstC AmrLagEnum
++syn keyword juliaConstC AmrLevelMaxEnum
++syn keyword juliaConstC AmrRestartEnum
++syn keyword juliaConstC AmrThicknessErrorGroupThresholdEnum
++syn keyword juliaConstC AmrThicknessErrorMaximumEnum
++syn keyword juliaConstC AmrThicknessErrorResolutionEnum
++syn keyword juliaConstC AmrThicknessErrorThresholdEnum
++syn keyword juliaConstC AmrTypeEnum
++syn keyword juliaConstC AnalysisCounterEnum
++syn keyword juliaConstC AnalysisTypeEnum
++syn keyword juliaConstC AugmentedLagrangianREnum
++syn keyword juliaConstC AugmentedLagrangianRholambdaEnum
++syn keyword juliaConstC AugmentedLagrangianRhopEnum
++syn keyword juliaConstC AugmentedLagrangianRlambdaEnum
++syn keyword juliaConstC AugmentedLagrangianThetaEnum
++syn keyword juliaConstC AutodiffCbufsizeEnum
++syn keyword juliaConstC AutodiffDependentObjectsEnum
++syn keyword juliaConstC AutodiffDriverEnum
++syn keyword juliaConstC AutodiffFosForwardIndexEnum
++syn keyword juliaConstC AutodiffFosReverseIndexEnum
++syn keyword juliaConstC AutodiffFovForwardIndicesEnum
++syn keyword juliaConstC AutodiffGcTriggerMaxSizeEnum
++syn keyword juliaConstC AutodiffGcTriggerRatioEnum
++syn keyword juliaConstC AutodiffIsautodiffEnum
++syn keyword juliaConstC AutodiffLbufsizeEnum
++syn keyword juliaConstC AutodiffNumDependentsEnum
++syn keyword juliaConstC AutodiffNumIndependentsEnum
++syn keyword juliaConstC AutodiffObufsizeEnum
++syn keyword juliaConstC AutodiffTapeAllocEnum
++syn keyword juliaConstC AutodiffTbufsizeEnum
++syn keyword juliaConstC AutodiffXpEnum
++syn keyword juliaConstC BalancethicknessStabilizationEnum
++syn keyword juliaConstC BarystaticContributionsEnum
++syn keyword juliaConstC BasalforcingsAutoregressionInitialTimeEnum
++syn keyword juliaConstC BasalforcingsAutoregressionTimestepEnum
++syn keyword juliaConstC BasalforcingsAutoregressiveOrderEnum
++syn keyword juliaConstC BasalforcingsBeta0Enum
++syn keyword juliaConstC BasalforcingsBeta1Enum
++syn keyword juliaConstC BasalforcingsBottomplumedepthEnum
++syn keyword juliaConstC BasalforcingsCrustthicknessEnum
++syn keyword juliaConstC BasalforcingsDeepwaterElevationEnum
++syn keyword juliaConstC BasalforcingsDeepwaterMeltingRateEnum
++syn keyword juliaConstC BasalforcingsDtbgEnum
++syn keyword juliaConstC BasalforcingsEnum
++syn keyword juliaConstC BasalforcingsIsmip6AverageTfEnum
++syn keyword juliaConstC BasalforcingsIsmip6BasinAreaEnum
++syn keyword juliaConstC BasalforcingsIsmip6DeltaTEnum
++syn keyword juliaConstC BasalforcingsIsmip6Gamma0Enum
++syn keyword juliaConstC BasalforcingsIsmip6IsLocalEnum
++syn keyword juliaConstC BasalforcingsIsmip6NumBasinsEnum
++syn keyword juliaConstC BasalforcingsIsmip6TfDepthsEnum
++syn keyword juliaConstC BasalforcingsLinearNumBasinsEnum
++syn keyword juliaConstC BasalforcingsLowercrustheatEnum
++syn keyword juliaConstC BasalforcingsMantleconductivityEnum
++syn keyword juliaConstC BasalforcingsNusseltEnum
++syn keyword juliaConstC BasalforcingsPhiEnum
++syn keyword juliaConstC BasalforcingsPicoAverageOverturningEnum
++syn keyword juliaConstC BasalforcingsPicoAverageSalinityEnum
++syn keyword juliaConstC BasalforcingsPicoAverageTemperatureEnum
++syn keyword juliaConstC BasalforcingsPicoBoxAreaEnum
++syn keyword juliaConstC BasalforcingsPicoFarOceansalinityEnum
++syn keyword juliaConstC BasalforcingsPicoFarOceantemperatureEnum
++syn keyword juliaConstC BasalforcingsPicoGammaTEnum
++syn keyword juliaConstC BasalforcingsPicoIsplumeEnum
++syn keyword juliaConstC BasalforcingsPicoMaxboxcountEnum
++syn keyword juliaConstC BasalforcingsPicoNumBasinsEnum
++syn keyword juliaConstC BasalforcingsPlumeradiusEnum
++syn keyword juliaConstC BasalforcingsPlumexEnum
++syn keyword juliaConstC BasalforcingsPlumeyEnum
++syn keyword juliaConstC BasalforcingsThresholdThicknessEnum
++syn keyword juliaConstC BasalforcingsTopplumedepthEnum
++syn keyword juliaConstC BasalforcingsUppercrustheatEnum
++syn keyword juliaConstC BasalforcingsUppercrustthicknessEnum
++syn keyword juliaConstC BasalforcingsUpperdepthMeltEnum
++syn keyword juliaConstC BasalforcingsUpperwaterElevationEnum
++syn keyword juliaConstC BasalforcingsUpperwaterMeltingRateEnum
++syn keyword juliaConstC CalvingCrevasseDepthEnum
++syn keyword juliaConstC CalvingCrevasseThresholdEnum
++syn keyword juliaConstC CalvingHeightAboveFloatationEnum
++syn keyword juliaConstC CalvingLawEnum
++syn keyword juliaConstC CalvingMinthicknessEnum
++syn keyword juliaConstC CalvingTestSpeedfactorEnum
++syn keyword juliaConstC CalvingTestIndependentRateEnum
++syn keyword juliaConstC CalvingUseParamEnum
++syn keyword juliaConstC CalvingThetaEnum
++syn keyword juliaConstC CalvingAlphaEnum
++syn keyword juliaConstC CalvingXoffsetEnum
++syn keyword juliaConstC CalvingYoffsetEnum
++syn keyword juliaConstC ConfigurationTypeEnum
++syn keyword juliaConstC ConstantsGEnum
++syn keyword juliaConstC ConstantsNewtonGravityEnum
++syn keyword juliaConstC ConstantsReferencetemperatureEnum
++syn keyword juliaConstC ConstantsYtsEnum
++syn keyword juliaConstC ControlInputSizeMEnum
++syn keyword juliaConstC ControlInputSizeNEnum
++syn keyword juliaConstC ControlInputInterpolationEnum
++syn keyword juliaConstC CumBslcEnum
++syn keyword juliaConstC CumBslcIceEnum
++syn keyword juliaConstC CumBslcHydroEnum
++syn keyword juliaConstC CumBslcOceanEnum
++syn keyword juliaConstC CumBslcIcePartitionEnum
++syn keyword juliaConstC CumBslcHydroPartitionEnum
++syn keyword juliaConstC CumBslcOceanPartitionEnum
++syn keyword juliaConstC CumGmtslcEnum
++syn keyword juliaConstC CumGmslcEnum
++syn keyword juliaConstC DamageC1Enum
++syn keyword juliaConstC DamageC2Enum
++syn keyword juliaConstC DamageC3Enum
++syn keyword juliaConstC DamageC4Enum
++syn keyword juliaConstC DamageEnum
++syn keyword juliaConstC DamageEquivStressEnum
++syn keyword juliaConstC DamageEvolutionNumRequestedOutputsEnum
++syn keyword juliaConstC DamageEvolutionRequestedOutputsEnum
++syn keyword juliaConstC DamageHealingEnum
++syn keyword juliaConstC DamageKappaEnum
++syn keyword juliaConstC DamageLawEnum
++syn keyword juliaConstC DamageMaxDamageEnum
++syn keyword juliaConstC DamageStabilizationEnum
++syn keyword juliaConstC DamageStressThresholdEnum
++syn keyword juliaConstC DamageStressUBoundEnum
++syn keyword juliaConstC DebugProfilingEnum
++syn keyword juliaConstC DomainDimensionEnum
++syn keyword juliaConstC DomainTypeEnum
++syn keyword juliaConstC DslModelEnum
++syn keyword juliaConstC DslModelidEnum
++syn keyword juliaConstC DslNummodelsEnum
++syn keyword juliaConstC SolidearthIsExternalEnum
++syn keyword juliaConstC SolidearthExternalNatureEnum
++syn keyword juliaConstC SolidearthExternalModelidEnum
++syn keyword juliaConstC SolidearthExternalNummodelsEnum
++syn keyword juliaConstC SolidearthSettingsComputeBpGrdEnum
++syn keyword juliaConstC EarthIdEnum
++syn keyword juliaConstC ElasticEnum
++syn keyword juliaConstC EplZigZagCounterEnum
++syn keyword juliaConstC EsaHElasticEnum
++syn keyword juliaConstC EsaHemisphereEnum
++syn keyword juliaConstC EsaRequestedOutputsEnum
++syn keyword juliaConstC EsaUElasticEnum
++syn keyword juliaConstC ExtrapolationVariableEnum
++syn keyword juliaConstC FemModelCommEnum
++syn keyword juliaConstC FieldsEnum
++syn keyword juliaConstC FlowequationFeFSEnum
++syn keyword juliaConstC FlowequationIsFSEnum
++syn keyword juliaConstC FlowequationIsHOEnum
++syn keyword juliaConstC FlowequationIsL1L2Enum
++syn keyword juliaConstC FlowequationIsMOLHOEnum
++syn keyword juliaConstC FlowequationIsSIAEnum
++syn keyword juliaConstC FlowequationIsSSAEnum
++syn keyword juliaConstC FlowequationIsNitscheEnum
++syn keyword juliaConstC FeFSNitscheGammaEnum
++syn keyword juliaConstC FrictionCouplingEnum
++syn keyword juliaConstC FrictionDeltaEnum
++syn keyword juliaConstC FrictionEffectivePressureLimitEnum
++syn keyword juliaConstC FrictionFEnum
++syn keyword juliaConstC FrictionGammaEnum
++syn keyword juliaConstC FrictionLawEnum
++syn keyword juliaConstC FrictionPseudoplasticityExponentEnum
++syn keyword juliaConstC FrictionThresholdSpeedEnum
++syn keyword juliaConstC FrictionVoidRatioEnum
++syn keyword juliaConstC FrontalForcingsBasinIcefrontAreaEnum
++syn keyword juliaConstC FrontalForcingsAutoregressionInitialTimeEnum
++syn keyword juliaConstC FrontalForcingsAutoregressionTimestepEnum
++syn keyword juliaConstC FrontalForcingsAutoregressiveOrderEnum
++syn keyword juliaConstC FrontalForcingsBeta0Enum
++syn keyword juliaConstC FrontalForcingsBeta1Enum
++syn keyword juliaConstC FrontalForcingsNumberofBasinsEnum
++syn keyword juliaConstC FrontalForcingsParamEnum
++syn keyword juliaConstC FrontalForcingsPhiEnum
++syn keyword juliaConstC GrdModelEnum
++syn keyword juliaConstC GroundinglineFrictionInterpolationEnum
++syn keyword juliaConstC GroundinglineMeltInterpolationEnum
++syn keyword juliaConstC GroundinglineMigrationEnum
++syn keyword juliaConstC GroundinglineNumRequestedOutputsEnum
++syn keyword juliaConstC GroundinglineRequestedOutputsEnum
++syn keyword juliaConstC HydrologyAveragingEnum
++syn keyword juliaConstC HydrologyCavitySpacingEnum
++syn keyword juliaConstC HydrologyChannelConductivityEnum
++syn keyword juliaConstC HydrologyChannelSheetWidthEnum
++syn keyword juliaConstC HydrologyEnglacialVoidRatioEnum
++syn keyword juliaConstC HydrologyIschannelsEnum
++syn keyword juliaConstC HydrologyMeltFlagEnum
++syn keyword juliaConstC HydrologyModelEnum
++syn keyword juliaConstC HydrologyNumRequestedOutputsEnum
++syn keyword juliaConstC HydrologyPressureMeltCoefficientEnum
++syn keyword juliaConstC HydrologyRelaxationEnum
++syn keyword juliaConstC HydrologyRequestedOutputsEnum
++syn keyword juliaConstC HydrologySedimentKmaxEnum
++syn keyword juliaConstC HydrologyStepsPerStepEnum
++syn keyword juliaConstC HydrologyStorageEnum
++syn keyword juliaConstC HydrologydcEplColapseThicknessEnum
++syn keyword juliaConstC HydrologydcEplConductivityEnum
++syn keyword juliaConstC HydrologydcEplInitialThicknessEnum
++syn keyword juliaConstC HydrologydcEplLayerCompressibilityEnum
++syn keyword juliaConstC HydrologydcEplMaxThicknessEnum
++syn keyword juliaConstC HydrologydcEplPoreWaterMassEnum
++syn keyword juliaConstC HydrologydcEplThickCompEnum
++syn keyword juliaConstC HydrologydcEplflipLockEnum
++syn keyword juliaConstC HydrologydcIsefficientlayerEnum
++syn keyword juliaConstC HydrologydcLeakageFactorEnum
++syn keyword juliaConstC HydrologydcMaxIterEnum
++syn keyword juliaConstC HydrologydcPenaltyFactorEnum
++syn keyword juliaConstC HydrologydcPenaltyLockEnum
++syn keyword juliaConstC HydrologydcRelTolEnum
++syn keyword juliaConstC HydrologydcSedimentlimitEnum
++syn keyword juliaConstC HydrologydcSedimentlimitFlagEnum
++syn keyword juliaConstC HydrologydcSedimentLayerCompressibilityEnum
++syn keyword juliaConstC HydrologydcSedimentPoreWaterMassEnum
++syn keyword juliaConstC HydrologydcSedimentPorosityEnum
++syn keyword juliaConstC HydrologydcSedimentThicknessEnum
++syn keyword juliaConstC HydrologyStepAdaptEnum
++syn keyword juliaConstC HydrologydcTransferFlagEnum
++syn keyword juliaConstC HydrologydcUnconfinedFlagEnum
++syn keyword juliaConstC HydrologyshreveStabilizationEnum
++syn keyword juliaConstC IcecapToEarthCommEnum
++syn keyword juliaConstC IndexEnum
++syn keyword juliaConstC InputFileNameEnum
++syn keyword juliaConstC DirectoryNameEnum
++syn keyword juliaConstC IndicesEnum
++syn keyword juliaConstC InputToDepthaverageInEnum
++syn keyword juliaConstC InputToDepthaverageOutEnum
++syn keyword juliaConstC InputToExtrudeEnum
++syn keyword juliaConstC InputToL2ProjectEnum
++syn keyword juliaConstC InputToSmoothEnum
++syn keyword juliaConstC InversionAlgorithmEnum
++syn keyword juliaConstC InversionControlParametersEnum
++syn keyword juliaConstC InversionControlScalingFactorsEnum
++syn keyword juliaConstC InversionCostFunctionsEnum
++syn keyword juliaConstC InversionDxminEnum
++syn keyword juliaConstC InversionGatolEnum
++syn keyword juliaConstC InversionGradientScalingEnum
++syn keyword juliaConstC InversionGrtolEnum
++syn keyword juliaConstC InversionGttolEnum
++syn keyword juliaConstC InversionIncompleteAdjointEnum
++syn keyword juliaConstC InversionIscontrolEnum
++syn keyword juliaConstC InversionMaxiterEnum
++syn keyword juliaConstC InversionMaxiterPerStepEnum
++syn keyword juliaConstC InversionMaxstepsEnum
++syn keyword juliaConstC InversionNstepsEnum
++syn keyword juliaConstC InversionNumControlParametersEnum
++syn keyword juliaConstC InversionNumCostFunctionsEnum
++syn keyword juliaConstC InversionStepThresholdEnum
++syn keyword juliaConstC InversionTypeEnum
++syn keyword juliaConstC IvinsEnum
++syn keyword juliaConstC IsSlcCouplingEnum
++syn keyword juliaConstC LevelsetKillIcebergsEnum
++syn keyword juliaConstC LevelsetReinitFrequencyEnum
++syn keyword juliaConstC LevelsetStabilizationEnum
++syn keyword juliaConstC LockFileNameEnum
++syn keyword juliaConstC LoveAllowLayerDeletionEnum
++syn keyword juliaConstC LoveChandlerWobbleEnum
++syn keyword juliaConstC LoveCoreMantleBoundaryEnum
++syn keyword juliaConstC LoveEarthMassEnum
++syn keyword juliaConstC LoveForcingTypeEnum
++syn keyword juliaConstC LoveFrequenciesEnum
++syn keyword juliaConstC LoveIsTemporalEnum
++syn keyword juliaConstC LoveG0Enum
++syn keyword juliaConstC LoveGravitationalConstantEnum
++syn keyword juliaConstC LoveInnerCoreBoundaryEnum
++syn keyword juliaConstC LoveComplexComputationEnum
++syn keyword juliaConstC LoveQuadPrecisionEnum
++syn keyword juliaConstC LoveIntStepsPerLayerEnum
++syn keyword juliaConstC LoveMinIntegrationStepsEnum
++syn keyword juliaConstC LoveMaxIntegrationdrEnum
++syn keyword juliaConstC LoveKernelsEnum
++syn keyword juliaConstC LoveMu0Enum
++syn keyword juliaConstC LoveNfreqEnum
++syn keyword juliaConstC LoveNTemporalIterationsEnum
++syn keyword juliaConstC LoveNYiEquationsEnum
++syn keyword juliaConstC LoveR0Enum
++syn keyword juliaConstC LoveShNmaxEnum
++syn keyword juliaConstC LoveShNminEnum
++syn keyword juliaConstC LoveStartingLayerEnum
++syn keyword juliaConstC LoveUnderflowTolEnum
++syn keyword juliaConstC LovePostWidderThresholdEnum
++syn keyword juliaConstC LoveDebugEnum
++syn keyword juliaConstC LoveHypergeomNZEnum
++syn keyword juliaConstC LoveHypergeomNAlphaEnum
++syn keyword juliaConstC MassFluxSegmentsEnum
++syn keyword juliaConstC MassFluxSegmentsPresentEnum
++syn keyword juliaConstC MasstransportHydrostaticAdjustmentEnum
++syn keyword juliaConstC MasstransportIsfreesurfaceEnum
++syn keyword juliaConstC MasstransportMinThicknessEnum
++syn keyword juliaConstC MasstransportNumRequestedOutputsEnum
++syn keyword juliaConstC MasstransportPenaltyFactorEnum
++syn keyword juliaConstC MasstransportRequestedOutputsEnum
++syn keyword juliaConstC MasstransportStabilizationEnum
++syn keyword juliaConstC MaterialsBetaEnum
++syn keyword juliaConstC MaterialsEarthDensityEnum
++syn keyword juliaConstC MaterialsEffectiveconductivityAveragingEnum
++syn keyword juliaConstC MaterialsHeatcapacityEnum
++syn keyword juliaConstC MaterialsLatentheatEnum
++syn keyword juliaConstC MaterialsMeltingpointEnum
++syn keyword juliaConstC MaterialsMixedLayerCapacityEnum
++syn keyword juliaConstC MaterialsMuWaterEnum
++syn keyword juliaConstC MaterialsRheologyLawEnum
++syn keyword juliaConstC MaterialsRhoFreshwaterEnum
++syn keyword juliaConstC MaterialsRhoIceEnum
++syn keyword juliaConstC MaterialsRhoSeawaterEnum
++syn keyword juliaConstC MaterialsTemperateiceconductivityEnum
++syn keyword juliaConstC MaterialsThermalExchangeVelocityEnum
++syn keyword juliaConstC MaterialsThermalconductivityEnum
++syn keyword juliaConstC MeltingOffsetEnum
++syn keyword juliaConstC MeshAverageVertexConnectivityEnum
++syn keyword juliaConstC MeshElementtypeEnum
++syn keyword juliaConstC MeshNumberoflayersEnum
++syn keyword juliaConstC MeshNumberofverticesEnum
++syn keyword juliaConstC MeshNumberofelementsEnum
++syn keyword juliaConstC MigrationMaxEnum
++syn keyword juliaConstC ModelIdEnum
++syn keyword juliaConstC NbinsEnum
++syn keyword juliaConstC NodesEnum
++syn keyword juliaConstC NumModelsEnum
++syn keyword juliaConstC OceanGridNxEnum
++syn keyword juliaConstC OceanGridNyEnum
++syn keyword juliaConstC OceanGridXEnum
++syn keyword juliaConstC OceanGridYEnum
++syn keyword juliaConstC OutputBufferPointerEnum
++syn keyword juliaConstC OutputBufferSizePointerEnum
++syn keyword juliaConstC OutputFileNameEnum
++syn keyword juliaConstC OutputFilePointerEnum
++syn keyword juliaConstC OutputdefinitionEnum
++syn keyword juliaConstC QmuErrNameEnum
++syn keyword juliaConstC QmuInNameEnum
++syn keyword juliaConstC QmuIsdakotaEnum
++syn keyword juliaConstC QmuOutNameEnum
++syn keyword juliaConstC QmuOutputEnum
++syn keyword juliaConstC QmuCurrEvalIdEnum
++syn keyword juliaConstC QmuNsampleEnum
++syn keyword juliaConstC QmuResponsedescriptorsEnum
++syn keyword juliaConstC QmuVariableDescriptorsEnum
++syn keyword juliaConstC QmuVariablePartitionsEnum
++syn keyword juliaConstC QmuVariablePartitionsNpartEnum
++syn keyword juliaConstC QmuVariablePartitionsNtEnum
++syn keyword juliaConstC QmuResponsePartitionsEnum
++syn keyword juliaConstC QmuResponsePartitionsNpartEnum
++syn keyword juliaConstC QmuStatisticsEnum
++syn keyword juliaConstC QmuNumstatisticsEnum
++syn keyword juliaConstC QmuNdirectoriesEnum
++syn keyword juliaConstC QmuNfilesPerDirectoryEnum
++syn keyword juliaConstC QmuStatisticsMethodEnum
++syn keyword juliaConstC QmuMethodsEnum
++syn keyword juliaConstC RestartFileNameEnum
++syn keyword juliaConstC ResultsEnum
++syn keyword juliaConstC RootPathEnum
++syn keyword juliaConstC ModelnameEnum
++syn keyword juliaConstC SamplingAlphaEnum
++syn keyword juliaConstC SamplingNumRequestedOutputsEnum
++syn keyword juliaConstC SamplingRequestedOutputsEnum
++syn keyword juliaConstC SamplingRobinEnum
++syn keyword juliaConstC SamplingSeedEnum
++syn keyword juliaConstC SaveResultsEnum
++syn keyword juliaConstC SolidearthPartitionIceEnum
++syn keyword juliaConstC SolidearthPartitionHydroEnum
++syn keyword juliaConstC SolidearthPartitionOceanEnum
++syn keyword juliaConstC SolidearthNpartIceEnum
++syn keyword juliaConstC SolidearthNpartOceanEnum
++syn keyword juliaConstC SolidearthNpartHydroEnum
++syn keyword juliaConstC SolidearthPlanetRadiusEnum
++syn keyword juliaConstC SolidearthPlanetAreaEnum
++syn keyword juliaConstC SolidearthSettingsAbstolEnum
++syn keyword juliaConstC SolidearthSettingsCrossSectionShapeEnum
++syn keyword juliaConstC SolidearthSettingsElasticEnum
++syn keyword juliaConstC SolidearthSettingsViscousEnum
++syn keyword juliaConstC SolidearthSettingsSatelliteGraviEnum
++syn keyword juliaConstC SolidearthSettingsDegreeAccuracyEnum
++syn keyword juliaConstC SealevelchangeGeometryDoneEnum
++syn keyword juliaConstC SealevelchangeViscousNumStepsEnum
++syn keyword juliaConstC SealevelchangeViscousTimesEnum
++syn keyword juliaConstC SealevelchangeViscousIndexEnum
++syn keyword juliaConstC SealevelchangeViscousPolarMotionEnum
++syn keyword juliaConstC SealevelchangeRunCountEnum
++syn keyword juliaConstC SealevelchangeTransitionsEnum
++syn keyword juliaConstC SealevelchangeRequestedOutputsEnum
++syn keyword juliaConstC RotationalAngularVelocityEnum
++syn keyword juliaConstC RotationalEquatorialMoiEnum
++syn keyword juliaConstC RotationalPolarMoiEnum
++syn keyword juliaConstC LovePolarMotionTransferFunctionColinearEnum
++syn keyword juliaConstC LovePolarMotionTransferFunctionOrthogonalEnum
++syn keyword juliaConstC TidalLoveHEnum
++syn keyword juliaConstC TidalLoveKEnum
++syn keyword juliaConstC TidalLoveLEnum
++syn keyword juliaConstC TidalLoveK2SecularEnum
++syn keyword juliaConstC LoadLoveHEnum
++syn keyword juliaConstC LoadLoveKEnum
++syn keyword juliaConstC LoadLoveLEnum
++syn keyword juliaConstC LoveTimeFreqEnum
++syn keyword juliaConstC LoveIsTimeEnum
++syn keyword juliaConstC LoveHypergeomZEnum
++syn keyword juliaConstC LoveHypergeomTable1Enum
++syn keyword juliaConstC LoveHypergeomTable2Enum
++syn keyword juliaConstC SealevelchangeGSelfAttractionEnum
++syn keyword juliaConstC SealevelchangeGViscoElasticEnum
++syn keyword juliaConstC SealevelchangeUViscoElasticEnum
++syn keyword juliaConstC SealevelchangeHViscoElasticEnum
++syn keyword juliaConstC SealevelchangePolarMotionTransferFunctionColinearEnum
++syn keyword juliaConstC SealevelchangePolarMotionTransferFunctionOrthogonalEnum
++syn keyword juliaConstC SealevelchangePolarMotionTransferFunctionZEnum
++syn keyword juliaConstC SealevelchangeTidalK2Enum
++syn keyword juliaConstC SealevelchangeTidalH2Enum
++syn keyword juliaConstC SealevelchangeTidalL2Enum
++syn keyword juliaConstC SolidearthSettingsSealevelLoadingEnum
++syn keyword juliaConstC SolidearthSettingsGRDEnum
++syn keyword juliaConstC SolidearthSettingsRunFrequencyEnum
++syn keyword juliaConstC SolidearthSettingsTimeAccEnum
++syn keyword juliaConstC SolidearthSettingsHorizEnum
++syn keyword juliaConstC SolidearthSettingsMaxiterEnum
++syn keyword juliaConstC SolidearthSettingsGrdOceanEnum
++syn keyword juliaConstC SolidearthSettingsOceanAreaScalingEnum
++syn keyword juliaConstC StochasticForcingCovarianceEnum
++syn keyword juliaConstC StochasticForcingDefaultDimensionEnum
++syn keyword juliaConstC StochasticForcingDimensionsEnum
++syn keyword juliaConstC StochasticForcingFieldsEnum
++syn keyword juliaConstC StochasticForcingIsEffectivePressureEnum
++syn keyword juliaConstC StochasticForcingIsStochasticForcingEnum
++syn keyword juliaConstC StochasticForcingIsWaterPressureEnum
++syn keyword juliaConstC StochasticForcingNoisetermsEnum
++syn keyword juliaConstC StochasticForcingNumFieldsEnum
++syn keyword juliaConstC StochasticForcingRandomflagEnum
++syn keyword juliaConstC StochasticForcingTimestepEnum
++syn keyword juliaConstC SolidearthSettingsReltolEnum
++syn keyword juliaConstC SolidearthSettingsSelfAttractionEnum
++syn keyword juliaConstC SolidearthSettingsRotationEnum
++syn keyword juliaConstC SolidearthSettingsMaxSHCoeffEnum
++syn keyword juliaConstC SettingsIoGatherEnum
++syn keyword juliaConstC SettingsNumResultsOnNodesEnum
++syn keyword juliaConstC SettingsOutputFrequencyEnum
++syn keyword juliaConstC SettingsCheckpointFrequencyEnum
++syn keyword juliaConstC SettingsResultsOnNodesEnum
++syn keyword juliaConstC SettingsSbCouplingFrequencyEnum
++syn keyword juliaConstC SettingsSolverResidueThresholdEnum
++syn keyword juliaConstC SettingsWaitonlockEnum
++syn keyword juliaConstC SmbAIceEnum
++syn keyword juliaConstC SmbAIdxEnum
++syn keyword juliaConstC SmbASnowEnum
++syn keyword juliaConstC SmbAccualtiEnum
++syn keyword juliaConstC SmbAccugradEnum
++syn keyword juliaConstC SmbAccurefEnum
++syn keyword juliaConstC SmbAdThreshEnum
++syn keyword juliaConstC SmbAutoregressionInitialTimeEnum
++syn keyword juliaConstC SmbAutoregressionTimestepEnum
++syn keyword juliaConstC SmbAutoregressiveOrderEnum
++syn keyword juliaConstC SmbAveragingEnum
++syn keyword juliaConstC SmbBeta0Enum
++syn keyword juliaConstC SmbBeta1Enum
++syn keyword juliaConstC SmbDesfacEnum
++syn keyword juliaConstC SmbDpermilEnum
++syn keyword juliaConstC SmbDsnowIdxEnum
++syn keyword juliaConstC SmbElevationBinsEnum
++syn keyword juliaConstC SmbCldFracEnum
++syn keyword juliaConstC SmbDelta18oEnum
++syn keyword juliaConstC SmbDelta18oSurfaceEnum
++syn keyword juliaConstC SmbDenIdxEnum
++syn keyword juliaConstC SmbDtEnum
++syn keyword juliaConstC SmbEnum
++syn keyword juliaConstC SmbEIdxEnum
++syn keyword juliaConstC SmbFEnum
++syn keyword juliaConstC SmbInitDensityScalingEnum
++syn keyword juliaConstC SmbIsaccumulationEnum
++syn keyword juliaConstC SmbIsalbedoEnum
++syn keyword juliaConstC SmbIsconstrainsurfaceTEnum
++syn keyword juliaConstC SmbIsd18opdEnum
++syn keyword juliaConstC SmbIsdelta18oEnum
++syn keyword juliaConstC SmbIsdensificationEnum
++syn keyword juliaConstC SmbIsdeltaLWupEnum
++syn keyword juliaConstC SmbIsfirnwarmingEnum
++syn keyword juliaConstC SmbIsgraingrowthEnum
++syn keyword juliaConstC SmbIsmeltEnum
++syn keyword juliaConstC SmbIsmungsmEnum
++syn keyword juliaConstC SmbIsprecipscaledEnum
++syn keyword juliaConstC SmbIssetpddfacEnum
++syn keyword juliaConstC SmbIsshortwaveEnum
++syn keyword juliaConstC SmbIstemperaturescaledEnum
++syn keyword juliaConstC SmbIsthermalEnum
++syn keyword juliaConstC SmbIsturbulentfluxEnum
++syn keyword juliaConstC SmbKEnum
++syn keyword juliaConstC SmbLapseRatesEnum
++syn keyword juliaConstC SmbNumBasinsEnum
++syn keyword juliaConstC SmbNumElevationBinsEnum
++syn keyword juliaConstC SmbNumRequestedOutputsEnum
++syn keyword juliaConstC SmbPfacEnum
++syn keyword juliaConstC SmbPhiEnum
++syn keyword juliaConstC SmbRdlEnum
++syn keyword juliaConstC SmbRefElevationEnum
++syn keyword juliaConstC SmbRequestedOutputsEnum
++syn keyword juliaConstC SmbRlapsEnum
++syn keyword juliaConstC SmbRlapslgmEnum
++syn keyword juliaConstC SmbRunoffaltiEnum
++syn keyword juliaConstC SmbRunoffgradEnum
++syn keyword juliaConstC SmbRunoffrefEnum
++syn keyword juliaConstC SmbSealevEnum
++syn keyword juliaConstC SmbStepsPerStepEnum
++syn keyword juliaConstC SmbSwIdxEnum
++syn keyword juliaConstC SmbT0dryEnum
++syn keyword juliaConstC SmbT0wetEnum
++syn keyword juliaConstC SmbTeThreshEnum
++syn keyword juliaConstC SmbTdiffEnum
++syn keyword juliaConstC SmbThermoDeltaTScalingEnum
++syn keyword juliaConstC SmbTemperaturesReconstructedYearsEnum
++syn keyword juliaConstC SmbPrecipitationsReconstructedYearsEnum
++syn keyword juliaConstC SmoothThicknessMultiplierEnum
++syn keyword juliaConstC SolutionTypeEnum
++syn keyword juliaConstC SteadystateMaxiterEnum
++syn keyword juliaConstC SteadystateNumRequestedOutputsEnum
++syn keyword juliaConstC SteadystateReltolEnum
++syn keyword juliaConstC SteadystateRequestedOutputsEnum
++syn keyword juliaConstC StepEnum
++syn keyword juliaConstC StepsEnum
++syn keyword juliaConstC StressbalanceAbstolEnum
++syn keyword juliaConstC StressbalanceFSreconditioningEnum
++syn keyword juliaConstC StressbalanceIsnewtonEnum
++syn keyword juliaConstC StressbalanceMaxiterEnum
++syn keyword juliaConstC StressbalanceNumRequestedOutputsEnum
++syn keyword juliaConstC StressbalancePenaltyFactorEnum
++syn keyword juliaConstC StressbalanceReltolEnum
++syn keyword juliaConstC StressbalanceRequestedOutputsEnum
++syn keyword juliaConstC StressbalanceRestolEnum
++syn keyword juliaConstC StressbalanceRiftPenaltyThresholdEnum
++syn keyword juliaConstC StressbalanceShelfDampeningEnum
++syn keyword juliaConstC ThermalIsdrainicecolumnEnum
++syn keyword juliaConstC ThermalIsdynamicbasalspcEnum
++syn keyword juliaConstC ThermalIsenthalpyEnum
++syn keyword juliaConstC ThermalMaxiterEnum
++syn keyword juliaConstC ThermalNumRequestedOutputsEnum
++syn keyword juliaConstC ThermalPenaltyFactorEnum
++syn keyword juliaConstC ThermalPenaltyLockEnum
++syn keyword juliaConstC ThermalPenaltyThresholdEnum
++syn keyword juliaConstC ThermalReltolEnum
++syn keyword juliaConstC ThermalRequestedOutputsEnum
++syn keyword juliaConstC ThermalStabilizationEnum
++syn keyword juliaConstC ThermalWatercolumnUpperlimitEnum
++syn keyword juliaConstC TimeEnum
++syn keyword juliaConstC TimesteppingAverageForcingEnum
++syn keyword juliaConstC TimesteppingCflCoefficientEnum
++syn keyword juliaConstC TimesteppingCouplingTimeEnum
++syn keyword juliaConstC TimesteppingFinalTimeEnum
++syn keyword juliaConstC TimesteppingInterpForcingEnum
++syn keyword juliaConstC TimesteppingCycleForcingEnum
++syn keyword juliaConstC TimesteppingStartTimeEnum
++syn keyword juliaConstC TimesteppingTimeStepEnum
++syn keyword juliaConstC TimesteppingTimeStepMaxEnum
++syn keyword juliaConstC TimesteppingTimeStepMinEnum
++syn keyword juliaConstC TimesteppingTypeEnum
++syn keyword juliaConstC ToMITgcmCommEnum
++syn keyword juliaConstC ToolkitsFileNameEnum
++syn keyword juliaConstC ToolkitsOptionsAnalysesEnum
++syn keyword juliaConstC ToolkitsOptionsStringsEnum
++syn keyword juliaConstC ToolkitsTypesEnum
++syn keyword juliaConstC TransientAmrFrequencyEnum
++syn keyword juliaConstC TransientIsdamageevolutionEnum
++syn keyword juliaConstC TransientIsesaEnum
++syn keyword juliaConstC TransientIsgiaEnum
++syn keyword juliaConstC TransientIsgroundinglineEnum
++syn keyword juliaConstC TransientIshydrologyEnum
++syn keyword juliaConstC TransientIsmasstransportEnum
++syn keyword juliaConstC TransientIsoceantransportEnum
++syn keyword juliaConstC TransientIsmovingfrontEnum
++syn keyword juliaConstC TransientIsoceancouplingEnum
++syn keyword juliaConstC TransientIssamplingEnum
++syn keyword juliaConstC TransientIsslcEnum
++syn keyword juliaConstC TransientIssmbEnum
++syn keyword juliaConstC TransientIsstressbalanceEnum
++syn keyword juliaConstC TransientIsthermalEnum
++syn keyword juliaConstC TransientNumRequestedOutputsEnum
++syn keyword juliaConstC TransientRequestedOutputsEnum
++syn keyword juliaConstC VelocityEnum
++syn keyword juliaConstC XxeEnum
++syn keyword juliaConstC YyeEnum
++syn keyword juliaConstC ZzeEnum
++syn keyword juliaConstC AreaeEnum
++syn keyword juliaConstC WorldCommEnum
++syn keyword juliaConstC ParametersENDEnum
++syn keyword juliaConstC InputsSTARTEnum
++syn keyword juliaConstC AccumulatedDeltaBottomPressureEnum
++syn keyword juliaConstC AccumulatedDeltaIceThicknessEnum
++syn keyword juliaConstC AccumulatedDeltaTwsEnum
++syn keyword juliaConstC AdjointEnum
++syn keyword juliaConstC AdjointpEnum
++syn keyword juliaConstC AdjointxEnum
++syn keyword juliaConstC AdjointxBaseEnum
++syn keyword juliaConstC AdjointxShearEnum
++syn keyword juliaConstC AdjointyEnum
++syn keyword juliaConstC AdjointyBaseEnum
++syn keyword juliaConstC AdjointyShearEnum
++syn keyword juliaConstC AdjointzEnum
++syn keyword juliaConstC AirEnum
++syn keyword juliaConstC ApproximationEnum
++syn keyword juliaConstC BalancethicknessMisfitEnum
++syn keyword juliaConstC BalancethicknessOmega0Enum
++syn keyword juliaConstC BalancethicknessOmegaEnum
++syn keyword juliaConstC BalancethicknessSpcthicknessEnum
++syn keyword juliaConstC BalancethicknessThickeningRateEnum
++syn keyword juliaConstC BasalCrevasseEnum
++syn keyword juliaConstC BasalforcingsDeepwaterMeltingRateAutoregressionEnum
++syn keyword juliaConstC BasalforcingsDeepwaterMeltingRateNoiseEnum
++syn keyword juliaConstC BasalforcingsDeepwaterMeltingRateValuesAutoregressionEnum
++syn keyword juliaConstC BasalforcingsFloatingiceMeltingRateEnum
++syn keyword juliaConstC BasalforcingsGeothermalfluxEnum
++syn keyword juliaConstC BasalforcingsGroundediceMeltingRateEnum
++syn keyword juliaConstC BasalforcingsLinearBasinIdEnum
++syn keyword juliaConstC BasalforcingsPerturbationMeltingRateEnum
++syn keyword juliaConstC BasalforcingsSpatialDeepwaterElevationEnum
++syn keyword juliaConstC BasalforcingsSpatialDeepwaterMeltingRateEnum
++syn keyword juliaConstC BasalforcingsSpatialUpperwaterElevationEnum
++syn keyword juliaConstC BasalforcingsSpatialUpperwaterMeltingRateEnum
++syn keyword juliaConstC BasalforcingsIsmip6BasinIdEnum
++syn keyword juliaConstC BasalforcingsIsmip6TfEnum
++syn keyword juliaConstC BasalforcingsIsmip6TfShelfEnum
++syn keyword juliaConstC BasalforcingsIsmip6MeltAnomalyEnum
++syn keyword juliaConstC BasalforcingsMeltrateFactorEnum
++syn keyword juliaConstC BasalforcingsOceanSalinityEnum
++syn keyword juliaConstC BasalforcingsOceanTempEnum
++syn keyword juliaConstC BasalforcingsPicoBasinIdEnum
++syn keyword juliaConstC BasalforcingsPicoBoxIdEnum
++syn keyword juliaConstC BasalforcingsPicoOverturningCoeffEnum
++syn keyword juliaConstC BasalforcingsPicoSubShelfOceanOverturningEnum
++syn keyword juliaConstC BasalforcingsPicoSubShelfOceanSalinityEnum
++syn keyword juliaConstC BasalforcingsPicoSubShelfOceanTempEnum
++syn keyword juliaConstC BasalStressxEnum
++syn keyword juliaConstC BasalStressyEnum
++syn keyword juliaConstC BasalStressEnum
++syn keyword juliaConstC BaseEnum
++syn keyword juliaConstC BaseOldEnum
++syn keyword juliaConstC BaseSlopeXEnum
++syn keyword juliaConstC BaseSlopeYEnum
++syn keyword juliaConstC BaselineBasalforcingsFloatingiceMeltingRateEnum
++syn keyword juliaConstC BaselineBasalforcingsSpatialDeepwaterMeltingRateEnum
++syn keyword juliaConstC BaselineCalvingCalvingrateEnum
++syn keyword juliaConstC BaselineFrictionEffectivePressureEnum
++syn keyword juliaConstC BaselineSmbMassBalanceEnum
++syn keyword juliaConstC BedEnum
++syn keyword juliaConstC BedGRDEnum
++syn keyword juliaConstC BedEastEnum
++syn keyword juliaConstC BedEastGRDEnum
++syn keyword juliaConstC BedNorthEnum
++syn keyword juliaConstC BedNorthGRDEnum
++syn keyword juliaConstC BedSlopeXEnum
++syn keyword juliaConstC BedSlopeYEnum
++syn keyword juliaConstC BottomPressureEnum
++syn keyword juliaConstC BottomPressureOldEnum
++syn keyword juliaConstC CalvingCalvingrateEnum
++syn keyword juliaConstC CalvingHabFractionEnum
++syn keyword juliaConstC CalvingAblationrateEnum
++syn keyword juliaConstC CalvingMeltingrateEnum
++syn keyword juliaConstC CalvingStressThresholdFloatingiceEnum
++syn keyword juliaConstC CalvingStressThresholdGroundediceEnum
++syn keyword juliaConstC CalvinglevermannCoeffEnum
++syn keyword juliaConstC CalvingratexEnum
++syn keyword juliaConstC CalvingrateyEnum
++syn keyword juliaConstC CalvingFluxLevelsetEnum
++syn keyword juliaConstC CalvingMeltingFluxLevelsetEnum
++syn keyword juliaConstC ConvergedEnum
++syn keyword juliaConstC CrevasseDepthEnum
++syn keyword juliaConstC DamageDEnum
++syn keyword juliaConstC DamageDOldEnum
++syn keyword juliaConstC DamageDbarEnum
++syn keyword juliaConstC DamageDbarOldEnum
++syn keyword juliaConstC DamageFEnum
++syn keyword juliaConstC DegreeOfChannelizationEnum
++syn keyword juliaConstC DepthBelowSurfaceEnum
++syn keyword juliaConstC DeltaIceThicknessEnum
++syn keyword juliaConstC DeltaTwsEnum
++syn keyword juliaConstC DeltaBottomPressureEnum
++syn keyword juliaConstC DeltaDslEnum
++syn keyword juliaConstC DslOldEnum
++syn keyword juliaConstC DslEnum
++syn keyword juliaConstC DeltaStrEnum
++syn keyword juliaConstC StrOldEnum
++syn keyword juliaConstC StrEnum
++syn keyword juliaConstC DeviatoricStresseffectiveEnum
++syn keyword juliaConstC DeviatoricStressxxEnum
++syn keyword juliaConstC DeviatoricStressxyEnum
++syn keyword juliaConstC DeviatoricStressxzEnum
++syn keyword juliaConstC DeviatoricStressyyEnum
++syn keyword juliaConstC DeviatoricStressyzEnum
++syn keyword juliaConstC DeviatoricStresszzEnum
++syn keyword juliaConstC DeviatoricStress1Enum
++syn keyword juliaConstC DeviatoricStress2Enum
++syn keyword juliaConstC DistanceToCalvingfrontEnum
++syn keyword juliaConstC DistanceToGroundinglineEnum
++syn keyword juliaConstC Domain2DhorizontalEnum
++syn keyword juliaConstC Domain2DverticalEnum
++syn keyword juliaConstC Domain3DEnum
++syn keyword juliaConstC DragCoefficientAbsGradientEnum
++syn keyword juliaConstC DrivingStressXEnum
++syn keyword juliaConstC DrivingStressYEnum
++syn keyword juliaConstC DummyEnum
++syn keyword juliaConstC EffectivePressureEnum
++syn keyword juliaConstC EffectivePressureSubstepEnum
++syn keyword juliaConstC EffectivePressureTransientEnum
++syn keyword juliaConstC EnthalpyEnum
++syn keyword juliaConstC EnthalpyPicardEnum
++syn keyword juliaConstC EplHeadEnum
++syn keyword juliaConstC EplHeadOldEnum
++syn keyword juliaConstC EplHeadSlopeXEnum
++syn keyword juliaConstC EplHeadSlopeYEnum
++syn keyword juliaConstC EplHeadSubstepEnum
++syn keyword juliaConstC EplHeadTransientEnum
++syn keyword juliaConstC EsaEmotionEnum
++syn keyword juliaConstC EsaNmotionEnum
++syn keyword juliaConstC EsaRotationrateEnum
++syn keyword juliaConstC EsaStrainratexxEnum
++syn keyword juliaConstC EsaStrainratexyEnum
++syn keyword juliaConstC EsaStrainrateyyEnum
++syn keyword juliaConstC EsaUmotionEnum
++syn keyword juliaConstC EsaXmotionEnum
++syn keyword juliaConstC EsaYmotionEnum
++syn keyword juliaConstC EtaDiffEnum
++syn keyword juliaConstC FlowequationBorderFSEnum
++syn keyword juliaConstC FrictionAsEnum
++syn keyword juliaConstC FrictionCEnum
++syn keyword juliaConstC FrictionCmaxEnum
++syn keyword juliaConstC FrictionCoefficientEnum
++syn keyword juliaConstC FrictionCoefficientcoulombEnum
++syn keyword juliaConstC FrictionEffectivePressureEnum
++syn keyword juliaConstC FrictionMEnum
++syn keyword juliaConstC FrictionPEnum
++syn keyword juliaConstC FrictionPressureAdjustedTemperatureEnum
++syn keyword juliaConstC FrictionQEnum
++syn keyword juliaConstC FrictionSedimentCompressibilityCoefficientEnum
++syn keyword juliaConstC FrictionTillFrictionAngleEnum
++syn keyword juliaConstC FrictionWaterLayerEnum
++syn keyword juliaConstC FrictionfEnum
++syn keyword juliaConstC FrontalForcingsBasinIdEnum
++syn keyword juliaConstC FrontalForcingsSubglacialDischargeEnum
++syn keyword juliaConstC FrontalForcingsThermalForcingEnum
++syn keyword juliaConstC GeometryHydrostaticRatioEnum
++syn keyword juliaConstC NGiaEnum
++syn keyword juliaConstC NGiaRateEnum
++syn keyword juliaConstC UGiaEnum
++syn keyword juliaConstC UGiaRateEnum
++syn keyword juliaConstC GradientEnum
++syn keyword juliaConstC GroundinglineHeightEnum
++syn keyword juliaConstC HydraulicPotentialEnum
++syn keyword juliaConstC HydraulicPotentialOldEnum
++syn keyword juliaConstC HydrologyBasalFluxEnum
++syn keyword juliaConstC HydrologyBumpHeightEnum
++syn keyword juliaConstC HydrologyBumpSpacingEnum
++syn keyword juliaConstC HydrologydcBasalMoulinInputEnum
++syn keyword juliaConstC HydrologydcEplThicknessEnum
++syn keyword juliaConstC HydrologydcEplThicknessOldEnum
++syn keyword juliaConstC HydrologydcEplThicknessSubstepEnum
++syn keyword juliaConstC HydrologydcEplThicknessTransientEnum
++syn keyword juliaConstC HydrologydcMaskEplactiveEltEnum
++syn keyword juliaConstC HydrologydcMaskEplactiveNodeEnum
++syn keyword juliaConstC HydrologydcMaskThawedEltEnum
++syn keyword juliaConstC HydrologydcMaskThawedNodeEnum
++syn keyword juliaConstC HydrologydcSedimentTransmitivityEnum
++syn keyword juliaConstC HydrologyDrainageRateEnum
++syn keyword juliaConstC HydrologyEnglacialInputEnum
++syn keyword juliaConstC HydrologyGapHeightEnum
++syn keyword juliaConstC HydrologyGapHeightXEnum
++syn keyword juliaConstC HydrologyGapHeightXXEnum
++syn keyword juliaConstC HydrologyGapHeightYEnum
++syn keyword juliaConstC HydrologyGapHeightYYEnum
++syn keyword juliaConstC HydrologyHeadEnum
++syn keyword juliaConstC HydrologyHeadOldEnum
++syn keyword juliaConstC HydrologyMoulinInputEnum
++syn keyword juliaConstC HydrologyNeumannfluxEnum
++syn keyword juliaConstC HydrologyReynoldsEnum
++syn keyword juliaConstC HydrologySheetConductivityEnum
++syn keyword juliaConstC HydrologySheetThicknessEnum
++syn keyword juliaConstC HydrologySheetThicknessOldEnum
++syn keyword juliaConstC HydrologyTwsEnum
++syn keyword juliaConstC HydrologyTwsSpcEnum
++syn keyword juliaConstC HydrologyTwsAnalysisEnum
++syn keyword juliaConstC HydrologyWatercolumnMaxEnum
++syn keyword juliaConstC HydrologyWaterVxEnum
++syn keyword juliaConstC HydrologyWaterVyEnum
++syn keyword juliaConstC IceEnum
++syn keyword juliaConstC IceMaskNodeActivationEnum
++syn keyword juliaConstC InputEnum
++syn keyword juliaConstC InversionCostFunctionsCoefficientsEnum
++syn keyword juliaConstC InversionSurfaceObsEnum
++syn keyword juliaConstC InversionThicknessObsEnum
++syn keyword juliaConstC InversionVelObsEnum
++syn keyword juliaConstC InversionVxObsEnum
++syn keyword juliaConstC InversionVyObsEnum
++syn keyword juliaConstC LevelsetfunctionSlopeXEnum
++syn keyword juliaConstC LevelsetfunctionSlopeYEnum
++syn keyword juliaConstC LevelsetObservationEnum
++syn keyword juliaConstC LoadingforceXEnum
++syn keyword juliaConstC LoadingforceYEnum
++syn keyword juliaConstC LoadingforceZEnum
++syn keyword juliaConstC MaskOceanLevelsetEnum
++syn keyword juliaConstC MaskIceLevelsetEnum
++syn keyword juliaConstC MaskIceRefLevelsetEnum
++syn keyword juliaConstC MasstransportSpcthicknessEnum
++syn keyword juliaConstC MaterialsRheologyBEnum
++syn keyword juliaConstC MaterialsRheologyBbarEnum
++syn keyword juliaConstC MaterialsRheologyEEnum
++syn keyword juliaConstC MaterialsRheologyEbarEnum
++syn keyword juliaConstC MaterialsRheologyEcEnum
++syn keyword juliaConstC MaterialsRheologyEcbarEnum
++syn keyword juliaConstC MaterialsRheologyEsEnum
++syn keyword juliaConstC MaterialsRheologyEsbarEnum
++syn keyword juliaConstC MaterialsRheologyNEnum
++syn keyword juliaConstC MeshScaleFactorEnum
++syn keyword juliaConstC MeshVertexonbaseEnum
++syn keyword juliaConstC MeshVertexonboundaryEnum
++syn keyword juliaConstC MeshVertexonsurfaceEnum
++syn keyword juliaConstC MisfitEnum
++syn keyword juliaConstC MovingFrontalVxEnum
++syn keyword juliaConstC MovingFrontalVyEnum
++syn keyword juliaConstC NeumannfluxEnum
++syn keyword juliaConstC NewDamageEnum
++syn keyword juliaConstC NodeEnum
++syn keyword juliaConstC OmegaAbsGradientEnum
++syn keyword juliaConstC OceantransportSpcbottompressureEnum
++syn keyword juliaConstC OceantransportSpcstrEnum
++syn keyword juliaConstC OceantransportSpcdslEnum
++syn keyword juliaConstC P0Enum
++syn keyword juliaConstC P1Enum
++syn keyword juliaConstC PartitioningEnum
++syn keyword juliaConstC PressureEnum
++syn keyword juliaConstC RadarEnum
++syn keyword juliaConstC RadarAttenuationMacGregorEnum
++syn keyword juliaConstC RadarAttenuationWolffEnum
++syn keyword juliaConstC RadarIcePeriodEnum
++syn keyword juliaConstC RadarPowerMacGregorEnum
++syn keyword juliaConstC RadarPowerWolffEnum
++syn keyword juliaConstC RheologyBAbsGradientEnum
++syn keyword juliaConstC RheologyBInitialguessEnum
++syn keyword juliaConstC RheologyBInitialguessMisfitEnum
++syn keyword juliaConstC RheologyBbarAbsGradientEnum
++syn keyword juliaConstC SampleEnum
++syn keyword juliaConstC SampleOldEnum
++syn keyword juliaConstC SampleNoiseEnum
++syn keyword juliaConstC SamplingBetaEnum
++syn keyword juliaConstC SamplingKappaEnum
++syn keyword juliaConstC SamplingPhiEnum
++syn keyword juliaConstC SamplingTauEnum
++syn keyword juliaConstC SealevelEnum
++syn keyword juliaConstC SealevelGRDEnum
++syn keyword juliaConstC SatGraviGRDEnum
++syn keyword juliaConstC SealevelBarystaticMaskEnum
++syn keyword juliaConstC SealevelBarystaticIceMaskEnum
++syn keyword juliaConstC SealevelBarystaticIceWeightsEnum
++syn keyword juliaConstC SealevelBarystaticIceAreaEnum
++syn keyword juliaConstC SealevelBarystaticIceLatbarEnum
++syn keyword juliaConstC SealevelBarystaticIceLongbarEnum
++syn keyword juliaConstC SealevelBarystaticIceLoadEnum
++syn keyword juliaConstC SealevelBarystaticHydroMaskEnum
++syn keyword juliaConstC SealevelBarystaticHydroWeightsEnum
++syn keyword juliaConstC SealevelBarystaticHydroAreaEnum
++syn keyword juliaConstC SealevelBarystaticHydroLatbarEnum
++syn keyword juliaConstC SealevelBarystaticHydroLongbarEnum
++syn keyword juliaConstC SealevelBarystaticHydroLoadEnum
++syn keyword juliaConstC SealevelBarystaticBpMaskEnum
++syn keyword juliaConstC SealevelBarystaticBpWeightsEnum
++syn keyword juliaConstC SealevelBarystaticBpAreaEnum
++syn keyword juliaConstC SealevelBarystaticBpLoadEnum
++syn keyword juliaConstC SealevelBarystaticOceanMaskEnum
++syn keyword juliaConstC SealevelBarystaticOceanWeightsEnum
++syn keyword juliaConstC SealevelBarystaticOceanAreaEnum
++syn keyword juliaConstC SealevelBarystaticOceanLatbarEnum
++syn keyword juliaConstC SealevelBarystaticOceanLongbarEnum
++syn keyword juliaConstC SealevelBarystaticOceanLoadEnum
++syn keyword juliaConstC SealevelNEsaEnum
++syn keyword juliaConstC SealevelNEsaRateEnum
++syn keyword juliaConstC SealevelRSLEnum
++syn keyword juliaConstC BslcEnum
++syn keyword juliaConstC BslcIceEnum
++syn keyword juliaConstC BslcHydroEnum
++syn keyword juliaConstC BslcOceanEnum
++syn keyword juliaConstC BslcRateEnum
++syn keyword juliaConstC GmtslcEnum
++syn keyword juliaConstC SealevelRSLBarystaticEnum
++syn keyword juliaConstC SealevelRSLRateEnum
++syn keyword juliaConstC SealevelUGrdEnum
++syn keyword juliaConstC SealevelNGrdEnum
++syn keyword juliaConstC SealevelUEastEsaEnum
++syn keyword juliaConstC SealevelUNorthEsaEnum
++syn keyword juliaConstC SealevelchangeIndicesEnum
++syn keyword juliaConstC SealevelchangeAlphaIndexEnum
++syn keyword juliaConstC SealevelchangeAzimuthIndexEnum
++syn keyword juliaConstC SealevelchangeGrotEnum
++syn keyword juliaConstC SealevelchangeGSatGravirotEnum
++syn keyword juliaConstC SealevelchangeGUrotEnum
++syn keyword juliaConstC SealevelchangeGNrotEnum
++syn keyword juliaConstC SealevelchangeGErotEnum
++syn keyword juliaConstC SealevelchangeAlphaIndexOceanEnum
++syn keyword juliaConstC SealevelchangeAlphaIndexIceEnum
++syn keyword juliaConstC SealevelchangeAlphaIndexHydroEnum
++syn keyword juliaConstC SealevelchangeAzimuthIndexOceanEnum
++syn keyword juliaConstC SealevelchangeAzimuthIndexIceEnum
++syn keyword juliaConstC SealevelchangeAzimuthIndexHydroEnum
++syn keyword juliaConstC SealevelchangeViscousRSLEnum
++syn keyword juliaConstC SealevelchangeViscousSGEnum
++syn keyword juliaConstC SealevelchangeViscousUEnum
++syn keyword juliaConstC SealevelchangeViscousNEnum
++syn keyword juliaConstC SealevelchangeViscousEEnum
++syn keyword juliaConstC SedimentHeadEnum
++syn keyword juliaConstC SedimentHeadOldEnum
++syn keyword juliaConstC SedimentHeadSubstepEnum
++syn keyword juliaConstC SedimentHeadTransientEnum
++syn keyword juliaConstC SedimentHeadResidualEnum
++syn keyword juliaConstC SedimentHeadStackedEnum
++syn keyword juliaConstC SigmaNNEnum
++syn keyword juliaConstC SigmaVMEnum
++syn keyword juliaConstC SmbAccumulatedECEnum
++syn keyword juliaConstC SmbAccumulatedMassBalanceEnum
++syn keyword juliaConstC SmbAccumulatedMeltEnum
++syn keyword juliaConstC SmbAccumulatedPrecipitationEnum
++syn keyword juliaConstC SmbAccumulatedRainEnum
++syn keyword juliaConstC SmbAccumulatedRefreezeEnum
++syn keyword juliaConstC SmbAccumulatedRunoffEnum
++syn keyword juliaConstC SmbAEnum
++syn keyword juliaConstC SmbAdiffEnum
++syn keyword juliaConstC SmbAValueEnum
++syn keyword juliaConstC SmbAccumulationEnum
++syn keyword juliaConstC SmbAdiffiniEnum
++syn keyword juliaConstC SmbAiniEnum
++syn keyword juliaConstC SmbAutoregressionNoiseEnum
++syn keyword juliaConstC SmbBasinsIdEnum
++syn keyword juliaConstC SmbBMaxEnum
++syn keyword juliaConstC SmbBMinEnum
++syn keyword juliaConstC SmbBNegEnum
++syn keyword juliaConstC SmbBPosEnum
++syn keyword juliaConstC SmbCEnum
++syn keyword juliaConstC SmbCcsnowValueEnum
++syn keyword juliaConstC SmbCciceValueEnum
++syn keyword juliaConstC SmbCotValueEnum
++syn keyword juliaConstC SmbDEnum
++syn keyword juliaConstC SmbDailyairdensityEnum
++syn keyword juliaConstC SmbDailyairhumidityEnum
++syn keyword juliaConstC SmbDailydlradiationEnum
++syn keyword juliaConstC SmbDailydsradiationEnum
++syn keyword juliaConstC SmbDailypressureEnum
++syn keyword juliaConstC SmbDailyrainfallEnum
++syn keyword juliaConstC SmbDailysnowfallEnum
++syn keyword juliaConstC SmbDailytemperatureEnum
++syn keyword juliaConstC SmbDailywindspeedEnum
++syn keyword juliaConstC SmbDiniEnum
++syn keyword juliaConstC SmbDlwrfEnum
++syn keyword juliaConstC SmbDulwrfValueEnum
++syn keyword juliaConstC SmbDswrfEnum
++syn keyword juliaConstC SmbDswdiffrfEnum
++syn keyword juliaConstC SmbDzAddEnum
++syn keyword juliaConstC SmbDzEnum
++syn keyword juliaConstC SmbDzMinEnum
++syn keyword juliaConstC SmbDzTopEnum
++syn keyword juliaConstC SmbDziniEnum
++syn keyword juliaConstC SmbEAirEnum
++syn keyword juliaConstC SmbECEnum
++syn keyword juliaConstC SmbECDtEnum
++syn keyword juliaConstC SmbECiniEnum
++syn keyword juliaConstC SmbElaEnum
++syn keyword juliaConstC SmbEvaporationEnum
++syn keyword juliaConstC SmbFACEnum
++syn keyword juliaConstC SmbGdnEnum
++syn keyword juliaConstC SmbGdniniEnum
++syn keyword juliaConstC SmbGspEnum
++syn keyword juliaConstC SmbGspiniEnum
++syn keyword juliaConstC SmbHrefEnum
++syn keyword juliaConstC SmbIsInitializedEnum
++syn keyword juliaConstC SmbMAddEnum
++syn keyword juliaConstC SmbMassBalanceEnum
++syn keyword juliaConstC SmbMassBalanceSubstepEnum
++syn keyword juliaConstC SmbMassBalanceTransientEnum
++syn keyword juliaConstC SmbMeanLHFEnum
++syn keyword juliaConstC SmbMeanSHFEnum
++syn keyword juliaConstC SmbMeanULWEnum
++syn keyword juliaConstC SmbMeltEnum
++syn keyword juliaConstC SmbMonthlytemperaturesEnum
++syn keyword juliaConstC SmbMSurfEnum
++syn keyword juliaConstC SmbNetLWEnum
++syn keyword juliaConstC SmbNetSWEnum
++syn keyword juliaConstC SmbPAirEnum
++syn keyword juliaConstC SmbPEnum
++syn keyword juliaConstC SmbPddfacIceEnum
++syn keyword juliaConstC SmbPddfacSnowEnum
++syn keyword juliaConstC SmbPrecipitationEnum
++syn keyword juliaConstC SmbPrecipitationsAnomalyEnum
++syn keyword juliaConstC SmbPrecipitationsLgmEnum
++syn keyword juliaConstC SmbPrecipitationsPresentdayEnum
++syn keyword juliaConstC SmbPrecipitationsReconstructedEnum
++syn keyword juliaConstC SmbRainEnum
++syn keyword juliaConstC SmbReEnum
++syn keyword juliaConstC SmbRefreezeEnum
++syn keyword juliaConstC SmbReiniEnum
++syn keyword juliaConstC SmbRunoffEnum
++syn keyword juliaConstC SmbRunoffSubstepEnum
++syn keyword juliaConstC SmbRunoffTransientEnum
++syn keyword juliaConstC SmbS0gcmEnum
++syn keyword juliaConstC SmbS0pEnum
++syn keyword juliaConstC SmbS0tEnum
++syn keyword juliaConstC SmbSizeiniEnum
++syn keyword juliaConstC SmbSmbCorrEnum
++syn keyword juliaConstC SmbSmbrefEnum
++syn keyword juliaConstC SmbSzaValueEnum
++syn keyword juliaConstC SmbTEnum
++syn keyword juliaConstC SmbTaEnum
++syn keyword juliaConstC SmbTeValueEnum
++syn keyword juliaConstC SmbTemperaturesAnomalyEnum
++syn keyword juliaConstC SmbTemperaturesLgmEnum
++syn keyword juliaConstC SmbTemperaturesPresentdayEnum
++syn keyword juliaConstC SmbTemperaturesReconstructedEnum
++syn keyword juliaConstC SmbTiniEnum
++syn keyword juliaConstC SmbTmeanEnum
++syn keyword juliaConstC SmbTzEnum
++syn keyword juliaConstC SmbValuesAutoregressionEnum
++syn keyword juliaConstC SmbVEnum
++syn keyword juliaConstC SmbVmeanEnum
++syn keyword juliaConstC SmbVzEnum
++syn keyword juliaConstC SmbWEnum
++syn keyword juliaConstC SmbWAddEnum
++syn keyword juliaConstC SmbWiniEnum
++syn keyword juliaConstC SmbZMaxEnum
++syn keyword juliaConstC SmbZMinEnum
++syn keyword juliaConstC SmbZTopEnum
++syn keyword juliaConstC SmbZYEnum
++syn keyword juliaConstC SolidearthExternalDisplacementEastRateEnum
++syn keyword juliaConstC SolidearthExternalDisplacementNorthRateEnum
++syn keyword juliaConstC SolidearthExternalDisplacementUpRateEnum
++syn keyword juliaConstC SolidearthExternalGeoidRateEnum
++syn keyword juliaConstC StochasticForcingDefaultIdEnum
++syn keyword juliaConstC StrainRateeffectiveEnum
++syn keyword juliaConstC StrainRateparallelEnum
++syn keyword juliaConstC StrainRateperpendicularEnum
++syn keyword juliaConstC StrainRatexxEnum
++syn keyword juliaConstC StrainRatexyEnum
++syn keyword juliaConstC StrainRatexzEnum
++syn keyword juliaConstC StrainRateyyEnum
++syn keyword juliaConstC StrainRateyzEnum
++syn keyword juliaConstC StrainRatezzEnum
++syn keyword juliaConstC StressMaxPrincipalEnum
++syn keyword juliaConstC StressTensorxxEnum
++syn keyword juliaConstC StressTensorxyEnum
++syn keyword juliaConstC StressTensorxzEnum
++syn keyword juliaConstC StressTensoryyEnum
++syn keyword juliaConstC StressTensoryzEnum
++syn keyword juliaConstC StressTensorzzEnum
++syn keyword juliaConstC SurfaceAbsMisfitEnum
++syn keyword juliaConstC SurfaceAbsVelMisfitEnum
++syn keyword juliaConstC AreaEnum
++syn keyword juliaConstC SealevelAreaEnum
++syn keyword juliaConstC SurfaceAreaEnum
++syn keyword juliaConstC SurfaceAverageVelMisfitEnum
++syn keyword juliaConstC SurfaceCrevasseEnum
++syn keyword juliaConstC SurfaceEnum
++syn keyword juliaConstC SurfaceOldEnum
++syn keyword juliaConstC SurfaceLogVelMisfitEnum
++syn keyword juliaConstC SurfaceLogVxVyMisfitEnum
++syn keyword juliaConstC SurfaceObservationEnum
++syn keyword juliaConstC SurfaceRelVelMisfitEnum
++syn keyword juliaConstC SurfaceSlopeXEnum
++syn keyword juliaConstC SurfaceSlopeYEnum
++syn keyword juliaConstC TemperatureEnum
++syn keyword juliaConstC TemperaturePDDEnum
++syn keyword juliaConstC TemperaturePicardEnum
++syn keyword juliaConstC TemperatureSEMICEnum
++syn keyword juliaConstC ThermalforcingAutoregressionNoiseEnum
++syn keyword juliaConstC ThermalforcingValuesAutoregressionEnum
++syn keyword juliaConstC ThermalSpctemperatureEnum
++syn keyword juliaConstC ThicknessAbsGradientEnum
++syn keyword juliaConstC ThicknessAbsMisfitEnum
++syn keyword juliaConstC ThicknessAcrossGradientEnum
++syn keyword juliaConstC ThicknessAlongGradientEnum
++syn keyword juliaConstC ThicknessEnum
++syn keyword juliaConstC ThicknessOldEnum
++syn keyword juliaConstC ThicknessPositiveEnum
++syn keyword juliaConstC ThicknessResidualEnum
++syn keyword juliaConstC TransientAccumulatedDeltaIceThicknessEnum
++syn keyword juliaConstC VelEnum
++syn keyword juliaConstC VxAverageEnum
++syn keyword juliaConstC VxBaseEnum
++syn keyword juliaConstC VxEnum
++syn keyword juliaConstC VxMeshEnum
++syn keyword juliaConstC VxObsEnum
++syn keyword juliaConstC VxShearEnum
++syn keyword juliaConstC VxSurfaceEnum
++syn keyword juliaConstC VyAverageEnum
++syn keyword juliaConstC VyBaseEnum
++syn keyword juliaConstC VyEnum
++syn keyword juliaConstC VyMeshEnum
++syn keyword juliaConstC VyObsEnum
++syn keyword juliaConstC VyShearEnum
++syn keyword juliaConstC VySurfaceEnum
++syn keyword juliaConstC VzEnum
++syn keyword juliaConstC VzFSEnum
++syn keyword juliaConstC VzHOEnum
++syn keyword juliaConstC VzMeshEnum
++syn keyword juliaConstC VzSSAEnum
++syn keyword juliaConstC WaterColumnOldEnum
++syn keyword juliaConstC WatercolumnEnum
++syn keyword juliaConstC WaterfractionDrainageEnum
++syn keyword juliaConstC WaterfractionDrainageIntegratedEnum
++syn keyword juliaConstC WaterfractionEnum
++syn keyword juliaConstC WaterheightEnum
++syn keyword juliaConstC FrictionWaterPressureEnum
++syn keyword juliaConstC FrictionWaterPressureNoiseEnum
++syn keyword juliaConstC WeightsLevelsetObservationEnum
++syn keyword juliaConstC WeightsSurfaceObservationEnum
++syn keyword juliaConstC OldAccumulatedDeltaBottomPressureEnum
++syn keyword juliaConstC OldAccumulatedDeltaIceThicknessEnum
++syn keyword juliaConstC OldAccumulatedDeltaTwsEnum
++syn keyword juliaConstC Outputdefinition1Enum
++syn keyword juliaConstC Outputdefinition10Enum
++syn keyword juliaConstC Outputdefinition11Enum
++syn keyword juliaConstC Outputdefinition12Enum
++syn keyword juliaConstC Outputdefinition13Enum
++syn keyword juliaConstC Outputdefinition14Enum
++syn keyword juliaConstC Outputdefinition15Enum
++syn keyword juliaConstC Outputdefinition16Enum
++syn keyword juliaConstC Outputdefinition17Enum
++syn keyword juliaConstC Outputdefinition18Enum
++syn keyword juliaConstC Outputdefinition19Enum
++syn keyword juliaConstC Outputdefinition20Enum
++syn keyword juliaConstC Outputdefinition21Enum
++syn keyword juliaConstC Outputdefinition22Enum
++syn keyword juliaConstC Outputdefinition23Enum
++syn keyword juliaConstC Outputdefinition24Enum
++syn keyword juliaConstC Outputdefinition25Enum
++syn keyword juliaConstC Outputdefinition26Enum
++syn keyword juliaConstC Outputdefinition27Enum
++syn keyword juliaConstC Outputdefinition28Enum
++syn keyword juliaConstC Outputdefinition29Enum
++syn keyword juliaConstC Outputdefinition2Enum
++syn keyword juliaConstC Outputdefinition30Enum
++syn keyword juliaConstC Outputdefinition31Enum
++syn keyword juliaConstC Outputdefinition32Enum
++syn keyword juliaConstC Outputdefinition33Enum
++syn keyword juliaConstC Outputdefinition34Enum
++syn keyword juliaConstC Outputdefinition35Enum
++syn keyword juliaConstC Outputdefinition36Enum
++syn keyword juliaConstC Outputdefinition37Enum
++syn keyword juliaConstC Outputdefinition38Enum
++syn keyword juliaConstC Outputdefinition39Enum
++syn keyword juliaConstC Outputdefinition3Enum
++syn keyword juliaConstC Outputdefinition40Enum
++syn keyword juliaConstC Outputdefinition41Enum
++syn keyword juliaConstC Outputdefinition42Enum
++syn keyword juliaConstC Outputdefinition43Enum
++syn keyword juliaConstC Outputdefinition44Enum
++syn keyword juliaConstC Outputdefinition45Enum
++syn keyword juliaConstC Outputdefinition46Enum
++syn keyword juliaConstC Outputdefinition47Enum
++syn keyword juliaConstC Outputdefinition48Enum
++syn keyword juliaConstC Outputdefinition49Enum
++syn keyword juliaConstC Outputdefinition4Enum
++syn keyword juliaConstC Outputdefinition50Enum
++syn keyword juliaConstC Outputdefinition51Enum
++syn keyword juliaConstC Outputdefinition52Enum
++syn keyword juliaConstC Outputdefinition53Enum
++syn keyword juliaConstC Outputdefinition54Enum
++syn keyword juliaConstC Outputdefinition55Enum
++syn keyword juliaConstC Outputdefinition56Enum
++syn keyword juliaConstC Outputdefinition57Enum
++syn keyword juliaConstC Outputdefinition58Enum
++syn keyword juliaConstC Outputdefinition59Enum
++syn keyword juliaConstC Outputdefinition5Enum
++syn keyword juliaConstC Outputdefinition60Enum
++syn keyword juliaConstC Outputdefinition61Enum
++syn keyword juliaConstC Outputdefinition62Enum
++syn keyword juliaConstC Outputdefinition63Enum
++syn keyword juliaConstC Outputdefinition64Enum
++syn keyword juliaConstC Outputdefinition65Enum
++syn keyword juliaConstC Outputdefinition66Enum
++syn keyword juliaConstC Outputdefinition67Enum
++syn keyword juliaConstC Outputdefinition68Enum
++syn keyword juliaConstC Outputdefinition69Enum
++syn keyword juliaConstC Outputdefinition6Enum
++syn keyword juliaConstC Outputdefinition70Enum
++syn keyword juliaConstC Outputdefinition71Enum
++syn keyword juliaConstC Outputdefinition72Enum
++syn keyword juliaConstC Outputdefinition73Enum
++syn keyword juliaConstC Outputdefinition74Enum
++syn keyword juliaConstC Outputdefinition75Enum
++syn keyword juliaConstC Outputdefinition76Enum
++syn keyword juliaConstC Outputdefinition77Enum
++syn keyword juliaConstC Outputdefinition78Enum
++syn keyword juliaConstC Outputdefinition79Enum
++syn keyword juliaConstC Outputdefinition7Enum
++syn keyword juliaConstC Outputdefinition80Enum
++syn keyword juliaConstC Outputdefinition81Enum
++syn keyword juliaConstC Outputdefinition82Enum
++syn keyword juliaConstC Outputdefinition83Enum
++syn keyword juliaConstC Outputdefinition84Enum
++syn keyword juliaConstC Outputdefinition85Enum
++syn keyword juliaConstC Outputdefinition86Enum
++syn keyword juliaConstC Outputdefinition87Enum
++syn keyword juliaConstC Outputdefinition88Enum
++syn keyword juliaConstC Outputdefinition89Enum
++syn keyword juliaConstC Outputdefinition8Enum
++syn keyword juliaConstC Outputdefinition90Enum
++syn keyword juliaConstC Outputdefinition91Enum
++syn keyword juliaConstC Outputdefinition92Enum
++syn keyword juliaConstC Outputdefinition93Enum
++syn keyword juliaConstC Outputdefinition94Enum
++syn keyword juliaConstC Outputdefinition95Enum
++syn keyword juliaConstC Outputdefinition96Enum
++syn keyword juliaConstC Outputdefinition97Enum
++syn keyword juliaConstC Outputdefinition98Enum
++syn keyword juliaConstC Outputdefinition99Enum
++syn keyword juliaConstC Outputdefinition9Enum
++syn keyword juliaConstC Outputdefinition100Enum
++syn keyword juliaConstC InputsENDEnum
++syn keyword juliaConstC AbsoluteEnum
++syn keyword juliaConstC AdaptiveTimesteppingEnum
++syn keyword juliaConstC AdjointBalancethickness2AnalysisEnum
++syn keyword juliaConstC AdjointBalancethicknessAnalysisEnum
++syn keyword juliaConstC AdjointHorizAnalysisEnum
++syn keyword juliaConstC AggressiveMigrationEnum
++syn keyword juliaConstC AmrBamgEnum
++syn keyword juliaConstC AmrNeopzEnum
++syn keyword juliaConstC AndroidFrictionCoefficientEnum
++syn keyword juliaConstC ArrheniusEnum
++syn keyword juliaConstC AutodiffJacobianEnum
++syn keyword juliaConstC AutoregressionLinearFloatingMeltRateEnum
++syn keyword juliaConstC Balancethickness2AnalysisEnum
++syn keyword juliaConstC Balancethickness2SolutionEnum
++syn keyword juliaConstC BalancethicknessAnalysisEnum
++syn keyword juliaConstC BalancethicknessApparentMassbalanceEnum
++syn keyword juliaConstC BalancethicknessSoftAnalysisEnum
++syn keyword juliaConstC BalancethicknessSoftSolutionEnum
++syn keyword juliaConstC BalancethicknessSolutionEnum
++syn keyword juliaConstC BalancevelocityAnalysisEnum
++syn keyword juliaConstC BalancevelocitySolutionEnum
++syn keyword juliaConstC BasalforcingsIsmip6Enum
++syn keyword juliaConstC BasalforcingsPicoEnum
++syn keyword juliaConstC BeckmannGoosseFloatingMeltRateEnum
++syn keyword juliaConstC BedSlopeSolutionEnum
++syn keyword juliaConstC BoolExternalResultEnum
++syn keyword juliaConstC BoolInputEnum
++syn keyword juliaConstC IntInputEnum
++syn keyword juliaConstC DoubleInputEnum
++syn keyword juliaConstC BoolParamEnum
++syn keyword juliaConstC BoundaryEnum
++syn keyword juliaConstC BuddJackaEnum
++syn keyword juliaConstC CalvingDev2Enum
++syn keyword juliaConstC CalvingHabEnum
++syn keyword juliaConstC CalvingLevermannEnum
++syn keyword juliaConstC CalvingTestEnum
++syn keyword juliaConstC CalvingParameterizationEnum
++syn keyword juliaConstC CalvingVonmisesEnum
++syn keyword juliaConstC CfdragcoeffabsgradEnum
++syn keyword juliaConstC CfsurfacelogvelEnum
++syn keyword juliaConstC CfsurfacesquareEnum
++syn keyword juliaConstC CflevelsetmisfitEnum
++syn keyword juliaConstC ChannelEnum
++syn keyword juliaConstC ChannelAreaEnum
++syn keyword juliaConstC ChannelAreaOldEnum
++syn keyword juliaConstC ChannelDischargeEnum
++syn keyword juliaConstC ClosedEnum
++syn keyword juliaConstC ColinearEnum
++syn keyword juliaConstC ConstraintsEnum
++syn keyword juliaConstC ContactEnum
++syn keyword juliaConstC ContourEnum
++syn keyword juliaConstC ContoursEnum
++syn keyword juliaConstC ControlInputEnum
++syn keyword juliaConstC ControlInputGradEnum
++syn keyword juliaConstC ControlInputMaxsEnum
++syn keyword juliaConstC ControlInputMinsEnum
++syn keyword juliaConstC ControlInputValuesEnum
++syn keyword juliaConstC CrouzeixRaviartEnum
++syn keyword juliaConstC CuffeyEnum
++syn keyword juliaConstC CuffeyTemperateEnum
++syn keyword juliaConstC DamageEvolutionAnalysisEnum
++syn keyword juliaConstC DamageEvolutionSolutionEnum
++syn keyword juliaConstC DataSetEnum
++syn keyword juliaConstC DataSetParamEnum
++syn keyword juliaConstC DatasetInputEnum
++syn keyword juliaConstC DefaultAnalysisEnum
++syn keyword juliaConstC DefaultCalvingEnum
++syn keyword juliaConstC DenseEnum
++syn keyword juliaConstC DependentObjectEnum
++syn keyword juliaConstC DepthAverageAnalysisEnum
++syn keyword juliaConstC DeviatoricStressErrorEstimatorEnum
++syn keyword juliaConstC DivergenceEnum
++syn keyword juliaConstC Domain3DsurfaceEnum
++syn keyword juliaConstC DoubleArrayInputEnum
++syn keyword juliaConstC ArrayInputEnum
++syn keyword juliaConstC IntArrayInputEnum
++syn keyword juliaConstC DoubleExternalResultEnum
++syn keyword juliaConstC DoubleMatArrayParamEnum
++syn keyword juliaConstC DoubleMatExternalResultEnum
++syn keyword juliaConstC DoubleMatParamEnum
++syn keyword juliaConstC DoubleParamEnum
++syn keyword juliaConstC DoubleVecParamEnum
++syn keyword juliaConstC ElementEnum
++syn keyword juliaConstC ElementHookEnum
++syn keyword juliaConstC ElementSIdEnum
++syn keyword juliaConstC EnthalpyAnalysisEnum
++syn keyword juliaConstC EsaAnalysisEnum
++syn keyword juliaConstC EsaSolutionEnum
++syn keyword juliaConstC EsaTransitionsEnum
++syn keyword juliaConstC ExternalResultEnum
++syn keyword juliaConstC ExtrapolationAnalysisEnum
++syn keyword juliaConstC ExtrudeFromBaseAnalysisEnum
++syn keyword juliaConstC ExtrudeFromTopAnalysisEnum
++syn keyword juliaConstC FSApproximationEnum
++syn keyword juliaConstC FSSolverEnum
++syn keyword juliaConstC FSpressureEnum
++syn keyword juliaConstC FSvelocityEnum
++syn keyword juliaConstC FemModelEnum
++syn keyword juliaConstC FileParamEnum
++syn keyword juliaConstC FixedTimesteppingEnum
++syn keyword juliaConstC FloatingAreaEnum
++syn keyword juliaConstC FloatingAreaScaledEnum
++syn keyword juliaConstC FloatingMeltRateEnum
++syn keyword juliaConstC FreeEnum
++syn keyword juliaConstC FreeSurfaceBaseAnalysisEnum
++syn keyword juliaConstC FreeSurfaceTopAnalysisEnum
++syn keyword juliaConstC FrontalForcingsDefaultEnum
++syn keyword juliaConstC FrontalForcingsRignotEnum
++syn keyword juliaConstC FrontalForcingsRignotAutoregressionEnum
++syn keyword juliaConstC FsetEnum
++syn keyword juliaConstC FullMeltOnPartiallyFloatingEnum
++syn keyword juliaConstC GLheightadvectionAnalysisEnum
++syn keyword juliaConstC GaussPentaEnum
++syn keyword juliaConstC GaussSegEnum
++syn keyword juliaConstC GaussTetraEnum
++syn keyword juliaConstC GaussTriaEnum
++syn keyword juliaConstC GenericOptionEnum
++syn keyword juliaConstC GenericParamEnum
++syn keyword juliaConstC GenericExternalResultEnum
++syn keyword juliaConstC Gradient1Enum
++syn keyword juliaConstC Gradient2Enum
++syn keyword juliaConstC Gradient3Enum
++syn keyword juliaConstC Gradient4Enum
++syn keyword juliaConstC GroundedAreaEnum
++syn keyword juliaConstC GroundedAreaScaledEnum
++syn keyword juliaConstC GroundingOnlyEnum
++syn keyword juliaConstC GroundinglineMassFluxEnum
++syn keyword juliaConstC GsetEnum
++syn keyword juliaConstC GslEnum
++syn keyword juliaConstC HOApproximationEnum
++syn keyword juliaConstC HOFSApproximationEnum
++syn keyword juliaConstC HookEnum
++syn keyword juliaConstC HydrologyDCEfficientAnalysisEnum
++syn keyword juliaConstC HydrologyDCInefficientAnalysisEnum
++syn keyword juliaConstC HydrologyGlaDSAnalysisEnum
++syn keyword juliaConstC HydrologyGlaDSEnum
++syn keyword juliaConstC HydrologyPismAnalysisEnum
++syn keyword juliaConstC HydrologyShaktiAnalysisEnum
++syn keyword juliaConstC HydrologyShreveAnalysisEnum
++syn keyword juliaConstC HydrologySolutionEnum
++syn keyword juliaConstC HydrologySubstepsEnum
++syn keyword juliaConstC HydrologySubTimeEnum
++syn keyword juliaConstC HydrologydcEnum
++syn keyword juliaConstC HydrologypismEnum
++syn keyword juliaConstC HydrologyshaktiEnum
++syn keyword juliaConstC HydrologyshreveEnum
++syn keyword juliaConstC IceMassEnum
++syn keyword juliaConstC IceMassScaledEnum
++syn keyword juliaConstC IceVolumeAboveFloatationEnum
++syn keyword juliaConstC IceVolumeAboveFloatationScaledEnum
++syn keyword juliaConstC IceVolumeEnum
++syn keyword juliaConstC IceVolumeScaledEnum
++syn keyword juliaConstC IcefrontMassFluxEnum
++syn keyword juliaConstC IcefrontMassFluxLevelsetEnum
++syn keyword juliaConstC IncrementalEnum
++syn keyword juliaConstC IndexedEnum
++syn keyword juliaConstC IntExternalResultEnum
++syn keyword juliaConstC ElementInputEnum
++syn keyword juliaConstC IntMatExternalResultEnum
++syn keyword juliaConstC IntMatParamEnum
++syn keyword juliaConstC IntParamEnum
++syn keyword juliaConstC IntVecParamEnum
++syn keyword juliaConstC InputsEnum
++syn keyword juliaConstC InternalEnum
++syn keyword juliaConstC IntersectEnum
++syn keyword juliaConstC InversionVzObsEnum
++syn keyword juliaConstC JEnum
++syn keyword juliaConstC L1L2ApproximationEnum
++syn keyword juliaConstC MOLHOApproximationEnum
++syn keyword juliaConstC L2ProjectionBaseAnalysisEnum
++syn keyword juliaConstC L2ProjectionEPLAnalysisEnum
++syn keyword juliaConstC LACrouzeixRaviartEnum
++syn keyword juliaConstC LATaylorHoodEnum
++syn keyword juliaConstC LambdaSEnum
++syn keyword juliaConstC LevelsetAnalysisEnum
++syn keyword juliaConstC LevelsetfunctionPicardEnum
++syn keyword juliaConstC LinearFloatingMeltRateEnum
++syn keyword juliaConstC LliboutryDuvalEnum
++syn keyword juliaConstC LoadsEnum
++syn keyword juliaConstC LoveAnalysisEnum
++syn keyword juliaConstC LoveHfEnum
++syn keyword juliaConstC LoveHtEnum
++syn keyword juliaConstC LoveKernelsImagEnum
++syn keyword juliaConstC LoveKernelsRealEnum
++syn keyword juliaConstC LoveKfEnum
++syn keyword juliaConstC LoveKtEnum
++syn keyword juliaConstC LoveLfEnum
++syn keyword juliaConstC LoveLtEnum
++syn keyword juliaConstC LoveTidalHtEnum
++syn keyword juliaConstC LoveTidalKtEnum
++syn keyword juliaConstC LoveTidalLtEnum
++syn keyword juliaConstC LovePMTF1tEnum
++syn keyword juliaConstC LovePMTF2tEnum
++syn keyword juliaConstC LoveYiEnum
++syn keyword juliaConstC LoveRhsEnum
++syn keyword juliaConstC LoveSolutionEnum
++syn keyword juliaConstC MINIEnum
++syn keyword juliaConstC MINIcondensedEnum
++syn keyword juliaConstC MantlePlumeGeothermalFluxEnum
++syn keyword juliaConstC MassFluxEnum
++syn keyword juliaConstC MassconEnum
++syn keyword juliaConstC MassconaxpbyEnum
++syn keyword juliaConstC MassfluxatgateEnum
++syn keyword juliaConstC MasstransportAnalysisEnum
++syn keyword juliaConstC MasstransportSolutionEnum
++syn keyword juliaConstC MatdamageiceEnum
++syn keyword juliaConstC MatenhancediceEnum
++syn keyword juliaConstC MaterialsEnum
++syn keyword juliaConstC MatestarEnum
++syn keyword juliaConstC MaticeEnum
++syn keyword juliaConstC MatlithoEnum
++syn keyword juliaConstC MathydroEnum
++syn keyword juliaConstC MatrixParamEnum
++syn keyword juliaConstC MaxAbsVxEnum
++syn keyword juliaConstC MaxAbsVyEnum
++syn keyword juliaConstC MaxAbsVzEnum
++syn keyword juliaConstC MaxDivergenceEnum
++syn keyword juliaConstC MaxVelEnum
++syn keyword juliaConstC MaxVxEnum
++syn keyword juliaConstC MaxVyEnum
++syn keyword juliaConstC MaxVzEnum
++syn keyword juliaConstC MelangeEnum
++syn keyword juliaConstC MeltingAnalysisEnum
++syn keyword juliaConstC MeshElementsEnum
++syn keyword juliaConstC MeshXEnum
++syn keyword juliaConstC MeshYEnum
++syn keyword juliaConstC MinVelEnum
++syn keyword juliaConstC MinVxEnum
++syn keyword juliaConstC MinVyEnum
++syn keyword juliaConstC MinVzEnum
++syn keyword juliaConstC MismipFloatingMeltRateEnum
++syn keyword juliaConstC MoulinEnum
++syn keyword juliaConstC MpiDenseEnum
++syn keyword juliaConstC MpiEnum
++syn keyword juliaConstC MpiSparseEnum
++syn keyword juliaConstC MumpsEnum
++syn keyword juliaConstC NoFrictionOnPartiallyFloatingEnum
++syn keyword juliaConstC NoMeltOnPartiallyFloatingEnum
++syn keyword juliaConstC NodalEnum
++syn keyword juliaConstC NodalvalueEnum
++syn keyword juliaConstC NodeSIdEnum
++syn keyword juliaConstC NoneApproximationEnum
++syn keyword juliaConstC NoneEnum
++syn keyword juliaConstC NumberedcostfunctionEnum
++syn keyword juliaConstC NyeCO2Enum
++syn keyword juliaConstC NyeH2OEnum
++syn keyword juliaConstC NumericalfluxEnum
++syn keyword juliaConstC OceantransportAnalysisEnum
++syn keyword juliaConstC OceantransportSolutionEnum
++syn keyword juliaConstC OldGradientEnum
++syn keyword juliaConstC OneLayerP4zEnum
++syn keyword juliaConstC OpenEnum
++syn keyword juliaConstC OptionEnum
++syn keyword juliaConstC ParamEnum
++syn keyword juliaConstC ParametersEnum
++syn keyword juliaConstC P0ArrayEnum
++syn keyword juliaConstC P0DGEnum
++syn keyword juliaConstC P1DGEnum
++syn keyword juliaConstC P1P1Enum
++syn keyword juliaConstC P1P1GLSEnum
++syn keyword juliaConstC P1bubbleEnum
++syn keyword juliaConstC P1bubblecondensedEnum
++syn keyword juliaConstC P1xP2Enum
++syn keyword juliaConstC P1xP3Enum
++syn keyword juliaConstC P1xP4Enum
++syn keyword juliaConstC P2Enum
++syn keyword juliaConstC P2bubbleEnum
++syn keyword juliaConstC P2bubblecondensedEnum
++syn keyword juliaConstC P2xP1Enum
++syn keyword juliaConstC P2xP4Enum
++syn keyword juliaConstC PatersonEnum
++syn keyword juliaConstC PengridEnum
++syn keyword juliaConstC PenpairEnum
++syn keyword juliaConstC PentaEnum
++syn keyword juliaConstC PentaInputEnum
++syn keyword juliaConstC ProfilerEnum
++syn keyword juliaConstC ProfilingCurrentFlopsEnum
++syn keyword juliaConstC ProfilingCurrentMemEnum
++syn keyword juliaConstC ProfilingSolutionTimeEnum
++syn keyword juliaConstC RegionaloutputEnum
++syn keyword juliaConstC RegularEnum
++syn keyword juliaConstC RecoveryAnalysisEnum
++syn keyword juliaConstC RiftfrontEnum
++syn keyword juliaConstC SamplingAnalysisEnum
++syn keyword juliaConstC SamplingSolutionEnum
++syn keyword juliaConstC SIAApproximationEnum
++syn keyword juliaConstC SMBautoregressionEnum
++syn keyword juliaConstC SMBcomponentsEnum
++syn keyword juliaConstC SMBd18opddEnum
++syn keyword juliaConstC SMBforcingEnum
++syn keyword juliaConstC SMBgcmEnum
++syn keyword juliaConstC SMBgembEnum
++syn keyword juliaConstC SMBgradientsEnum
++syn keyword juliaConstC SMBgradientscomponentsEnum
++syn keyword juliaConstC SMBgradientselaEnum
++syn keyword juliaConstC SMBhenningEnum
++syn keyword juliaConstC SMBmeltcomponentsEnum
++syn keyword juliaConstC SMBpddEnum
++syn keyword juliaConstC SMBpddSicopolisEnum
++syn keyword juliaConstC SMBsemicEnum
++syn keyword juliaConstC SSAApproximationEnum
++syn keyword juliaConstC SSAFSApproximationEnum
++syn keyword juliaConstC SSAHOApproximationEnum
++syn keyword juliaConstC ScaledEnum
++syn keyword juliaConstC SealevelAbsoluteEnum
++syn keyword juliaConstC SealevelEmotionEnum
++syn keyword juliaConstC SealevelchangePolarMotionXEnum
++syn keyword juliaConstC SealevelchangePolarMotionYEnum
++syn keyword juliaConstC SealevelchangePolarMotionZEnum
++syn keyword juliaConstC SealevelchangePolarMotionEnum
++syn keyword juliaConstC SealevelNmotionEnum
++syn keyword juliaConstC SealevelUmotionEnum
++syn keyword juliaConstC SealevelchangeAnalysisEnum
++syn keyword juliaConstC SegEnum
++syn keyword juliaConstC SegInputEnum
++syn keyword juliaConstC SegmentEnum
++syn keyword juliaConstC SegmentRiftfrontEnum
++syn keyword juliaConstC SeparateEnum
++syn keyword juliaConstC SeqEnum
++syn keyword juliaConstC SmbAnalysisEnum
++syn keyword juliaConstC SmbSolutionEnum
++syn keyword juliaConstC SmoothAnalysisEnum
++syn keyword juliaConstC SoftMigrationEnum
++syn keyword juliaConstC SpatialLinearFloatingMeltRateEnum
++syn keyword juliaConstC SpcDynamicEnum
++syn keyword juliaConstC SpcStaticEnum
++syn keyword juliaConstC SpcTransientEnum
++syn keyword juliaConstC SsetEnum
++syn keyword juliaConstC StatisticsSolutionEnum
++syn keyword juliaConstC SteadystateSolutionEnum
++syn keyword juliaConstC StressIntensityFactorEnum
++syn keyword juliaConstC StressbalanceAnalysisEnum
++syn keyword juliaConstC StressbalanceConvergenceNumStepsEnum
++syn keyword juliaConstC StressbalanceSIAAnalysisEnum
++syn keyword juliaConstC StressbalanceSolutionEnum
++syn keyword juliaConstC StressbalanceVerticalAnalysisEnum
++syn keyword juliaConstC StringArrayParamEnum
++syn keyword juliaConstC StringExternalResultEnum
++syn keyword juliaConstC StringParamEnum
++syn keyword juliaConstC SubelementFriction1Enum
++syn keyword juliaConstC SubelementFriction2Enum
++syn keyword juliaConstC SubelementMelt1Enum
++syn keyword juliaConstC SubelementMelt2Enum
++syn keyword juliaConstC SubelementMigrationEnum
++syn keyword juliaConstC SurfaceSlopeSolutionEnum
++syn keyword juliaConstC TaylorHoodEnum
++syn keyword juliaConstC TetraEnum
++syn keyword juliaConstC TetraInputEnum
++syn keyword juliaConstC ThermalAnalysisEnum
++syn keyword juliaConstC ThermalSolutionEnum
++syn keyword juliaConstC ThicknessErrorEstimatorEnum
++syn keyword juliaConstC TotalCalvingFluxLevelsetEnum
++syn keyword juliaConstC TotalCalvingMeltingFluxLevelsetEnum
++syn keyword juliaConstC TotalFloatingBmbEnum
++syn keyword juliaConstC TotalFloatingBmbScaledEnum
++syn keyword juliaConstC TotalGroundedBmbEnum
++syn keyword juliaConstC TotalGroundedBmbScaledEnum
++syn keyword juliaConstC TotalSmbEnum
++syn keyword juliaConstC TotalSmbScaledEnum
++syn keyword juliaConstC TransientArrayParamEnum
++syn keyword juliaConstC TransientInputEnum
++syn keyword juliaConstC TransientParamEnum
++syn keyword juliaConstC TransientSolutionEnum
++syn keyword juliaConstC TriaEnum
++syn keyword juliaConstC TriaInputEnum
++syn keyword juliaConstC UzawaPressureAnalysisEnum
++syn keyword juliaConstC VectorParamEnum
++syn keyword juliaConstC VertexEnum
++syn keyword juliaConstC VertexLIdEnum
++syn keyword juliaConstC VertexPIdEnum
++syn keyword juliaConstC VertexSIdEnum
++syn keyword juliaConstC VerticesEnum
++syn keyword juliaConstC ViscousHeatingEnum
++syn keyword juliaConstC WaterEnum
++syn keyword juliaConstC XTaylorHoodEnum
++syn keyword juliaConstC XYEnum
++syn keyword juliaConstC XYZEnum
++syn keyword juliaConstC BalancethicknessD0Enum
++syn keyword juliaConstC BalancethicknessDiffusionCoefficientEnum
++syn keyword juliaConstC BilinearInterpEnum
++syn keyword juliaConstC CalvingdevCoeffEnum
++syn keyword juliaConstC DeviatoricStressEnum
++syn keyword juliaConstC EtaAbsGradientEnum
++syn keyword juliaConstC MeshZEnum
++syn keyword juliaConstC NearestInterpEnum
++syn keyword juliaConstC OutputdefinitionListEnum
++syn keyword juliaConstC SealevelObsEnum
++syn keyword juliaConstC SealevelWeightsEnum
++syn keyword juliaConstC StrainRateEnum
++syn keyword juliaConstC StressTensorEnum
++syn keyword juliaConstC StressbalanceViscosityOvershootEnum
++syn keyword juliaConstC SubelementMigration4Enum
++syn keyword juliaConstC TimesteppingTimeAdaptEnum
++syn keyword juliaConstC TriangleInterpEnum
++syn keyword juliaConstC MaximumNumberOfDefinitionsEnum
++"ISSM Enums end
++syn keyword juliaConstC ParametersSTARTEnum
++syn keyword juliaConstC AdolcParamEnum
++syn keyword juliaConstC AgeStabilizationEnum
++syn keyword juliaConstC AgeNumRequestedOutputsEnum
++syn keyword juliaConstC AgeRequestedOutputsEnum
++syn keyword juliaConstC AmrDeviatoricErrorGroupThresholdEnum
++syn keyword juliaConstC AmrDeviatoricErrorMaximumEnum
++syn keyword juliaConstC AmrDeviatoricErrorResolutionEnum
++syn keyword juliaConstC AmrDeviatoricErrorThresholdEnum
++syn keyword juliaConstC AmrErrEnum
++syn keyword juliaConstC AmrFieldEnum
++syn keyword juliaConstC AmrGradationEnum
++syn keyword juliaConstC AmrGroundingLineDistanceEnum
++syn keyword juliaConstC AmrGroundingLineResolutionEnum
++syn keyword juliaConstC AmrHmaxEnum
++syn keyword juliaConstC AmrHminEnum
++syn keyword juliaConstC AmrIceFrontDistanceEnum
++syn keyword juliaConstC AmrIceFrontResolutionEnum
++syn keyword juliaConstC AmrKeepMetricEnum
++syn keyword juliaConstC AmrLagEnum
++syn keyword juliaConstC AmrLevelMaxEnum
++syn keyword juliaConstC AmrRestartEnum
++syn keyword juliaConstC AmrThicknessErrorGroupThresholdEnum
++syn keyword juliaConstC AmrThicknessErrorMaximumEnum
++syn keyword juliaConstC AmrThicknessErrorResolutionEnum
++syn keyword juliaConstC AmrThicknessErrorThresholdEnum
++syn keyword juliaConstC AmrTypeEnum
++syn keyword juliaConstC AnalysisCounterEnum
++syn keyword juliaConstC AnalysisTypeEnum
++syn keyword juliaConstC AugmentedLagrangianREnum
++syn keyword juliaConstC AugmentedLagrangianRholambdaEnum
++syn keyword juliaConstC AugmentedLagrangianRhopEnum
++syn keyword juliaConstC AugmentedLagrangianRlambdaEnum
++syn keyword juliaConstC AugmentedLagrangianThetaEnum
++syn keyword juliaConstC AutodiffCbufsizeEnum
++syn keyword juliaConstC AutodiffDependentObjectsEnum
++syn keyword juliaConstC AutodiffDriverEnum
++syn keyword juliaConstC AutodiffFosForwardIndexEnum
++syn keyword juliaConstC AutodiffFosReverseIndexEnum
++syn keyword juliaConstC AutodiffFovForwardIndicesEnum
++syn keyword juliaConstC AutodiffGcTriggerMaxSizeEnum
++syn keyword juliaConstC AutodiffGcTriggerRatioEnum
++syn keyword juliaConstC AutodiffIsautodiffEnum
++syn keyword juliaConstC AutodiffLbufsizeEnum
++syn keyword juliaConstC AutodiffNumDependentsEnum
++syn keyword juliaConstC AutodiffNumIndependentsEnum
++syn keyword juliaConstC AutodiffObufsizeEnum
++syn keyword juliaConstC AutodiffTapeAllocEnum
++syn keyword juliaConstC AutodiffTbufsizeEnum
++syn keyword juliaConstC AutodiffXpEnum
++syn keyword juliaConstC BalancethicknessStabilizationEnum
++syn keyword juliaConstC BarystaticContributionsEnum
++syn keyword juliaConstC BasalforcingsAutoregressionInitialTimeEnum
++syn keyword juliaConstC BasalforcingsAutoregressionTimestepEnum
++syn keyword juliaConstC BasalforcingsAutoregressiveOrderEnum
++syn keyword juliaConstC BasalforcingsBeta0Enum
++syn keyword juliaConstC BasalforcingsBeta1Enum
++syn keyword juliaConstC BasalforcingsBottomplumedepthEnum
++syn keyword juliaConstC BasalforcingsCrustthicknessEnum
++syn keyword juliaConstC BasalforcingsDeepwaterElevationEnum
++syn keyword juliaConstC BasalforcingsDeepwaterMeltingRateEnum
++syn keyword juliaConstC BasalforcingsDtbgEnum
++syn keyword juliaConstC BasalforcingsEnum
++syn keyword juliaConstC BasalforcingsIsmip6AverageTfEnum
++syn keyword juliaConstC BasalforcingsIsmip6BasinAreaEnum
++syn keyword juliaConstC BasalforcingsIsmip6DeltaTEnum
++syn keyword juliaConstC BasalforcingsIsmip6Gamma0Enum
++syn keyword juliaConstC BasalforcingsIsmip6IsLocalEnum
++syn keyword juliaConstC BasalforcingsIsmip6NumBasinsEnum
++syn keyword juliaConstC BasalforcingsIsmip6TfDepthsEnum
++syn keyword juliaConstC BasalforcingsLinearNumBasinsEnum
++syn keyword juliaConstC BasalforcingsLowercrustheatEnum
++syn keyword juliaConstC BasalforcingsMantleconductivityEnum
++syn keyword juliaConstC BasalforcingsNusseltEnum
++syn keyword juliaConstC BasalforcingsPhiEnum
++syn keyword juliaConstC BasalforcingsPicoAverageOverturningEnum
++syn keyword juliaConstC BasalforcingsPicoAverageSalinityEnum
++syn keyword juliaConstC BasalforcingsPicoAverageTemperatureEnum
++syn keyword juliaConstC BasalforcingsPicoBoxAreaEnum
++syn keyword juliaConstC BasalforcingsPicoFarOceansalinityEnum
++syn keyword juliaConstC BasalforcingsPicoFarOceantemperatureEnum
++syn keyword juliaConstC BasalforcingsPicoGammaTEnum
++syn keyword juliaConstC BasalforcingsPicoIsplumeEnum
++syn keyword juliaConstC BasalforcingsPicoMaxboxcountEnum
++syn keyword juliaConstC BasalforcingsPicoNumBasinsEnum
++syn keyword juliaConstC BasalforcingsPlumeradiusEnum
++syn keyword juliaConstC BasalforcingsPlumexEnum
++syn keyword juliaConstC BasalforcingsPlumeyEnum
++syn keyword juliaConstC BasalforcingsThresholdThicknessEnum
++syn keyword juliaConstC BasalforcingsTopplumedepthEnum
++syn keyword juliaConstC BasalforcingsUppercrustheatEnum
++syn keyword juliaConstC BasalforcingsUppercrustthicknessEnum
++syn keyword juliaConstC BasalforcingsUpperdepthMeltEnum
++syn keyword juliaConstC BasalforcingsUpperwaterElevationEnum
++syn keyword juliaConstC BasalforcingsUpperwaterMeltingRateEnum
++syn keyword juliaConstC CalvingCrevasseDepthEnum
++syn keyword juliaConstC CalvingCrevasseThresholdEnum
++syn keyword juliaConstC CalvingHeightAboveFloatationEnum
++syn keyword juliaConstC CalvingLawEnum
++syn keyword juliaConstC CalvingMinthicknessEnum
++syn keyword juliaConstC CalvingTestSpeedfactorEnum
++syn keyword juliaConstC CalvingTestIndependentRateEnum
++syn keyword juliaConstC CalvingUseParamEnum
++syn keyword juliaConstC CalvingThetaEnum
++syn keyword juliaConstC CalvingAlphaEnum
++syn keyword juliaConstC CalvingXoffsetEnum
++syn keyword juliaConstC CalvingYoffsetEnum
++syn keyword juliaConstC ConfigurationTypeEnum
++syn keyword juliaConstC ConstantsGEnum
++syn keyword juliaConstC ConstantsNewtonGravityEnum
++syn keyword juliaConstC ConstantsReferencetemperatureEnum
++syn keyword juliaConstC ConstantsYtsEnum
++syn keyword juliaConstC ControlInputSizeMEnum
++syn keyword juliaConstC ControlInputSizeNEnum
++syn keyword juliaConstC ControlInputInterpolationEnum
++syn keyword juliaConstC CumBslcEnum
++syn keyword juliaConstC CumBslcIceEnum
++syn keyword juliaConstC CumBslcHydroEnum
++syn keyword juliaConstC CumBslcOceanEnum
++syn keyword juliaConstC CumBslcIcePartitionEnum
++syn keyword juliaConstC CumBslcHydroPartitionEnum
++syn keyword juliaConstC CumBslcOceanPartitionEnum
++syn keyword juliaConstC CumGmtslcEnum
++syn keyword juliaConstC CumGmslcEnum
++syn keyword juliaConstC DamageC1Enum
++syn keyword juliaConstC DamageC2Enum
++syn keyword juliaConstC DamageC3Enum
++syn keyword juliaConstC DamageC4Enum
++syn keyword juliaConstC DamageEnum
++syn keyword juliaConstC DamageEquivStressEnum
++syn keyword juliaConstC DamageEvolutionNumRequestedOutputsEnum
++syn keyword juliaConstC DamageEvolutionRequestedOutputsEnum
++syn keyword juliaConstC DamageHealingEnum
++syn keyword juliaConstC DamageKappaEnum
++syn keyword juliaConstC DamageLawEnum
++syn keyword juliaConstC DamageMaxDamageEnum
++syn keyword juliaConstC DamageStabilizationEnum
++syn keyword juliaConstC DamageStressThresholdEnum
++syn keyword juliaConstC DamageStressUBoundEnum
++syn keyword juliaConstC DebugProfilingEnum
++syn keyword juliaConstC DomainDimensionEnum
++syn keyword juliaConstC DomainTypeEnum
++syn keyword juliaConstC DslModelEnum
++syn keyword juliaConstC DslModelidEnum
++syn keyword juliaConstC DslNummodelsEnum
++syn keyword juliaConstC SolidearthIsExternalEnum
++syn keyword juliaConstC SolidearthExternalNatureEnum
++syn keyword juliaConstC SolidearthExternalModelidEnum
++syn keyword juliaConstC SolidearthExternalNummodelsEnum
++syn keyword juliaConstC SolidearthSettingsComputeBpGrdEnum
++syn keyword juliaConstC EarthIdEnum
++syn keyword juliaConstC ElasticEnum
++syn keyword juliaConstC EplZigZagCounterEnum
++syn keyword juliaConstC EsaHElasticEnum
++syn keyword juliaConstC EsaHemisphereEnum
++syn keyword juliaConstC EsaRequestedOutputsEnum
++syn keyword juliaConstC EsaUElasticEnum
++syn keyword juliaConstC ExtrapolationVariableEnum
++syn keyword juliaConstC FemModelCommEnum
++syn keyword juliaConstC FieldsEnum
++syn keyword juliaConstC FlowequationFeFSEnum
++syn keyword juliaConstC FlowequationIsFSEnum
++syn keyword juliaConstC FlowequationIsHOEnum
++syn keyword juliaConstC FlowequationIsL1L2Enum
++syn keyword juliaConstC FlowequationIsMOLHOEnum
++syn keyword juliaConstC FlowequationIsSIAEnum
++syn keyword juliaConstC FlowequationIsSSAEnum
++syn keyword juliaConstC FlowequationIsNitscheEnum
++syn keyword juliaConstC FeFSNitscheGammaEnum
++syn keyword juliaConstC FrictionCouplingEnum
++syn keyword juliaConstC FrictionDeltaEnum
++syn keyword juliaConstC FrictionEffectivePressureLimitEnum
++syn keyword juliaConstC FrictionFEnum
++syn keyword juliaConstC FrictionGammaEnum
++syn keyword juliaConstC FrictionLawEnum
++syn keyword juliaConstC FrictionPseudoplasticityExponentEnum
++syn keyword juliaConstC FrictionThresholdSpeedEnum
++syn keyword juliaConstC FrictionVoidRatioEnum
++syn keyword juliaConstC FrontalForcingsBasinIcefrontAreaEnum
++syn keyword juliaConstC FrontalForcingsAutoregressionInitialTimeEnum
++syn keyword juliaConstC FrontalForcingsAutoregressionTimestepEnum
++syn keyword juliaConstC FrontalForcingsAutoregressiveOrderEnum
++syn keyword juliaConstC FrontalForcingsBeta0Enum
++syn keyword juliaConstC FrontalForcingsBeta1Enum
++syn keyword juliaConstC FrontalForcingsNumberofBasinsEnum
++syn keyword juliaConstC FrontalForcingsParamEnum
++syn keyword juliaConstC FrontalForcingsPhiEnum
++syn keyword juliaConstC GrdModelEnum
++syn keyword juliaConstC GroundinglineFrictionInterpolationEnum
++syn keyword juliaConstC GroundinglineMeltInterpolationEnum
++syn keyword juliaConstC GroundinglineMigrationEnum
++syn keyword juliaConstC GroundinglineNumRequestedOutputsEnum
++syn keyword juliaConstC GroundinglineRequestedOutputsEnum
++syn keyword juliaConstC HydrologyAveragingEnum
++syn keyword juliaConstC HydrologyCavitySpacingEnum
++syn keyword juliaConstC HydrologyChannelConductivityEnum
++syn keyword juliaConstC HydrologyChannelSheetWidthEnum
++syn keyword juliaConstC HydrologyEnglacialVoidRatioEnum
++syn keyword juliaConstC HydrologyIschannelsEnum
++syn keyword juliaConstC HydrologyMeltFlagEnum
++syn keyword juliaConstC HydrologyModelEnum
++syn keyword juliaConstC HydrologyNumRequestedOutputsEnum
++syn keyword juliaConstC HydrologyPressureMeltCoefficientEnum
++syn keyword juliaConstC HydrologyRelaxationEnum
++syn keyword juliaConstC HydrologyRequestedOutputsEnum
++syn keyword juliaConstC HydrologySedimentKmaxEnum
++syn keyword juliaConstC HydrologyStepsPerStepEnum
++syn keyword juliaConstC HydrologyStorageEnum
++syn keyword juliaConstC HydrologydcEplColapseThicknessEnum
++syn keyword juliaConstC HydrologydcEplConductivityEnum
++syn keyword juliaConstC HydrologydcEplInitialThicknessEnum
++syn keyword juliaConstC HydrologydcEplLayerCompressibilityEnum
++syn keyword juliaConstC HydrologydcEplMaxThicknessEnum
++syn keyword juliaConstC HydrologydcEplPoreWaterMassEnum
++syn keyword juliaConstC HydrologydcEplThickCompEnum
++syn keyword juliaConstC HydrologydcEplflipLockEnum
++syn keyword juliaConstC HydrologydcIsefficientlayerEnum
++syn keyword juliaConstC HydrologydcLeakageFactorEnum
++syn keyword juliaConstC HydrologydcMaxIterEnum
++syn keyword juliaConstC HydrologydcPenaltyFactorEnum
++syn keyword juliaConstC HydrologydcPenaltyLockEnum
++syn keyword juliaConstC HydrologydcRelTolEnum
++syn keyword juliaConstC HydrologydcSedimentlimitEnum
++syn keyword juliaConstC HydrologydcSedimentlimitFlagEnum
++syn keyword juliaConstC HydrologydcSedimentLayerCompressibilityEnum
++syn keyword juliaConstC HydrologydcSedimentPoreWaterMassEnum
++syn keyword juliaConstC HydrologydcSedimentPorosityEnum
++syn keyword juliaConstC HydrologydcSedimentThicknessEnum
++syn keyword juliaConstC HydrologyStepAdaptEnum
++syn keyword juliaConstC HydrologydcTransferFlagEnum
++syn keyword juliaConstC HydrologydcUnconfinedFlagEnum
++syn keyword juliaConstC HydrologyshreveStabilizationEnum
++syn keyword juliaConstC IcecapToEarthCommEnum
++syn keyword juliaConstC IndexEnum
++syn keyword juliaConstC InputFileNameEnum
++syn keyword juliaConstC DirectoryNameEnum
++syn keyword juliaConstC IndicesEnum
++syn keyword juliaConstC InputToDepthaverageInEnum
++syn keyword juliaConstC InputToDepthaverageOutEnum
++syn keyword juliaConstC InputToExtrudeEnum
++syn keyword juliaConstC InputToL2ProjectEnum
++syn keyword juliaConstC InputToSmoothEnum
++syn keyword juliaConstC InversionAlgorithmEnum
++syn keyword juliaConstC InversionControlParametersEnum
++syn keyword juliaConstC InversionControlScalingFactorsEnum
++syn keyword juliaConstC InversionCostFunctionsEnum
++syn keyword juliaConstC InversionDxminEnum
++syn keyword juliaConstC InversionGatolEnum
++syn keyword juliaConstC InversionGradientScalingEnum
++syn keyword juliaConstC InversionGrtolEnum
++syn keyword juliaConstC InversionGttolEnum
++syn keyword juliaConstC InversionIncompleteAdjointEnum
++syn keyword juliaConstC InversionIscontrolEnum
++syn keyword juliaConstC InversionMaxiterEnum
++syn keyword juliaConstC InversionMaxiterPerStepEnum
++syn keyword juliaConstC InversionMaxstepsEnum
++syn keyword juliaConstC InversionNstepsEnum
++syn keyword juliaConstC InversionNumControlParametersEnum
++syn keyword juliaConstC InversionNumCostFunctionsEnum
++syn keyword juliaConstC InversionStepThresholdEnum
++syn keyword juliaConstC InversionTypeEnum
++syn keyword juliaConstC IvinsEnum
++syn keyword juliaConstC IsSlcCouplingEnum
++syn keyword juliaConstC LevelsetKillIcebergsEnum
++syn keyword juliaConstC LevelsetReinitFrequencyEnum
++syn keyword juliaConstC LevelsetStabilizationEnum
++syn keyword juliaConstC LockFileNameEnum
++syn keyword juliaConstC LoveAllowLayerDeletionEnum
++syn keyword juliaConstC LoveChandlerWobbleEnum
++syn keyword juliaConstC LoveCoreMantleBoundaryEnum
++syn keyword juliaConstC LoveEarthMassEnum
++syn keyword juliaConstC LoveForcingTypeEnum
++syn keyword juliaConstC LoveFrequenciesEnum
++syn keyword juliaConstC LoveIsTemporalEnum
++syn keyword juliaConstC LoveG0Enum
++syn keyword juliaConstC LoveGravitationalConstantEnum
++syn keyword juliaConstC LoveInnerCoreBoundaryEnum
++syn keyword juliaConstC LoveComplexComputationEnum
++syn keyword juliaConstC LoveQuadPrecisionEnum
++syn keyword juliaConstC LoveIntStepsPerLayerEnum
++syn keyword juliaConstC LoveMinIntegrationStepsEnum
++syn keyword juliaConstC LoveMaxIntegrationdrEnum
++syn keyword juliaConstC LoveKernelsEnum
++syn keyword juliaConstC LoveMu0Enum
++syn keyword juliaConstC LoveNfreqEnum
++syn keyword juliaConstC LoveNTemporalIterationsEnum
++syn keyword juliaConstC LoveNYiEquationsEnum
++syn keyword juliaConstC LoveR0Enum
++syn keyword juliaConstC LoveShNmaxEnum
++syn keyword juliaConstC LoveShNminEnum
++syn keyword juliaConstC LoveStartingLayerEnum
++syn keyword juliaConstC LoveUnderflowTolEnum
++syn keyword juliaConstC LovePostWidderThresholdEnum
++syn keyword juliaConstC LoveDebugEnum
++syn keyword juliaConstC LoveHypergeomNZEnum
++syn keyword juliaConstC LoveHypergeomNAlphaEnum
++syn keyword juliaConstC MassFluxSegmentsEnum
++syn keyword juliaConstC MassFluxSegmentsPresentEnum
++syn keyword juliaConstC MasstransportHydrostaticAdjustmentEnum
++syn keyword juliaConstC MasstransportIsfreesurfaceEnum
++syn keyword juliaConstC MasstransportMinThicknessEnum
++syn keyword juliaConstC MasstransportNumRequestedOutputsEnum
++syn keyword juliaConstC MasstransportPenaltyFactorEnum
++syn keyword juliaConstC MasstransportRequestedOutputsEnum
++syn keyword juliaConstC MasstransportStabilizationEnum
++syn keyword juliaConstC MaterialsBetaEnum
++syn keyword juliaConstC MaterialsEarthDensityEnum
++syn keyword juliaConstC MaterialsEffectiveconductivityAveragingEnum
++syn keyword juliaConstC MaterialsHeatcapacityEnum
++syn keyword juliaConstC MaterialsLatentheatEnum
++syn keyword juliaConstC MaterialsMeltingpointEnum
++syn keyword juliaConstC MaterialsMixedLayerCapacityEnum
++syn keyword juliaConstC MaterialsMuWaterEnum
++syn keyword juliaConstC MaterialsRheologyLawEnum
++syn keyword juliaConstC MaterialsRhoFreshwaterEnum
++syn keyword juliaConstC MaterialsRhoIceEnum
++syn keyword juliaConstC MaterialsRhoSeawaterEnum
++syn keyword juliaConstC MaterialsTemperateiceconductivityEnum
++syn keyword juliaConstC MaterialsThermalExchangeVelocityEnum
++syn keyword juliaConstC MaterialsThermalconductivityEnum
++syn keyword juliaConstC MeltingOffsetEnum
++syn keyword juliaConstC MeshAverageVertexConnectivityEnum
++syn keyword juliaConstC MeshElementtypeEnum
++syn keyword juliaConstC MeshNumberoflayersEnum
++syn keyword juliaConstC MeshNumberofverticesEnum
++syn keyword juliaConstC MeshNumberofelementsEnum
++syn keyword juliaConstC MigrationMaxEnum
++syn keyword juliaConstC ModelIdEnum
++syn keyword juliaConstC NbinsEnum
++syn keyword juliaConstC NodesEnum
++syn keyword juliaConstC NumModelsEnum
++syn keyword juliaConstC OceanGridNxEnum
++syn keyword juliaConstC OceanGridNyEnum
++syn keyword juliaConstC OceanGridXEnum
++syn keyword juliaConstC OceanGridYEnum
++syn keyword juliaConstC OutputBufferPointerEnum
++syn keyword juliaConstC OutputBufferSizePointerEnum
++syn keyword juliaConstC OutputFileNameEnum
++syn keyword juliaConstC OutputFilePointerEnum
++syn keyword juliaConstC OutputdefinitionEnum
++syn keyword juliaConstC QmuErrNameEnum
++syn keyword juliaConstC QmuInNameEnum
++syn keyword juliaConstC QmuIsdakotaEnum
++syn keyword juliaConstC QmuOutNameEnum
++syn keyword juliaConstC QmuOutputEnum
++syn keyword juliaConstC QmuCurrEvalIdEnum
++syn keyword juliaConstC QmuNsampleEnum
++syn keyword juliaConstC QmuResponsedescriptorsEnum
++syn keyword juliaConstC QmuVariableDescriptorsEnum
++syn keyword juliaConstC QmuVariablePartitionsEnum
++syn keyword juliaConstC QmuVariablePartitionsNpartEnum
++syn keyword juliaConstC QmuVariablePartitionsNtEnum
++syn keyword juliaConstC QmuResponsePartitionsEnum
++syn keyword juliaConstC QmuResponsePartitionsNpartEnum
++syn keyword juliaConstC QmuStatisticsEnum
++syn keyword juliaConstC QmuNumstatisticsEnum
++syn keyword juliaConstC QmuNdirectoriesEnum
++syn keyword juliaConstC QmuNfilesPerDirectoryEnum
++syn keyword juliaConstC QmuStatisticsMethodEnum
++syn keyword juliaConstC QmuMethodsEnum
++syn keyword juliaConstC RestartFileNameEnum
++syn keyword juliaConstC ResultsEnum
++syn keyword juliaConstC RootPathEnum
++syn keyword juliaConstC ModelnameEnum
++syn keyword juliaConstC SamplingAlphaEnum
++syn keyword juliaConstC SamplingNumRequestedOutputsEnum
++syn keyword juliaConstC SamplingRequestedOutputsEnum
++syn keyword juliaConstC SamplingRobinEnum
++syn keyword juliaConstC SamplingSeedEnum
++syn keyword juliaConstC SaveResultsEnum
++syn keyword juliaConstC SolidearthPartitionIceEnum
++syn keyword juliaConstC SolidearthPartitionHydroEnum
++syn keyword juliaConstC SolidearthPartitionOceanEnum
++syn keyword juliaConstC SolidearthNpartIceEnum
++syn keyword juliaConstC SolidearthNpartOceanEnum
++syn keyword juliaConstC SolidearthNpartHydroEnum
++syn keyword juliaConstC SolidearthPlanetRadiusEnum
++syn keyword juliaConstC SolidearthPlanetAreaEnum
++syn keyword juliaConstC SolidearthSettingsAbstolEnum
++syn keyword juliaConstC SolidearthSettingsCrossSectionShapeEnum
++syn keyword juliaConstC SolidearthSettingsElasticEnum
++syn keyword juliaConstC SolidearthSettingsViscousEnum
++syn keyword juliaConstC SolidearthSettingsSatelliteGraviEnum
++syn keyword juliaConstC SolidearthSettingsDegreeAccuracyEnum
++syn keyword juliaConstC SealevelchangeGeometryDoneEnum
++syn keyword juliaConstC SealevelchangeViscousNumStepsEnum
++syn keyword juliaConstC SealevelchangeViscousTimesEnum
++syn keyword juliaConstC SealevelchangeViscousIndexEnum
++syn keyword juliaConstC SealevelchangeViscousPolarMotionEnum
++syn keyword juliaConstC SealevelchangeRunCountEnum
++syn keyword juliaConstC SealevelchangeTransitionsEnum
++syn keyword juliaConstC SealevelchangeRequestedOutputsEnum
++syn keyword juliaConstC RotationalAngularVelocityEnum
++syn keyword juliaConstC RotationalEquatorialMoiEnum
++syn keyword juliaConstC RotationalPolarMoiEnum
++syn keyword juliaConstC LovePolarMotionTransferFunctionColinearEnum
++syn keyword juliaConstC LovePolarMotionTransferFunctionOrthogonalEnum
++syn keyword juliaConstC TidalLoveHEnum
++syn keyword juliaConstC TidalLoveKEnum
++syn keyword juliaConstC TidalLoveLEnum
++syn keyword juliaConstC TidalLoveK2SecularEnum
++syn keyword juliaConstC LoadLoveHEnum
++syn keyword juliaConstC LoadLoveKEnum
++syn keyword juliaConstC LoadLoveLEnum
++syn keyword juliaConstC LoveTimeFreqEnum
++syn keyword juliaConstC LoveIsTimeEnum
++syn keyword juliaConstC LoveHypergeomZEnum
++syn keyword juliaConstC LoveHypergeomTable1Enum
++syn keyword juliaConstC LoveHypergeomTable2Enum
++syn keyword juliaConstC SealevelchangeGSelfAttractionEnum
++syn keyword juliaConstC SealevelchangeGViscoElasticEnum
++syn keyword juliaConstC SealevelchangeUViscoElasticEnum
++syn keyword juliaConstC SealevelchangeHViscoElasticEnum
++syn keyword juliaConstC SealevelchangePolarMotionTransferFunctionColinearEnum
++syn keyword juliaConstC SealevelchangePolarMotionTransferFunctionOrthogonalEnum
++syn keyword juliaConstC SealevelchangePolarMotionTransferFunctionZEnum
++syn keyword juliaConstC SealevelchangeTidalK2Enum
++syn keyword juliaConstC SealevelchangeTidalH2Enum
++syn keyword juliaConstC SealevelchangeTidalL2Enum
++syn keyword juliaConstC SolidearthSettingsSealevelLoadingEnum
++syn keyword juliaConstC SolidearthSettingsGRDEnum
++syn keyword juliaConstC SolidearthSettingsRunFrequencyEnum
++syn keyword juliaConstC SolidearthSettingsTimeAccEnum
++syn keyword juliaConstC SolidearthSettingsHorizEnum
++syn keyword juliaConstC SolidearthSettingsMaxiterEnum
++syn keyword juliaConstC SolidearthSettingsGrdOceanEnum
++syn keyword juliaConstC SolidearthSettingsOceanAreaScalingEnum
++syn keyword juliaConstC StochasticForcingCovarianceEnum
++syn keyword juliaConstC StochasticForcingDefaultDimensionEnum
++syn keyword juliaConstC StochasticForcingDimensionsEnum
++syn keyword juliaConstC StochasticForcingFieldsEnum
++syn keyword juliaConstC StochasticForcingIsEffectivePressureEnum
++syn keyword juliaConstC StochasticForcingIsStochasticForcingEnum
++syn keyword juliaConstC StochasticForcingIsWaterPressureEnum
++syn keyword juliaConstC StochasticForcingNoisetermsEnum
++syn keyword juliaConstC StochasticForcingNumFieldsEnum
++syn keyword juliaConstC StochasticForcingRandomflagEnum
++syn keyword juliaConstC StochasticForcingTimestepEnum
++syn keyword juliaConstC SolidearthSettingsReltolEnum
++syn keyword juliaConstC SolidearthSettingsSelfAttractionEnum
++syn keyword juliaConstC SolidearthSettingsRotationEnum
++syn keyword juliaConstC SolidearthSettingsMaxSHCoeffEnum
++syn keyword juliaConstC SettingsIoGatherEnum
++syn keyword juliaConstC SettingsNumResultsOnNodesEnum
++syn keyword juliaConstC SettingsOutputFrequencyEnum
++syn keyword juliaConstC SettingsCheckpointFrequencyEnum
++syn keyword juliaConstC SettingsResultsOnNodesEnum
++syn keyword juliaConstC SettingsSbCouplingFrequencyEnum
++syn keyword juliaConstC SettingsSolverResidueThresholdEnum
++syn keyword juliaConstC SettingsWaitonlockEnum
++syn keyword juliaConstC SmbAIceEnum
++syn keyword juliaConstC SmbAIdxEnum
++syn keyword juliaConstC SmbASnowEnum
++syn keyword juliaConstC SmbAccualtiEnum
++syn keyword juliaConstC SmbAccugradEnum
++syn keyword juliaConstC SmbAccurefEnum
++syn keyword juliaConstC SmbAdThreshEnum
++syn keyword juliaConstC SmbAutoregressionInitialTimeEnum
++syn keyword juliaConstC SmbAutoregressionTimestepEnum
++syn keyword juliaConstC SmbAutoregressiveOrderEnum
++syn keyword juliaConstC SmbAveragingEnum
++syn keyword juliaConstC SmbBeta0Enum
++syn keyword juliaConstC SmbBeta1Enum
++syn keyword juliaConstC SmbDesfacEnum
++syn keyword juliaConstC SmbDpermilEnum
++syn keyword juliaConstC SmbDsnowIdxEnum
++syn keyword juliaConstC SmbElevationBinsEnum
++syn keyword juliaConstC SmbCldFracEnum
++syn keyword juliaConstC SmbDelta18oEnum
++syn keyword juliaConstC SmbDelta18oSurfaceEnum
++syn keyword juliaConstC SmbDenIdxEnum
++syn keyword juliaConstC SmbDtEnum
++syn keyword juliaConstC SmbEnum
++syn keyword juliaConstC SmbEIdxEnum
++syn keyword juliaConstC SmbFEnum
++syn keyword juliaConstC SmbInitDensityScalingEnum
++syn keyword juliaConstC SmbIsaccumulationEnum
++syn keyword juliaConstC SmbIsalbedoEnum
++syn keyword juliaConstC SmbIsconstrainsurfaceTEnum
++syn keyword juliaConstC SmbIsd18opdEnum
++syn keyword juliaConstC SmbIsdelta18oEnum
++syn keyword juliaConstC SmbIsdensificationEnum
++syn keyword juliaConstC SmbIsdeltaLWupEnum
++syn keyword juliaConstC SmbIsfirnwarmingEnum
++syn keyword juliaConstC SmbIsgraingrowthEnum
++syn keyword juliaConstC SmbIsmeltEnum
++syn keyword juliaConstC SmbIsmungsmEnum
++syn keyword juliaConstC SmbIsprecipscaledEnum
++syn keyword juliaConstC SmbIssetpddfacEnum
++syn keyword juliaConstC SmbIsshortwaveEnum
++syn keyword juliaConstC SmbIstemperaturescaledEnum
++syn keyword juliaConstC SmbIsthermalEnum
++syn keyword juliaConstC SmbIsturbulentfluxEnum
++syn keyword juliaConstC SmbKEnum
++syn keyword juliaConstC SmbLapseRatesEnum
++syn keyword juliaConstC SmbNumBasinsEnum
++syn keyword juliaConstC SmbNumElevationBinsEnum
++syn keyword juliaConstC SmbNumRequestedOutputsEnum
++syn keyword juliaConstC SmbPfacEnum
++syn keyword juliaConstC SmbPhiEnum
++syn keyword juliaConstC SmbRdlEnum
++syn keyword juliaConstC SmbRefElevationEnum
++syn keyword juliaConstC SmbRequestedOutputsEnum
++syn keyword juliaConstC SmbRlapsEnum
++syn keyword juliaConstC SmbRlapslgmEnum
++syn keyword juliaConstC SmbRunoffaltiEnum
++syn keyword juliaConstC SmbRunoffgradEnum
++syn keyword juliaConstC SmbRunoffrefEnum
++syn keyword juliaConstC SmbSealevEnum
++syn keyword juliaConstC SmbStepsPerStepEnum
++syn keyword juliaConstC SmbSwIdxEnum
++syn keyword juliaConstC SmbT0dryEnum
++syn keyword juliaConstC SmbT0wetEnum
++syn keyword juliaConstC SmbTeThreshEnum
++syn keyword juliaConstC SmbTdiffEnum
++syn keyword juliaConstC SmbThermoDeltaTScalingEnum
++syn keyword juliaConstC SmbTemperaturesReconstructedYearsEnum
++syn keyword juliaConstC SmbPrecipitationsReconstructedYearsEnum
++syn keyword juliaConstC SmoothThicknessMultiplierEnum
++syn keyword juliaConstC SolutionTypeEnum
++syn keyword juliaConstC SteadystateMaxiterEnum
++syn keyword juliaConstC SteadystateNumRequestedOutputsEnum
++syn keyword juliaConstC SteadystateReltolEnum
++syn keyword juliaConstC SteadystateRequestedOutputsEnum
++syn keyword juliaConstC StepEnum
++syn keyword juliaConstC StepsEnum
++syn keyword juliaConstC StressbalanceAbstolEnum
++syn keyword juliaConstC StressbalanceFSreconditioningEnum
++syn keyword juliaConstC StressbalanceIsnewtonEnum
++syn keyword juliaConstC StressbalanceMaxiterEnum
++syn keyword juliaConstC StressbalanceNumRequestedOutputsEnum
++syn keyword juliaConstC StressbalancePenaltyFactorEnum
++syn keyword juliaConstC StressbalanceReltolEnum
++syn keyword juliaConstC StressbalanceRequestedOutputsEnum
++syn keyword juliaConstC StressbalanceRestolEnum
++syn keyword juliaConstC StressbalanceRiftPenaltyThresholdEnum
++syn keyword juliaConstC StressbalanceShelfDampeningEnum
++syn keyword juliaConstC ThermalIsdrainicecolumnEnum
++syn keyword juliaConstC ThermalIsdynamicbasalspcEnum
++syn keyword juliaConstC ThermalIsenthalpyEnum
++syn keyword juliaConstC ThermalMaxiterEnum
++syn keyword juliaConstC ThermalNumRequestedOutputsEnum
++syn keyword juliaConstC ThermalPenaltyFactorEnum
++syn keyword juliaConstC ThermalPenaltyLockEnum
++syn keyword juliaConstC ThermalPenaltyThresholdEnum
++syn keyword juliaConstC ThermalReltolEnum
++syn keyword juliaConstC ThermalRequestedOutputsEnum
++syn keyword juliaConstC ThermalStabilizationEnum
++syn keyword juliaConstC ThermalWatercolumnUpperlimitEnum
++syn keyword juliaConstC TimeEnum
++syn keyword juliaConstC TimesteppingAverageForcingEnum
++syn keyword juliaConstC TimesteppingCflCoefficientEnum
++syn keyword juliaConstC TimesteppingCouplingTimeEnum
++syn keyword juliaConstC TimesteppingFinalTimeEnum
++syn keyword juliaConstC TimesteppingInterpForcingEnum
++syn keyword juliaConstC TimesteppingCycleForcingEnum
++syn keyword juliaConstC TimesteppingStartTimeEnum
++syn keyword juliaConstC TimesteppingTimeStepEnum
++syn keyword juliaConstC TimesteppingTimeStepMaxEnum
++syn keyword juliaConstC TimesteppingTimeStepMinEnum
++syn keyword juliaConstC TimesteppingTypeEnum
++syn keyword juliaConstC ToMITgcmCommEnum
++syn keyword juliaConstC ToolkitsFileNameEnum
++syn keyword juliaConstC ToolkitsOptionsAnalysesEnum
++syn keyword juliaConstC ToolkitsOptionsStringsEnum
++syn keyword juliaConstC ToolkitsTypesEnum
++syn keyword juliaConstC TransientAmrFrequencyEnum
++syn keyword juliaConstC TransientIsageEnum
++syn keyword juliaConstC TransientIsdamageevolutionEnum
++syn keyword juliaConstC TransientIsesaEnum
++syn keyword juliaConstC TransientIsgiaEnum
++syn keyword juliaConstC TransientIsgroundinglineEnum
++syn keyword juliaConstC TransientIshydrologyEnum
++syn keyword juliaConstC TransientIsmasstransportEnum
++syn keyword juliaConstC TransientIsoceantransportEnum
++syn keyword juliaConstC TransientIsmovingfrontEnum
++syn keyword juliaConstC TransientIsoceancouplingEnum
++syn keyword juliaConstC TransientIssamplingEnum
++syn keyword juliaConstC TransientIsslcEnum
++syn keyword juliaConstC TransientIssmbEnum
++syn keyword juliaConstC TransientIsstressbalanceEnum
++syn keyword juliaConstC TransientIsthermalEnum
++syn keyword juliaConstC TransientNumRequestedOutputsEnum
++syn keyword juliaConstC TransientRequestedOutputsEnum
++syn keyword juliaConstC VelocityEnum
++syn keyword juliaConstC XxeEnum
++syn keyword juliaConstC YyeEnum
++syn keyword juliaConstC ZzeEnum
++syn keyword juliaConstC AreaeEnum
++syn keyword juliaConstC WorldCommEnum
++syn keyword juliaConstC ParametersENDEnum
++syn keyword juliaConstC InputsSTARTEnum
++syn keyword juliaConstC AccumulatedDeltaBottomPressureEnum
++syn keyword juliaConstC AccumulatedDeltaIceThicknessEnum
++syn keyword juliaConstC AccumulatedDeltaTwsEnum
++syn keyword juliaConstC AdjointEnum
++syn keyword juliaConstC AdjointpEnum
++syn keyword juliaConstC AdjointxEnum
++syn keyword juliaConstC AdjointxBaseEnum
++syn keyword juliaConstC AdjointxShearEnum
++syn keyword juliaConstC AdjointyEnum
++syn keyword juliaConstC AdjointyBaseEnum
++syn keyword juliaConstC AdjointyShearEnum
++syn keyword juliaConstC AdjointzEnum
++syn keyword juliaConstC AgeEnum
++syn keyword juliaConstC AirEnum
++syn keyword juliaConstC ApproximationEnum
++syn keyword juliaConstC BalancethicknessMisfitEnum
++syn keyword juliaConstC BalancethicknessOmega0Enum
++syn keyword juliaConstC BalancethicknessOmegaEnum
++syn keyword juliaConstC BalancethicknessSpcthicknessEnum
++syn keyword juliaConstC BalancethicknessThickeningRateEnum
++syn keyword juliaConstC BasalCrevasseEnum
++syn keyword juliaConstC BasalforcingsDeepwaterMeltingRateAutoregressionEnum
++syn keyword juliaConstC BasalforcingsDeepwaterMeltingRateNoiseEnum
++syn keyword juliaConstC BasalforcingsDeepwaterMeltingRateValuesAutoregressionEnum
++syn keyword juliaConstC BasalforcingsFloatingiceMeltingRateEnum
++syn keyword juliaConstC BasalforcingsGeothermalfluxEnum
++syn keyword juliaConstC BasalforcingsGroundediceMeltingRateEnum
++syn keyword juliaConstC BasalforcingsLinearBasinIdEnum
++syn keyword juliaConstC BasalforcingsPerturbationMeltingRateEnum
++syn keyword juliaConstC BasalforcingsSpatialDeepwaterElevationEnum
++syn keyword juliaConstC BasalforcingsSpatialDeepwaterMeltingRateEnum
++syn keyword juliaConstC BasalforcingsSpatialUpperwaterElevationEnum
++syn keyword juliaConstC BasalforcingsSpatialUpperwaterMeltingRateEnum
++syn keyword juliaConstC BasalforcingsIsmip6BasinIdEnum
++syn keyword juliaConstC BasalforcingsIsmip6TfEnum
++syn keyword juliaConstC BasalforcingsIsmip6TfShelfEnum
++syn keyword juliaConstC BasalforcingsIsmip6MeltAnomalyEnum
++syn keyword juliaConstC BasalforcingsMeltrateFactorEnum
++syn keyword juliaConstC BasalforcingsOceanSalinityEnum
++syn keyword juliaConstC BasalforcingsOceanTempEnum
++syn keyword juliaConstC BasalforcingsPicoBasinIdEnum
++syn keyword juliaConstC BasalforcingsPicoBoxIdEnum
++syn keyword juliaConstC BasalforcingsPicoOverturningCoeffEnum
++syn keyword juliaConstC BasalforcingsPicoSubShelfOceanOverturningEnum
++syn keyword juliaConstC BasalforcingsPicoSubShelfOceanSalinityEnum
++syn keyword juliaConstC BasalforcingsPicoSubShelfOceanTempEnum
++syn keyword juliaConstC BasalStressxEnum
++syn keyword juliaConstC BasalStressyEnum
++syn keyword juliaConstC BasalStressEnum
++syn keyword juliaConstC BaseEnum
++syn keyword juliaConstC BaseOldEnum
++syn keyword juliaConstC BaseSlopeXEnum
++syn keyword juliaConstC BaseSlopeYEnum
++syn keyword juliaConstC BaselineBasalforcingsFloatingiceMeltingRateEnum
++syn keyword juliaConstC BaselineBasalforcingsSpatialDeepwaterMeltingRateEnum
++syn keyword juliaConstC BaselineCalvingCalvingrateEnum
++syn keyword juliaConstC BaselineFrictionEffectivePressureEnum
++syn keyword juliaConstC BaselineSmbMassBalanceEnum
++syn keyword juliaConstC BedEnum
++syn keyword juliaConstC BedGRDEnum
++syn keyword juliaConstC BedEastEnum
++syn keyword juliaConstC BedEastGRDEnum
++syn keyword juliaConstC BedNorthEnum
++syn keyword juliaConstC BedNorthGRDEnum
++syn keyword juliaConstC BedSlopeXEnum
++syn keyword juliaConstC BedSlopeYEnum
++syn keyword juliaConstC BottomPressureEnum
++syn keyword juliaConstC BottomPressureOldEnum
++syn keyword juliaConstC CalvingCalvingrateEnum
++syn keyword juliaConstC CalvingHabFractionEnum
++syn keyword juliaConstC CalvingAblationrateEnum
++syn keyword juliaConstC CalvingMeltingrateEnum
++syn keyword juliaConstC CalvingStressThresholdFloatingiceEnum
++syn keyword juliaConstC CalvingStressThresholdGroundediceEnum
++syn keyword juliaConstC CalvinglevermannCoeffEnum
++syn keyword juliaConstC CalvingratexEnum
++syn keyword juliaConstC CalvingrateyEnum
++syn keyword juliaConstC CalvingFluxLevelsetEnum
++syn keyword juliaConstC CalvingMeltingFluxLevelsetEnum
++syn keyword juliaConstC ConvergedEnum
++syn keyword juliaConstC CrevasseDepthEnum
++syn keyword juliaConstC DamageDEnum
++syn keyword juliaConstC DamageDOldEnum
++syn keyword juliaConstC DamageDbarEnum
++syn keyword juliaConstC DamageDbarOldEnum
++syn keyword juliaConstC DamageFEnum
++syn keyword juliaConstC DegreeOfChannelizationEnum
++syn keyword juliaConstC DepthBelowSurfaceEnum
++syn keyword juliaConstC DeltaIceThicknessEnum
++syn keyword juliaConstC DeltaTwsEnum
++syn keyword juliaConstC DeltaBottomPressureEnum
++syn keyword juliaConstC DeltaDslEnum
++syn keyword juliaConstC DslOldEnum
++syn keyword juliaConstC DslEnum
++syn keyword juliaConstC DeltaStrEnum
++syn keyword juliaConstC StrOldEnum
++syn keyword juliaConstC StrEnum
++syn keyword juliaConstC DeviatoricStresseffectiveEnum
++syn keyword juliaConstC DeviatoricStressxxEnum
++syn keyword juliaConstC DeviatoricStressxyEnum
++syn keyword juliaConstC DeviatoricStressxzEnum
++syn keyword juliaConstC DeviatoricStressyyEnum
++syn keyword juliaConstC DeviatoricStressyzEnum
++syn keyword juliaConstC DeviatoricStresszzEnum
++syn keyword juliaConstC DeviatoricStress1Enum
++syn keyword juliaConstC DeviatoricStress2Enum
++syn keyword juliaConstC DistanceToCalvingfrontEnum
++syn keyword juliaConstC DistanceToGroundinglineEnum
++syn keyword juliaConstC Domain2DhorizontalEnum
++syn keyword juliaConstC Domain2DverticalEnum
++syn keyword juliaConstC Domain3DEnum
++syn keyword juliaConstC DragCoefficientAbsGradientEnum
++syn keyword juliaConstC DrivingStressXEnum
++syn keyword juliaConstC DrivingStressYEnum
++syn keyword juliaConstC DummyEnum
++syn keyword juliaConstC EffectivePressureEnum
++syn keyword juliaConstC EffectivePressureSubstepEnum
++syn keyword juliaConstC EffectivePressureTransientEnum
++syn keyword juliaConstC EnthalpyEnum
++syn keyword juliaConstC EnthalpyPicardEnum
++syn keyword juliaConstC EplHeadEnum
++syn keyword juliaConstC EplHeadOldEnum
++syn keyword juliaConstC EplHeadSlopeXEnum
++syn keyword juliaConstC EplHeadSlopeYEnum
++syn keyword juliaConstC EplHeadSubstepEnum
++syn keyword juliaConstC EplHeadTransientEnum
++syn keyword juliaConstC EsaEmotionEnum
++syn keyword juliaConstC EsaNmotionEnum
++syn keyword juliaConstC EsaRotationrateEnum
++syn keyword juliaConstC EsaStrainratexxEnum
++syn keyword juliaConstC EsaStrainratexyEnum
++syn keyword juliaConstC EsaStrainrateyyEnum
++syn keyword juliaConstC EsaUmotionEnum
++syn keyword juliaConstC EsaXmotionEnum
++syn keyword juliaConstC EsaYmotionEnum
++syn keyword juliaConstC EtaDiffEnum
++syn keyword juliaConstC FlowequationBorderFSEnum
++syn keyword juliaConstC FrictionAsEnum
++syn keyword juliaConstC FrictionCEnum
++syn keyword juliaConstC FrictionCmaxEnum
++syn keyword juliaConstC FrictionCoefficientEnum
++syn keyword juliaConstC FrictionCoefficientcoulombEnum
++syn keyword juliaConstC FrictionCoulombWaterPressureEnum
++syn keyword juliaConstC FrictionEffectivePressureEnum
++syn keyword juliaConstC FrictionMEnum
++syn keyword juliaConstC FrictionPEnum
++syn keyword juliaConstC FrictionPressureAdjustedTemperatureEnum
++syn keyword juliaConstC FrictionQEnum
++syn keyword juliaConstC FrictionSedimentCompressibilityCoefficientEnum
++syn keyword juliaConstC FrictionTillFrictionAngleEnum
++syn keyword juliaConstC FrictionSchoofWaterPressureEnum
++syn keyword juliaConstC FrictionWaterLayerEnum
++syn keyword juliaConstC FrictionWaterPressureEnum
++syn keyword juliaConstC FrictionfEnum
++syn keyword juliaConstC FrontalForcingsBasinIdEnum
++syn keyword juliaConstC FrontalForcingsSubglacialDischargeEnum
++syn keyword juliaConstC FrontalForcingsThermalForcingEnum
++syn keyword juliaConstC GeometryHydrostaticRatioEnum
++syn keyword juliaConstC NGiaEnum
++syn keyword juliaConstC NGiaRateEnum
++syn keyword juliaConstC UGiaEnum
++syn keyword juliaConstC UGiaRateEnum
++syn keyword juliaConstC GradientEnum
++syn keyword juliaConstC GroundinglineHeightEnum
++syn keyword juliaConstC HydraulicPotentialEnum
++syn keyword juliaConstC HydraulicPotentialOldEnum
++syn keyword juliaConstC HydrologyBasalFluxEnum
++syn keyword juliaConstC HydrologyBumpHeightEnum
++syn keyword juliaConstC HydrologyBumpSpacingEnum
++syn keyword juliaConstC HydrologydcBasalMoulinInputEnum
++syn keyword juliaConstC HydrologydcEplThicknessEnum
++syn keyword juliaConstC HydrologydcEplThicknessOldEnum
++syn keyword juliaConstC HydrologydcEplThicknessSubstepEnum
++syn keyword juliaConstC HydrologydcEplThicknessTransientEnum
++syn keyword juliaConstC HydrologydcMaskEplactiveEltEnum
++syn keyword juliaConstC HydrologydcMaskEplactiveNodeEnum
++syn keyword juliaConstC HydrologydcMaskThawedEltEnum
++syn keyword juliaConstC HydrologydcMaskThawedNodeEnum
++syn keyword juliaConstC HydrologydcSedimentTransmitivityEnum
++syn keyword juliaConstC HydrologyDrainageRateEnum
++syn keyword juliaConstC HydrologyEnglacialInputEnum
++syn keyword juliaConstC HydrologyGapHeightEnum
++syn keyword juliaConstC HydrologyGapHeightXEnum
++syn keyword juliaConstC HydrologyGapHeightXXEnum
++syn keyword juliaConstC HydrologyGapHeightYEnum
++syn keyword juliaConstC HydrologyGapHeightYYEnum
++syn keyword juliaConstC HydrologyHeadEnum
++syn keyword juliaConstC HydrologyHeadOldEnum
++syn keyword juliaConstC HydrologyMoulinInputEnum
++syn keyword juliaConstC HydrologyNeumannfluxEnum
++syn keyword juliaConstC HydrologyReynoldsEnum
++syn keyword juliaConstC HydrologySheetConductivityEnum
++syn keyword juliaConstC HydrologySheetThicknessEnum
++syn keyword juliaConstC HydrologySheetThicknessOldEnum
++syn keyword juliaConstC HydrologyTwsEnum
++syn keyword juliaConstC HydrologyTwsSpcEnum
++syn keyword juliaConstC HydrologyTwsAnalysisEnum
++syn keyword juliaConstC HydrologyWatercolumnMaxEnum
++syn keyword juliaConstC HydrologyWaterVxEnum
++syn keyword juliaConstC HydrologyWaterVyEnum
++syn keyword juliaConstC IceEnum
++syn keyword juliaConstC IceMaskNodeActivationEnum
++syn keyword juliaConstC InputEnum
++syn keyword juliaConstC InversionCostFunctionsCoefficientsEnum
++syn keyword juliaConstC InversionSurfaceObsEnum
++syn keyword juliaConstC InversionThicknessObsEnum
++syn keyword juliaConstC InversionVelObsEnum
++syn keyword juliaConstC InversionVxObsEnum
++syn keyword juliaConstC InversionVyObsEnum
++syn keyword juliaConstC LevelsetfunctionSlopeXEnum
++syn keyword juliaConstC LevelsetfunctionSlopeYEnum
++syn keyword juliaConstC LevelsetObservationEnum
++syn keyword juliaConstC LoadingforceXEnum
++syn keyword juliaConstC LoadingforceYEnum
++syn keyword juliaConstC LoadingforceZEnum
++syn keyword juliaConstC MaskOceanLevelsetEnum
++syn keyword juliaConstC MaskIceLevelsetEnum
++syn keyword juliaConstC MaskIceRefLevelsetEnum
++syn keyword juliaConstC MasstransportSpcthicknessEnum
++syn keyword juliaConstC MaterialsRheologyBEnum
++syn keyword juliaConstC MaterialsRheologyBbarEnum
++syn keyword juliaConstC MaterialsRheologyEEnum
++syn keyword juliaConstC MaterialsRheologyEbarEnum
++syn keyword juliaConstC MaterialsRheologyEcEnum
++syn keyword juliaConstC MaterialsRheologyEcbarEnum
++syn keyword juliaConstC MaterialsRheologyEsEnum
++syn keyword juliaConstC MaterialsRheologyEsbarEnum
++syn keyword juliaConstC MaterialsRheologyNEnum
++syn keyword juliaConstC MeshScaleFactorEnum
++syn keyword juliaConstC MeshVertexonbaseEnum
++syn keyword juliaConstC MeshVertexonboundaryEnum
++syn keyword juliaConstC MeshVertexonsurfaceEnum
++syn keyword juliaConstC MisfitEnum
++syn keyword juliaConstC MovingFrontalVxEnum
++syn keyword juliaConstC MovingFrontalVyEnum
++syn keyword juliaConstC NeumannfluxEnum
++syn keyword juliaConstC NewDamageEnum
++syn keyword juliaConstC NodeEnum
++syn keyword juliaConstC OmegaAbsGradientEnum
++syn keyword juliaConstC OceantransportSpcbottompressureEnum
++syn keyword juliaConstC OceantransportSpcstrEnum
++syn keyword juliaConstC OceantransportSpcdslEnum
++syn keyword juliaConstC P0Enum
++syn keyword juliaConstC P1Enum
++syn keyword juliaConstC PartitioningEnum
++syn keyword juliaConstC PressureEnum
++syn keyword juliaConstC RadarEnum
++syn keyword juliaConstC RadarAttenuationMacGregorEnum
++syn keyword juliaConstC RadarAttenuationWolffEnum
++syn keyword juliaConstC RadarIcePeriodEnum
++syn keyword juliaConstC RadarPowerMacGregorEnum
++syn keyword juliaConstC RadarPowerWolffEnum
++syn keyword juliaConstC RheologyBAbsGradientEnum
++syn keyword juliaConstC RheologyBInitialguessEnum
++syn keyword juliaConstC RheologyBInitialguessMisfitEnum
++syn keyword juliaConstC RheologyBbarAbsGradientEnum
++syn keyword juliaConstC SampleEnum
++syn keyword juliaConstC SampleOldEnum
++syn keyword juliaConstC SampleNoiseEnum
++syn keyword juliaConstC SamplingBetaEnum
++syn keyword juliaConstC SamplingKappaEnum
++syn keyword juliaConstC SamplingPhiEnum
++syn keyword juliaConstC SamplingTauEnum
++syn keyword juliaConstC SealevelEnum
++syn keyword juliaConstC SealevelGRDEnum
++syn keyword juliaConstC SatGraviGRDEnum
++syn keyword juliaConstC SealevelBarystaticMaskEnum
++syn keyword juliaConstC SealevelBarystaticIceMaskEnum
++syn keyword juliaConstC SealevelBarystaticIceWeightsEnum
++syn keyword juliaConstC SealevelBarystaticIceAreaEnum
++syn keyword juliaConstC SealevelBarystaticIceLatbarEnum
++syn keyword juliaConstC SealevelBarystaticIceLongbarEnum
++syn keyword juliaConstC SealevelBarystaticIceLoadEnum
++syn keyword juliaConstC SealevelBarystaticHydroMaskEnum
++syn keyword juliaConstC SealevelBarystaticHydroWeightsEnum
++syn keyword juliaConstC SealevelBarystaticHydroAreaEnum
++syn keyword juliaConstC SealevelBarystaticHydroLatbarEnum
++syn keyword juliaConstC SealevelBarystaticHydroLongbarEnum
++syn keyword juliaConstC SealevelBarystaticHydroLoadEnum
++syn keyword juliaConstC SealevelBarystaticBpMaskEnum
++syn keyword juliaConstC SealevelBarystaticBpWeightsEnum
++syn keyword juliaConstC SealevelBarystaticBpAreaEnum
++syn keyword juliaConstC SealevelBarystaticBpLoadEnum
++syn keyword juliaConstC SealevelBarystaticOceanMaskEnum
++syn keyword juliaConstC SealevelBarystaticOceanWeightsEnum
++syn keyword juliaConstC SealevelBarystaticOceanAreaEnum
++syn keyword juliaConstC SealevelBarystaticOceanLatbarEnum
++syn keyword juliaConstC SealevelBarystaticOceanLongbarEnum
++syn keyword juliaConstC SealevelBarystaticOceanLoadEnum
++syn keyword juliaConstC SealevelNEsaEnum
++syn keyword juliaConstC SealevelNEsaRateEnum
++syn keyword juliaConstC SealevelRSLEnum
++syn keyword juliaConstC BslcEnum
++syn keyword juliaConstC BslcIceEnum
++syn keyword juliaConstC BslcHydroEnum
++syn keyword juliaConstC BslcOceanEnum
++syn keyword juliaConstC BslcRateEnum
++syn keyword juliaConstC GmtslcEnum
++syn keyword juliaConstC SealevelRSLBarystaticEnum
++syn keyword juliaConstC SealevelRSLRateEnum
++syn keyword juliaConstC SealevelUGrdEnum
++syn keyword juliaConstC SealevelNGrdEnum
++syn keyword juliaConstC SealevelUEastEsaEnum
++syn keyword juliaConstC SealevelUNorthEsaEnum
++syn keyword juliaConstC SealevelchangeIndicesEnum
++syn keyword juliaConstC SealevelchangeAlphaIndexEnum
++syn keyword juliaConstC SealevelchangeAzimuthIndexEnum
++syn keyword juliaConstC SealevelchangeGrotEnum
++syn keyword juliaConstC SealevelchangeGSatGravirotEnum
++syn keyword juliaConstC SealevelchangeGUrotEnum
++syn keyword juliaConstC SealevelchangeGNrotEnum
++syn keyword juliaConstC SealevelchangeGErotEnum
++syn keyword juliaConstC SealevelchangeAlphaIndexOceanEnum
++syn keyword juliaConstC SealevelchangeAlphaIndexIceEnum
++syn keyword juliaConstC SealevelchangeAlphaIndexHydroEnum
++syn keyword juliaConstC SealevelchangeAzimuthIndexOceanEnum
++syn keyword juliaConstC SealevelchangeAzimuthIndexIceEnum
++syn keyword juliaConstC SealevelchangeAzimuthIndexHydroEnum
++syn keyword juliaConstC SealevelchangeViscousRSLEnum
++syn keyword juliaConstC SealevelchangeViscousSGEnum
++syn keyword juliaConstC SealevelchangeViscousUEnum
++syn keyword juliaConstC SealevelchangeViscousNEnum
++syn keyword juliaConstC SealevelchangeViscousEEnum
++syn keyword juliaConstC SedimentHeadEnum
++syn keyword juliaConstC SedimentHeadOldEnum
++syn keyword juliaConstC SedimentHeadSubstepEnum
++syn keyword juliaConstC SedimentHeadTransientEnum
++syn keyword juliaConstC SedimentHeadResidualEnum
++syn keyword juliaConstC SedimentHeadStackedEnum
++syn keyword juliaConstC SigmaNNEnum
++syn keyword juliaConstC SigmaVMEnum
++syn keyword juliaConstC SmbAccumulatedECEnum
++syn keyword juliaConstC SmbAccumulatedMassBalanceEnum
++syn keyword juliaConstC SmbAccumulatedMeltEnum
++syn keyword juliaConstC SmbAccumulatedPrecipitationEnum
++syn keyword juliaConstC SmbAccumulatedRainEnum
++syn keyword juliaConstC SmbAccumulatedRefreezeEnum
++syn keyword juliaConstC SmbAccumulatedRunoffEnum
++syn keyword juliaConstC SmbAEnum
++syn keyword juliaConstC SmbAdiffEnum
++syn keyword juliaConstC SmbAValueEnum
++syn keyword juliaConstC SmbAccumulationEnum
++syn keyword juliaConstC SmbAdiffiniEnum
++syn keyword juliaConstC SmbAiniEnum
++syn keyword juliaConstC SmbAutoregressionNoiseEnum
++syn keyword juliaConstC SmbBasinsIdEnum
++syn keyword juliaConstC SmbBMaxEnum
++syn keyword juliaConstC SmbBMinEnum
++syn keyword juliaConstC SmbBNegEnum
++syn keyword juliaConstC SmbBPosEnum
++syn keyword juliaConstC SmbCEnum
++syn keyword juliaConstC SmbCcsnowValueEnum
++syn keyword juliaConstC SmbCciceValueEnum
++syn keyword juliaConstC SmbCotValueEnum
++syn keyword juliaConstC SmbDEnum
++syn keyword juliaConstC SmbDailyairdensityEnum
++syn keyword juliaConstC SmbDailyairhumidityEnum
++syn keyword juliaConstC SmbDailydlradiationEnum
++syn keyword juliaConstC SmbDailydsradiationEnum
++syn keyword juliaConstC SmbDailypressureEnum
++syn keyword juliaConstC SmbDailyrainfallEnum
++syn keyword juliaConstC SmbDailysnowfallEnum
++syn keyword juliaConstC SmbDailytemperatureEnum
++syn keyword juliaConstC SmbDailywindspeedEnum
++syn keyword juliaConstC SmbDiniEnum
++syn keyword juliaConstC SmbDlwrfEnum
++syn keyword juliaConstC SmbDulwrfValueEnum
++syn keyword juliaConstC SmbDswrfEnum
++syn keyword juliaConstC SmbDswdiffrfEnum
++syn keyword juliaConstC SmbDzAddEnum
++syn keyword juliaConstC SmbDzEnum
++syn keyword juliaConstC SmbDzMinEnum
++syn keyword juliaConstC SmbDzTopEnum
++syn keyword juliaConstC SmbDziniEnum
++syn keyword juliaConstC SmbEAirEnum
++syn keyword juliaConstC SmbECEnum
++syn keyword juliaConstC SmbECDtEnum
++syn keyword juliaConstC SmbECiniEnum
++syn keyword juliaConstC SmbElaEnum
++syn keyword juliaConstC SmbEvaporationEnum
++syn keyword juliaConstC SmbFACEnum
++syn keyword juliaConstC SmbGdnEnum
++syn keyword juliaConstC SmbGdniniEnum
++syn keyword juliaConstC SmbGspEnum
++syn keyword juliaConstC SmbGspiniEnum
++syn keyword juliaConstC SmbHrefEnum
++syn keyword juliaConstC SmbIsInitializedEnum
++syn keyword juliaConstC SmbMAddEnum
++syn keyword juliaConstC SmbMassBalanceEnum
++syn keyword juliaConstC SmbMassBalanceSubstepEnum
++syn keyword juliaConstC SmbMassBalanceTransientEnum
++syn keyword juliaConstC SmbMeanLHFEnum
++syn keyword juliaConstC SmbMeanSHFEnum
++syn keyword juliaConstC SmbMeanULWEnum
++syn keyword juliaConstC SmbMeltEnum
++syn keyword juliaConstC SmbMonthlytemperaturesEnum
++syn keyword juliaConstC SmbMSurfEnum
++syn keyword juliaConstC SmbNetLWEnum
++syn keyword juliaConstC SmbNetSWEnum
++syn keyword juliaConstC SmbPAirEnum
++syn keyword juliaConstC SmbPEnum
++syn keyword juliaConstC SmbPddfacIceEnum
++syn keyword juliaConstC SmbPddfacSnowEnum
++syn keyword juliaConstC SmbPrecipitationEnum
++syn keyword juliaConstC SmbPrecipitationsAnomalyEnum
++syn keyword juliaConstC SmbPrecipitationsLgmEnum
++syn keyword juliaConstC SmbPrecipitationsPresentdayEnum
++syn keyword juliaConstC SmbPrecipitationsReconstructedEnum
++syn keyword juliaConstC SmbRainEnum
++syn keyword juliaConstC SmbReEnum
++syn keyword juliaConstC SmbRefreezeEnum
++syn keyword juliaConstC SmbReiniEnum
++syn keyword juliaConstC SmbRunoffEnum
++syn keyword juliaConstC SmbRunoffSubstepEnum
++syn keyword juliaConstC SmbRunoffTransientEnum
++syn keyword juliaConstC SmbS0gcmEnum
++syn keyword juliaConstC SmbS0pEnum
++syn keyword juliaConstC SmbS0tEnum
++syn keyword juliaConstC SmbSizeiniEnum
++syn keyword juliaConstC SmbSmbCorrEnum
++syn keyword juliaConstC SmbSmbrefEnum
++syn keyword juliaConstC SmbSzaValueEnum
++syn keyword juliaConstC SmbTEnum
++syn keyword juliaConstC SmbTaEnum
++syn keyword juliaConstC SmbTeValueEnum
++syn keyword juliaConstC SmbTemperaturesAnomalyEnum
++syn keyword juliaConstC SmbTemperaturesLgmEnum
++syn keyword juliaConstC SmbTemperaturesPresentdayEnum
++syn keyword juliaConstC SmbTemperaturesReconstructedEnum
++syn keyword juliaConstC SmbTiniEnum
++syn keyword juliaConstC SmbTmeanEnum
++syn keyword juliaConstC SmbTzEnum
++syn keyword juliaConstC SmbValuesAutoregressionEnum
++syn keyword juliaConstC SmbVEnum
++syn keyword juliaConstC SmbVmeanEnum
++syn keyword juliaConstC SmbVzEnum
++syn keyword juliaConstC SmbWEnum
++syn keyword juliaConstC SmbWAddEnum
++syn keyword juliaConstC SmbWiniEnum
++syn keyword juliaConstC SmbZMaxEnum
++syn keyword juliaConstC SmbZMinEnum
++syn keyword juliaConstC SmbZTopEnum
++syn keyword juliaConstC SmbZYEnum
++syn keyword juliaConstC SolidearthExternalDisplacementEastRateEnum
++syn keyword juliaConstC SolidearthExternalDisplacementNorthRateEnum
++syn keyword juliaConstC SolidearthExternalDisplacementUpRateEnum
++syn keyword juliaConstC SolidearthExternalGeoidRateEnum
++syn keyword juliaConstC StochasticForcingDefaultIdEnum
++syn keyword juliaConstC StrainRateeffectiveEnum
++syn keyword juliaConstC StrainRateparallelEnum
++syn keyword juliaConstC StrainRateperpendicularEnum
++syn keyword juliaConstC StrainRatexxEnum
++syn keyword juliaConstC StrainRatexyEnum
++syn keyword juliaConstC StrainRatexzEnum
++syn keyword juliaConstC StrainRateyyEnum
++syn keyword juliaConstC StrainRateyzEnum
++syn keyword juliaConstC StrainRatezzEnum
++syn keyword juliaConstC StressMaxPrincipalEnum
++syn keyword juliaConstC StressTensorxxEnum
++syn keyword juliaConstC StressTensorxyEnum
++syn keyword juliaConstC StressTensorxzEnum
++syn keyword juliaConstC StressTensoryyEnum
++syn keyword juliaConstC StressTensoryzEnum
++syn keyword juliaConstC StressTensorzzEnum
++syn keyword juliaConstC SurfaceAbsMisfitEnum
++syn keyword juliaConstC SurfaceAbsVelMisfitEnum
++syn keyword juliaConstC AreaEnum
++syn keyword juliaConstC SealevelAreaEnum
++syn keyword juliaConstC SurfaceAreaEnum
++syn keyword juliaConstC SurfaceAverageVelMisfitEnum
++syn keyword juliaConstC SurfaceCrevasseEnum
++syn keyword juliaConstC SurfaceEnum
++syn keyword juliaConstC SurfaceOldEnum
++syn keyword juliaConstC SurfaceLogVelMisfitEnum
++syn keyword juliaConstC SurfaceLogVxVyMisfitEnum
++syn keyword juliaConstC SurfaceObservationEnum
++syn keyword juliaConstC SurfaceRelVelMisfitEnum
++syn keyword juliaConstC SurfaceSlopeXEnum
++syn keyword juliaConstC SurfaceSlopeYEnum
++syn keyword juliaConstC TemperatureEnum
++syn keyword juliaConstC TemperaturePDDEnum
++syn keyword juliaConstC TemperaturePicardEnum
++syn keyword juliaConstC TemperatureSEMICEnum
++syn keyword juliaConstC ThermalforcingAutoregressionNoiseEnum
++syn keyword juliaConstC ThermalforcingValuesAutoregressionEnum
++syn keyword juliaConstC ThermalSpctemperatureEnum
++syn keyword juliaConstC ThicknessAbsGradientEnum
++syn keyword juliaConstC ThicknessAbsMisfitEnum
++syn keyword juliaConstC ThicknessAcrossGradientEnum
++syn keyword juliaConstC ThicknessAlongGradientEnum
++syn keyword juliaConstC ThicknessEnum
++syn keyword juliaConstC ThicknessOldEnum
++syn keyword juliaConstC ThicknessPositiveEnum
++syn keyword juliaConstC ThicknessResidualEnum
++syn keyword juliaConstC TransientAccumulatedDeltaIceThicknessEnum
++syn keyword juliaConstC VelEnum
++syn keyword juliaConstC VxAverageEnum
++syn keyword juliaConstC VxBaseEnum
++syn keyword juliaConstC VxEnum
++syn keyword juliaConstC VxMeshEnum
++syn keyword juliaConstC VxObsEnum
++syn keyword juliaConstC VxShearEnum
++syn keyword juliaConstC VxSurfaceEnum
++syn keyword juliaConstC VyAverageEnum
++syn keyword juliaConstC VyBaseEnum
++syn keyword juliaConstC VyEnum
++syn keyword juliaConstC VyMeshEnum
++syn keyword juliaConstC VyObsEnum
++syn keyword juliaConstC VyShearEnum
++syn keyword juliaConstC VySurfaceEnum
++syn keyword juliaConstC VzEnum
++syn keyword juliaConstC VzFSEnum
++syn keyword juliaConstC VzHOEnum
++syn keyword juliaConstC VzMeshEnum
++syn keyword juliaConstC VzSSAEnum
++syn keyword juliaConstC WaterColumnOldEnum
++syn keyword juliaConstC WatercolumnEnum
++syn keyword juliaConstC WaterfractionDrainageEnum
++syn keyword juliaConstC WaterfractionDrainageIntegratedEnum
++syn keyword juliaConstC WaterfractionEnum
++syn keyword juliaConstC WaterheightEnum
++syn keyword juliaConstC WeightsLevelsetObservationEnum
++syn keyword juliaConstC WeightsSurfaceObservationEnum
++syn keyword juliaConstC OldAccumulatedDeltaBottomPressureEnum
++syn keyword juliaConstC OldAccumulatedDeltaIceThicknessEnum
++syn keyword juliaConstC OldAccumulatedDeltaTwsEnum
++syn keyword juliaConstC Outputdefinition1Enum
++syn keyword juliaConstC Outputdefinition10Enum
++syn keyword juliaConstC Outputdefinition11Enum
++syn keyword juliaConstC Outputdefinition12Enum
++syn keyword juliaConstC Outputdefinition13Enum
++syn keyword juliaConstC Outputdefinition14Enum
++syn keyword juliaConstC Outputdefinition15Enum
++syn keyword juliaConstC Outputdefinition16Enum
++syn keyword juliaConstC Outputdefinition17Enum
++syn keyword juliaConstC Outputdefinition18Enum
++syn keyword juliaConstC Outputdefinition19Enum
++syn keyword juliaConstC Outputdefinition20Enum
++syn keyword juliaConstC Outputdefinition21Enum
++syn keyword juliaConstC Outputdefinition22Enum
++syn keyword juliaConstC Outputdefinition23Enum
++syn keyword juliaConstC Outputdefinition24Enum
++syn keyword juliaConstC Outputdefinition25Enum
++syn keyword juliaConstC Outputdefinition26Enum
++syn keyword juliaConstC Outputdefinition27Enum
++syn keyword juliaConstC Outputdefinition28Enum
++syn keyword juliaConstC Outputdefinition29Enum
++syn keyword juliaConstC Outputdefinition2Enum
++syn keyword juliaConstC Outputdefinition30Enum
++syn keyword juliaConstC Outputdefinition31Enum
++syn keyword juliaConstC Outputdefinition32Enum
++syn keyword juliaConstC Outputdefinition33Enum
++syn keyword juliaConstC Outputdefinition34Enum
++syn keyword juliaConstC Outputdefinition35Enum
++syn keyword juliaConstC Outputdefinition36Enum
++syn keyword juliaConstC Outputdefinition37Enum
++syn keyword juliaConstC Outputdefinition38Enum
++syn keyword juliaConstC Outputdefinition39Enum
++syn keyword juliaConstC Outputdefinition3Enum
++syn keyword juliaConstC Outputdefinition40Enum
++syn keyword juliaConstC Outputdefinition41Enum
++syn keyword juliaConstC Outputdefinition42Enum
++syn keyword juliaConstC Outputdefinition43Enum
++syn keyword juliaConstC Outputdefinition44Enum
++syn keyword juliaConstC Outputdefinition45Enum
++syn keyword juliaConstC Outputdefinition46Enum
++syn keyword juliaConstC Outputdefinition47Enum
++syn keyword juliaConstC Outputdefinition48Enum
++syn keyword juliaConstC Outputdefinition49Enum
++syn keyword juliaConstC Outputdefinition4Enum
++syn keyword juliaConstC Outputdefinition50Enum
++syn keyword juliaConstC Outputdefinition51Enum
++syn keyword juliaConstC Outputdefinition52Enum
++syn keyword juliaConstC Outputdefinition53Enum
++syn keyword juliaConstC Outputdefinition54Enum
++syn keyword juliaConstC Outputdefinition55Enum
++syn keyword juliaConstC Outputdefinition56Enum
++syn keyword juliaConstC Outputdefinition57Enum
++syn keyword juliaConstC Outputdefinition58Enum
++syn keyword juliaConstC Outputdefinition59Enum
++syn keyword juliaConstC Outputdefinition5Enum
++syn keyword juliaConstC Outputdefinition60Enum
++syn keyword juliaConstC Outputdefinition61Enum
++syn keyword juliaConstC Outputdefinition62Enum
++syn keyword juliaConstC Outputdefinition63Enum
++syn keyword juliaConstC Outputdefinition64Enum
++syn keyword juliaConstC Outputdefinition65Enum
++syn keyword juliaConstC Outputdefinition66Enum
++syn keyword juliaConstC Outputdefinition67Enum
++syn keyword juliaConstC Outputdefinition68Enum
++syn keyword juliaConstC Outputdefinition69Enum
++syn keyword juliaConstC Outputdefinition6Enum
++syn keyword juliaConstC Outputdefinition70Enum
++syn keyword juliaConstC Outputdefinition71Enum
++syn keyword juliaConstC Outputdefinition72Enum
++syn keyword juliaConstC Outputdefinition73Enum
++syn keyword juliaConstC Outputdefinition74Enum
++syn keyword juliaConstC Outputdefinition75Enum
++syn keyword juliaConstC Outputdefinition76Enum
++syn keyword juliaConstC Outputdefinition77Enum
++syn keyword juliaConstC Outputdefinition78Enum
++syn keyword juliaConstC Outputdefinition79Enum
++syn keyword juliaConstC Outputdefinition7Enum
++syn keyword juliaConstC Outputdefinition80Enum
++syn keyword juliaConstC Outputdefinition81Enum
++syn keyword juliaConstC Outputdefinition82Enum
++syn keyword juliaConstC Outputdefinition83Enum
++syn keyword juliaConstC Outputdefinition84Enum
++syn keyword juliaConstC Outputdefinition85Enum
++syn keyword juliaConstC Outputdefinition86Enum
++syn keyword juliaConstC Outputdefinition87Enum
++syn keyword juliaConstC Outputdefinition88Enum
++syn keyword juliaConstC Outputdefinition89Enum
++syn keyword juliaConstC Outputdefinition8Enum
++syn keyword juliaConstC Outputdefinition90Enum
++syn keyword juliaConstC Outputdefinition91Enum
++syn keyword juliaConstC Outputdefinition92Enum
++syn keyword juliaConstC Outputdefinition93Enum
++syn keyword juliaConstC Outputdefinition94Enum
++syn keyword juliaConstC Outputdefinition95Enum
++syn keyword juliaConstC Outputdefinition96Enum
++syn keyword juliaConstC Outputdefinition97Enum
++syn keyword juliaConstC Outputdefinition98Enum
++syn keyword juliaConstC Outputdefinition99Enum
++syn keyword juliaConstC Outputdefinition9Enum
++syn keyword juliaConstC Outputdefinition100Enum
++syn keyword juliaConstC InputsENDEnum
++syn keyword juliaConstC AbsoluteEnum
++syn keyword juliaConstC AdaptiveTimesteppingEnum
++syn keyword juliaConstC AdjointBalancethickness2AnalysisEnum
++syn keyword juliaConstC AdjointBalancethicknessAnalysisEnum
++syn keyword juliaConstC AdjointHorizAnalysisEnum
++syn keyword juliaConstC AgeAnalysisEnum
++syn keyword juliaConstC AggressiveMigrationEnum
++syn keyword juliaConstC AmrBamgEnum
++syn keyword juliaConstC AmrNeopzEnum
++syn keyword juliaConstC AndroidFrictionCoefficientEnum
++syn keyword juliaConstC ArrheniusEnum
++syn keyword juliaConstC AutodiffJacobianEnum
++syn keyword juliaConstC AutoregressionLinearFloatingMeltRateEnum
++syn keyword juliaConstC Balancethickness2AnalysisEnum
++syn keyword juliaConstC Balancethickness2SolutionEnum
++syn keyword juliaConstC BalancethicknessAnalysisEnum
++syn keyword juliaConstC BalancethicknessApparentMassbalanceEnum
++syn keyword juliaConstC BalancethicknessSoftAnalysisEnum
++syn keyword juliaConstC BalancethicknessSoftSolutionEnum
++syn keyword juliaConstC BalancethicknessSolutionEnum
++syn keyword juliaConstC BalancevelocityAnalysisEnum
++syn keyword juliaConstC BalancevelocitySolutionEnum
++syn keyword juliaConstC BasalforcingsIsmip6Enum
++syn keyword juliaConstC BasalforcingsPicoEnum
++syn keyword juliaConstC BeckmannGoosseFloatingMeltRateEnum
++syn keyword juliaConstC BedSlopeSolutionEnum
++syn keyword juliaConstC BoolExternalResultEnum
++syn keyword juliaConstC BoolInputEnum
++syn keyword juliaConstC IntInputEnum
++syn keyword juliaConstC DoubleInputEnum
++syn keyword juliaConstC BoolParamEnum
++syn keyword juliaConstC BoundaryEnum
++syn keyword juliaConstC BuddJackaEnum
++syn keyword juliaConstC CalvingDev2Enum
++syn keyword juliaConstC CalvingHabEnum
++syn keyword juliaConstC CalvingLevermannEnum
++syn keyword juliaConstC CalvingTestEnum
++syn keyword juliaConstC CalvingParameterizationEnum
++syn keyword juliaConstC CalvingVonmisesEnum
++syn keyword juliaConstC CfdragcoeffabsgradEnum
++syn keyword juliaConstC CfsurfacelogvelEnum
++syn keyword juliaConstC CfsurfacesquareEnum
++syn keyword juliaConstC CflevelsetmisfitEnum
++syn keyword juliaConstC ChannelEnum
++syn keyword juliaConstC ChannelAreaEnum
++syn keyword juliaConstC ChannelAreaOldEnum
++syn keyword juliaConstC ChannelDischargeEnum
++syn keyword juliaConstC ClosedEnum
++syn keyword juliaConstC ColinearEnum
++syn keyword juliaConstC ConstraintsEnum
++syn keyword juliaConstC ContactEnum
++syn keyword juliaConstC ContourEnum
++syn keyword juliaConstC ContoursEnum
++syn keyword juliaConstC ControlInputEnum
++syn keyword juliaConstC ControlInputGradEnum
++syn keyword juliaConstC ControlInputMaxsEnum
++syn keyword juliaConstC ControlInputMinsEnum
++syn keyword juliaConstC ControlInputValuesEnum
++syn keyword juliaConstC CrouzeixRaviartEnum
++syn keyword juliaConstC CuffeyEnum
++syn keyword juliaConstC CuffeyTemperateEnum
++syn keyword juliaConstC DamageEvolutionAnalysisEnum
++syn keyword juliaConstC DamageEvolutionSolutionEnum
++syn keyword juliaConstC DataSetEnum
++syn keyword juliaConstC DataSetParamEnum
++syn keyword juliaConstC DatasetInputEnum
++syn keyword juliaConstC DefaultAnalysisEnum
++syn keyword juliaConstC DefaultCalvingEnum
++syn keyword juliaConstC DenseEnum
++syn keyword juliaConstC DependentObjectEnum
++syn keyword juliaConstC DepthAverageAnalysisEnum
++syn keyword juliaConstC DeviatoricStressErrorEstimatorEnum
++syn keyword juliaConstC DivergenceEnum
++syn keyword juliaConstC Domain3DsurfaceEnum
++syn keyword juliaConstC DoubleArrayInputEnum
++syn keyword juliaConstC ArrayInputEnum
++syn keyword juliaConstC IntArrayInputEnum
++syn keyword juliaConstC DoubleExternalResultEnum
++syn keyword juliaConstC DoubleMatArrayParamEnum
++syn keyword juliaConstC DoubleMatExternalResultEnum
++syn keyword juliaConstC DoubleMatParamEnum
++syn keyword juliaConstC DoubleParamEnum
++syn keyword juliaConstC DoubleVecParamEnum
++syn keyword juliaConstC ElementEnum
++syn keyword juliaConstC ElementHookEnum
++syn keyword juliaConstC ElementSIdEnum
++syn keyword juliaConstC EnthalpyAnalysisEnum
++syn keyword juliaConstC EsaAnalysisEnum
++syn keyword juliaConstC EsaSolutionEnum
++syn keyword juliaConstC EsaTransitionsEnum
++syn keyword juliaConstC ExternalResultEnum
++syn keyword juliaConstC ExtrapolationAnalysisEnum
++syn keyword juliaConstC ExtrudeFromBaseAnalysisEnum
++syn keyword juliaConstC ExtrudeFromTopAnalysisEnum
++syn keyword juliaConstC FSApproximationEnum
++syn keyword juliaConstC FSSolverEnum
++syn keyword juliaConstC FSpressureEnum
++syn keyword juliaConstC FSvelocityEnum
++syn keyword juliaConstC FemModelEnum
++syn keyword juliaConstC FileParamEnum
++syn keyword juliaConstC FixedTimesteppingEnum
++syn keyword juliaConstC FloatingAreaEnum
++syn keyword juliaConstC FloatingAreaScaledEnum
++syn keyword juliaConstC FloatingMeltRateEnum
++syn keyword juliaConstC FreeEnum
++syn keyword juliaConstC FreeSurfaceBaseAnalysisEnum
++syn keyword juliaConstC FreeSurfaceTopAnalysisEnum
++syn keyword juliaConstC FrontalForcingsDefaultEnum
++syn keyword juliaConstC FrontalForcingsRignotEnum
++syn keyword juliaConstC FrontalForcingsRignotAutoregressionEnum
++syn keyword juliaConstC FsetEnum
++syn keyword juliaConstC FullMeltOnPartiallyFloatingEnum
++syn keyword juliaConstC GLheightadvectionAnalysisEnum
++syn keyword juliaConstC GaussPentaEnum
++syn keyword juliaConstC GaussSegEnum
++syn keyword juliaConstC GaussTetraEnum
++syn keyword juliaConstC GaussTriaEnum
++syn keyword juliaConstC GenericOptionEnum
++syn keyword juliaConstC GenericParamEnum
++syn keyword juliaConstC GenericExternalResultEnum
++syn keyword juliaConstC Gradient1Enum
++syn keyword juliaConstC Gradient2Enum
++syn keyword juliaConstC Gradient3Enum
++syn keyword juliaConstC Gradient4Enum
++syn keyword juliaConstC GroundedAreaEnum
++syn keyword juliaConstC GroundedAreaScaledEnum
++syn keyword juliaConstC GroundingOnlyEnum
++syn keyword juliaConstC GroundinglineMassFluxEnum
++syn keyword juliaConstC GsetEnum
++syn keyword juliaConstC GslEnum
++syn keyword juliaConstC HOApproximationEnum
++syn keyword juliaConstC HOFSApproximationEnum
++syn keyword juliaConstC HookEnum
++syn keyword juliaConstC HydrologyDCEfficientAnalysisEnum
++syn keyword juliaConstC HydrologyDCInefficientAnalysisEnum
++syn keyword juliaConstC HydrologyGlaDSAnalysisEnum
++syn keyword juliaConstC HydrologyGlaDSEnum
++syn keyword juliaConstC HydrologyPismAnalysisEnum
++syn keyword juliaConstC HydrologyShaktiAnalysisEnum
++syn keyword juliaConstC HydrologyShreveAnalysisEnum
++syn keyword juliaConstC HydrologySolutionEnum
++syn keyword juliaConstC HydrologySubstepsEnum
++syn keyword juliaConstC HydrologySubTimeEnum
++syn keyword juliaConstC HydrologydcEnum
++syn keyword juliaConstC HydrologypismEnum
++syn keyword juliaConstC HydrologyshaktiEnum
++syn keyword juliaConstC HydrologyshreveEnum
++syn keyword juliaConstC IceMassEnum
++syn keyword juliaConstC IceMassScaledEnum
++syn keyword juliaConstC IceVolumeAboveFloatationEnum
++syn keyword juliaConstC IceVolumeAboveFloatationScaledEnum
++syn keyword juliaConstC IceVolumeEnum
++syn keyword juliaConstC IceVolumeScaledEnum
++syn keyword juliaConstC IcefrontMassFluxEnum
++syn keyword juliaConstC IcefrontMassFluxLevelsetEnum
++syn keyword juliaConstC IncrementalEnum
++syn keyword juliaConstC IndexedEnum
++syn keyword juliaConstC IntExternalResultEnum
++syn keyword juliaConstC ElementInputEnum
++syn keyword juliaConstC IntMatExternalResultEnum
++syn keyword juliaConstC IntMatParamEnum
++syn keyword juliaConstC IntParamEnum
++syn keyword juliaConstC IntVecParamEnum
++syn keyword juliaConstC InputsEnum
++syn keyword juliaConstC InternalEnum
++syn keyword juliaConstC IntersectEnum
++syn keyword juliaConstC InversionVzObsEnum
++syn keyword juliaConstC JEnum
++syn keyword juliaConstC L1L2ApproximationEnum
++syn keyword juliaConstC MOLHOApproximationEnum
++syn keyword juliaConstC L2ProjectionBaseAnalysisEnum
++syn keyword juliaConstC L2ProjectionEPLAnalysisEnum
++syn keyword juliaConstC LACrouzeixRaviartEnum
++syn keyword juliaConstC LATaylorHoodEnum
++syn keyword juliaConstC LambdaSEnum
++syn keyword juliaConstC LevelsetAnalysisEnum
++syn keyword juliaConstC LevelsetfunctionPicardEnum
++syn keyword juliaConstC LinearFloatingMeltRateEnum
++syn keyword juliaConstC LliboutryDuvalEnum
++syn keyword juliaConstC LoadsEnum
++syn keyword juliaConstC LoveAnalysisEnum
++syn keyword juliaConstC LoveHfEnum
++syn keyword juliaConstC LoveHtEnum
++syn keyword juliaConstC LoveKernelsImagEnum
++syn keyword juliaConstC LoveKernelsRealEnum
++syn keyword juliaConstC LoveKfEnum
++syn keyword juliaConstC LoveKtEnum
++syn keyword juliaConstC LoveLfEnum
++syn keyword juliaConstC LoveLtEnum
++syn keyword juliaConstC LoveTidalHtEnum
++syn keyword juliaConstC LoveTidalKtEnum
++syn keyword juliaConstC LoveTidalLtEnum
++syn keyword juliaConstC LovePMTF1tEnum
++syn keyword juliaConstC LovePMTF2tEnum
++syn keyword juliaConstC LoveYiEnum
++syn keyword juliaConstC LoveRhsEnum
++syn keyword juliaConstC LoveSolutionEnum
++syn keyword juliaConstC MINIEnum
++syn keyword juliaConstC MINIcondensedEnum
++syn keyword juliaConstC MantlePlumeGeothermalFluxEnum
++syn keyword juliaConstC MassFluxEnum
++syn keyword juliaConstC MassconEnum
++syn keyword juliaConstC MassconaxpbyEnum
++syn keyword juliaConstC MassfluxatgateEnum
++syn keyword juliaConstC MasstransportAnalysisEnum
++syn keyword juliaConstC MasstransportSolutionEnum
++syn keyword juliaConstC MatdamageiceEnum
++syn keyword juliaConstC MatenhancediceEnum
++syn keyword juliaConstC MaterialsEnum
++syn keyword juliaConstC MatestarEnum
++syn keyword juliaConstC MaticeEnum
++syn keyword juliaConstC MatlithoEnum
++syn keyword juliaConstC MathydroEnum
++syn keyword juliaConstC MatrixParamEnum
++syn keyword juliaConstC MaxAbsVxEnum
++syn keyword juliaConstC MaxAbsVyEnum
++syn keyword juliaConstC MaxAbsVzEnum
++syn keyword juliaConstC MaxDivergenceEnum
++syn keyword juliaConstC MaxVelEnum
++syn keyword juliaConstC MaxVxEnum
++syn keyword juliaConstC MaxVyEnum
++syn keyword juliaConstC MaxVzEnum
++syn keyword juliaConstC MelangeEnum
++syn keyword juliaConstC MeltingAnalysisEnum
++syn keyword juliaConstC MeshElementsEnum
++syn keyword juliaConstC MeshXEnum
++syn keyword juliaConstC MeshYEnum
++syn keyword juliaConstC MinVelEnum
++syn keyword juliaConstC MinVxEnum
++syn keyword juliaConstC MinVyEnum
++syn keyword juliaConstC MinVzEnum
++syn keyword juliaConstC MismipFloatingMeltRateEnum
++syn keyword juliaConstC MoulinEnum
++syn keyword juliaConstC MpiDenseEnum
++syn keyword juliaConstC MpiEnum
++syn keyword juliaConstC MpiSparseEnum
++syn keyword juliaConstC MumpsEnum
++syn keyword juliaConstC NoFrictionOnPartiallyFloatingEnum
++syn keyword juliaConstC NoMeltOnPartiallyFloatingEnum
++syn keyword juliaConstC NodalEnum
++syn keyword juliaConstC NodalvalueEnum
++syn keyword juliaConstC NodeSIdEnum
++syn keyword juliaConstC NoneApproximationEnum
++syn keyword juliaConstC NoneEnum
++syn keyword juliaConstC NumberedcostfunctionEnum
++syn keyword juliaConstC NyeCO2Enum
++syn keyword juliaConstC NyeH2OEnum
++syn keyword juliaConstC NumericalfluxEnum
++syn keyword juliaConstC OceantransportAnalysisEnum
++syn keyword juliaConstC OceantransportSolutionEnum
++syn keyword juliaConstC OldGradientEnum
++syn keyword juliaConstC OneLayerP4zEnum
++syn keyword juliaConstC OpenEnum
++syn keyword juliaConstC OptionEnum
++syn keyword juliaConstC ParamEnum
++syn keyword juliaConstC ParametersEnum
++syn keyword juliaConstC P0ArrayEnum
++syn keyword juliaConstC P0DGEnum
++syn keyword juliaConstC P1DGEnum
++syn keyword juliaConstC P1P1Enum
++syn keyword juliaConstC P1P1GLSEnum
++syn keyword juliaConstC P1bubbleEnum
++syn keyword juliaConstC P1bubblecondensedEnum
++syn keyword juliaConstC P1xP2Enum
++syn keyword juliaConstC P1xP3Enum
++syn keyword juliaConstC P1xP4Enum
++syn keyword juliaConstC P2Enum
++syn keyword juliaConstC P2bubbleEnum
++syn keyword juliaConstC P2bubblecondensedEnum
++syn keyword juliaConstC P2xP1Enum
++syn keyword juliaConstC P2xP4Enum
++syn keyword juliaConstC PatersonEnum
++syn keyword juliaConstC PengridEnum
++syn keyword juliaConstC PenpairEnum
++syn keyword juliaConstC PentaEnum
++syn keyword juliaConstC PentaInputEnum
++syn keyword juliaConstC ProfilerEnum
++syn keyword juliaConstC ProfilingCurrentFlopsEnum
++syn keyword juliaConstC ProfilingCurrentMemEnum
++syn keyword juliaConstC ProfilingSolutionTimeEnum
++syn keyword juliaConstC RegionaloutputEnum
++syn keyword juliaConstC RegularEnum
++syn keyword juliaConstC RecoveryAnalysisEnum
++syn keyword juliaConstC RiftfrontEnum
++syn keyword juliaConstC SamplingAnalysisEnum
++syn keyword juliaConstC SamplingSolutionEnum
++syn keyword juliaConstC SIAApproximationEnum
++syn keyword juliaConstC SMBautoregressionEnum
++syn keyword juliaConstC SMBcomponentsEnum
++syn keyword juliaConstC SMBd18opddEnum
++syn keyword juliaConstC SMBforcingEnum
++syn keyword juliaConstC SMBgcmEnum
++syn keyword juliaConstC SMBgembEnum
++syn keyword juliaConstC SMBgradientsEnum
++syn keyword juliaConstC SMBgradientscomponentsEnum
++syn keyword juliaConstC SMBgradientselaEnum
++syn keyword juliaConstC SMBhenningEnum
++syn keyword juliaConstC SMBmeltcomponentsEnum
++syn keyword juliaConstC SMBpddEnum
++syn keyword juliaConstC SMBpddSicopolisEnum
++syn keyword juliaConstC SMBsemicEnum
++syn keyword juliaConstC SSAApproximationEnum
++syn keyword juliaConstC SSAFSApproximationEnum
++syn keyword juliaConstC SSAHOApproximationEnum
++syn keyword juliaConstC ScaledEnum
++syn keyword juliaConstC SealevelAbsoluteEnum
++syn keyword juliaConstC SealevelEmotionEnum
++syn keyword juliaConstC SealevelchangePolarMotionXEnum
++syn keyword juliaConstC SealevelchangePolarMotionYEnum
++syn keyword juliaConstC SealevelchangePolarMotionZEnum
++syn keyword juliaConstC SealevelchangePolarMotionEnum
++syn keyword juliaConstC SealevelNmotionEnum
++syn keyword juliaConstC SealevelUmotionEnum
++syn keyword juliaConstC SealevelchangeAnalysisEnum
++syn keyword juliaConstC SegEnum
++syn keyword juliaConstC SegInputEnum
++syn keyword juliaConstC SegmentEnum
++syn keyword juliaConstC SegmentRiftfrontEnum
++syn keyword juliaConstC SeparateEnum
++syn keyword juliaConstC SeqEnum
++syn keyword juliaConstC SmbAnalysisEnum
++syn keyword juliaConstC SmbSolutionEnum
++syn keyword juliaConstC SmoothAnalysisEnum
++syn keyword juliaConstC SoftMigrationEnum
++syn keyword juliaConstC SpatialLinearFloatingMeltRateEnum
++syn keyword juliaConstC SpcDynamicEnum
++syn keyword juliaConstC SpcStaticEnum
++syn keyword juliaConstC SpcTransientEnum
++syn keyword juliaConstC SsetEnum
++syn keyword juliaConstC StatisticsSolutionEnum
++syn keyword juliaConstC SteadystateSolutionEnum
++syn keyword juliaConstC StressIntensityFactorEnum
++syn keyword juliaConstC StressbalanceAnalysisEnum
++syn keyword juliaConstC StressbalanceConvergenceNumStepsEnum
++syn keyword juliaConstC StressbalanceSIAAnalysisEnum
++syn keyword juliaConstC StressbalanceSolutionEnum
++syn keyword juliaConstC StressbalanceVerticalAnalysisEnum
++syn keyword juliaConstC StringArrayParamEnum
++syn keyword juliaConstC StringExternalResultEnum
++syn keyword juliaConstC StringParamEnum
++syn keyword juliaConstC SubelementFriction1Enum
++syn keyword juliaConstC SubelementFriction2Enum
++syn keyword juliaConstC SubelementMelt1Enum
++syn keyword juliaConstC SubelementMelt2Enum
++syn keyword juliaConstC SubelementMigrationEnum
++syn keyword juliaConstC SurfaceSlopeSolutionEnum
++syn keyword juliaConstC TaylorHoodEnum
++syn keyword juliaConstC TetraEnum
++syn keyword juliaConstC TetraInputEnum
++syn keyword juliaConstC ThermalAnalysisEnum
++syn keyword juliaConstC ThermalSolutionEnum
++syn keyword juliaConstC ThicknessErrorEstimatorEnum
++syn keyword juliaConstC TotalCalvingFluxLevelsetEnum
++syn keyword juliaConstC TotalCalvingMeltingFluxLevelsetEnum
++syn keyword juliaConstC TotalFloatingBmbEnum
++syn keyword juliaConstC TotalFloatingBmbScaledEnum
++syn keyword juliaConstC TotalGroundedBmbEnum
++syn keyword juliaConstC TotalGroundedBmbScaledEnum
++syn keyword juliaConstC TotalSmbEnum
++syn keyword juliaConstC TotalSmbScaledEnum
++syn keyword juliaConstC TransientArrayParamEnum
++syn keyword juliaConstC TransientInputEnum
++syn keyword juliaConstC TransientParamEnum
++syn keyword juliaConstC TransientSolutionEnum
++syn keyword juliaConstC TriaEnum
++syn keyword juliaConstC TriaInputEnum
++syn keyword juliaConstC UzawaPressureAnalysisEnum
++syn keyword juliaConstC VectorParamEnum
++syn keyword juliaConstC VertexEnum
++syn keyword juliaConstC VertexLIdEnum
++syn keyword juliaConstC VertexPIdEnum
++syn keyword juliaConstC VertexSIdEnum
++syn keyword juliaConstC VerticesEnum
++syn keyword juliaConstC ViscousHeatingEnum
++syn keyword juliaConstC WaterEnum
++syn keyword juliaConstC XTaylorHoodEnum
++syn keyword juliaConstC XYEnum
++syn keyword juliaConstC XYZEnum
++syn keyword juliaConstC BalancethicknessD0Enum
++syn keyword juliaConstC BalancethicknessDiffusionCoefficientEnum
++syn keyword juliaConstC BilinearInterpEnum
++syn keyword juliaConstC CalvingdevCoeffEnum
++syn keyword juliaConstC DeviatoricStressEnum
++syn keyword juliaConstC EtaAbsGradientEnum
++syn keyword juliaConstC MeshZEnum
++syn keyword juliaConstC NearestInterpEnum
++syn keyword juliaConstC OutputdefinitionListEnum
++syn keyword juliaConstC SealevelObsEnum
++syn keyword juliaConstC SealevelWeightsEnum
++syn keyword juliaConstC StrainRateEnum
++syn keyword juliaConstC StressTensorEnum
++syn keyword juliaConstC StressbalanceViscosityOvershootEnum
++syn keyword juliaConstC SubelementMigration4Enum
++syn keyword juliaConstC TimesteppingTimeAdaptEnum
++syn keyword juliaConstC TriangleInterpEnum
++syn keyword juliaConstC MaximumNumberOfDefinitionsEnum
++"ISSM Enums end
++syn keyword juliaConstC ParametersSTARTEnum
++syn keyword juliaConstC AdolcParamEnum
++syn keyword juliaConstC AgeStabilizationEnum
++syn keyword juliaConstC AgeNumRequestedOutputsEnum
++syn keyword juliaConstC AgeRequestedOutputsEnum
++syn keyword juliaConstC AmrDeviatoricErrorGroupThresholdEnum
++syn keyword juliaConstC AmrDeviatoricErrorMaximumEnum
++syn keyword juliaConstC AmrDeviatoricErrorResolutionEnum
++syn keyword juliaConstC AmrDeviatoricErrorThresholdEnum
++syn keyword juliaConstC AmrErrEnum
++syn keyword juliaConstC AmrFieldEnum
++syn keyword juliaConstC AmrGradationEnum
++syn keyword juliaConstC AmrGroundingLineDistanceEnum
++syn keyword juliaConstC AmrGroundingLineResolutionEnum
++syn keyword juliaConstC AmrHmaxEnum
++syn keyword juliaConstC AmrHminEnum
++syn keyword juliaConstC AmrIceFrontDistanceEnum
++syn keyword juliaConstC AmrIceFrontResolutionEnum
++syn keyword juliaConstC AmrKeepMetricEnum
++syn keyword juliaConstC AmrLagEnum
++syn keyword juliaConstC AmrLevelMaxEnum
++syn keyword juliaConstC AmrRestartEnum
++syn keyword juliaConstC AmrThicknessErrorGroupThresholdEnum
++syn keyword juliaConstC AmrThicknessErrorMaximumEnum
++syn keyword juliaConstC AmrThicknessErrorResolutionEnum
++syn keyword juliaConstC AmrThicknessErrorThresholdEnum
++syn keyword juliaConstC AmrTypeEnum
++syn keyword juliaConstC AnalysisCounterEnum
++syn keyword juliaConstC AnalysisTypeEnum
++syn keyword juliaConstC AugmentedLagrangianREnum
++syn keyword juliaConstC AugmentedLagrangianRholambdaEnum
++syn keyword juliaConstC AugmentedLagrangianRhopEnum
++syn keyword juliaConstC AugmentedLagrangianRlambdaEnum
++syn keyword juliaConstC AugmentedLagrangianThetaEnum
++syn keyword juliaConstC AutodiffCbufsizeEnum
++syn keyword juliaConstC AutodiffDependentObjectsEnum
++syn keyword juliaConstC AutodiffDriverEnum
++syn keyword juliaConstC AutodiffFosForwardIndexEnum
++syn keyword juliaConstC AutodiffFosReverseIndexEnum
++syn keyword juliaConstC AutodiffFovForwardIndicesEnum
++syn keyword juliaConstC AutodiffGcTriggerMaxSizeEnum
++syn keyword juliaConstC AutodiffGcTriggerRatioEnum
++syn keyword juliaConstC AutodiffIsautodiffEnum
++syn keyword juliaConstC AutodiffLbufsizeEnum
++syn keyword juliaConstC AutodiffNumDependentsEnum
++syn keyword juliaConstC AutodiffNumIndependentsEnum
++syn keyword juliaConstC AutodiffObufsizeEnum
++syn keyword juliaConstC AutodiffTapeAllocEnum
++syn keyword juliaConstC AutodiffTbufsizeEnum
++syn keyword juliaConstC AutodiffXpEnum
++syn keyword juliaConstC BalancethicknessStabilizationEnum
++syn keyword juliaConstC BarystaticContributionsEnum
++syn keyword juliaConstC BasalforcingsAutoregressionInitialTimeEnum
++syn keyword juliaConstC BasalforcingsAutoregressionTimestepEnum
++syn keyword juliaConstC BasalforcingsAutoregressiveOrderEnum
++syn keyword juliaConstC BasalforcingsBeta0Enum
++syn keyword juliaConstC BasalforcingsBeta1Enum
++syn keyword juliaConstC BasalforcingsBottomplumedepthEnum
++syn keyword juliaConstC BasalforcingsCrustthicknessEnum
++syn keyword juliaConstC BasalforcingsDeepwaterElevationEnum
++syn keyword juliaConstC BasalforcingsDeepwaterMeltingRateEnum
++syn keyword juliaConstC BasalforcingsDtbgEnum
++syn keyword juliaConstC BasalforcingsEnum
++syn keyword juliaConstC BasalforcingsIsmip6AverageTfEnum
++syn keyword juliaConstC BasalforcingsIsmip6BasinAreaEnum
++syn keyword juliaConstC BasalforcingsIsmip6DeltaTEnum
++syn keyword juliaConstC BasalforcingsIsmip6Gamma0Enum
++syn keyword juliaConstC BasalforcingsIsmip6IsLocalEnum
++syn keyword juliaConstC BasalforcingsIsmip6NumBasinsEnum
++syn keyword juliaConstC BasalforcingsIsmip6TfDepthsEnum
++syn keyword juliaConstC BasalforcingsLinearNumBasinsEnum
++syn keyword juliaConstC BasalforcingsLowercrustheatEnum
++syn keyword juliaConstC BasalforcingsMantleconductivityEnum
++syn keyword juliaConstC BasalforcingsNusseltEnum
++syn keyword juliaConstC BasalforcingsPhiEnum
++syn keyword juliaConstC BasalforcingsPicoAverageOverturningEnum
++syn keyword juliaConstC BasalforcingsPicoAverageSalinityEnum
++syn keyword juliaConstC BasalforcingsPicoAverageTemperatureEnum
++syn keyword juliaConstC BasalforcingsPicoBoxAreaEnum
++syn keyword juliaConstC BasalforcingsPicoFarOceansalinityEnum
++syn keyword juliaConstC BasalforcingsPicoFarOceantemperatureEnum
++syn keyword juliaConstC BasalforcingsPicoGammaTEnum
++syn keyword juliaConstC BasalforcingsPicoIsplumeEnum
++syn keyword juliaConstC BasalforcingsPicoMaxboxcountEnum
++syn keyword juliaConstC BasalforcingsPicoNumBasinsEnum
++syn keyword juliaConstC BasalforcingsPlumeradiusEnum
++syn keyword juliaConstC BasalforcingsPlumexEnum
++syn keyword juliaConstC BasalforcingsPlumeyEnum
++syn keyword juliaConstC BasalforcingsThresholdThicknessEnum
++syn keyword juliaConstC BasalforcingsTopplumedepthEnum
++syn keyword juliaConstC BasalforcingsUppercrustheatEnum
++syn keyword juliaConstC BasalforcingsUppercrustthicknessEnum
++syn keyword juliaConstC BasalforcingsUpperdepthMeltEnum
++syn keyword juliaConstC BasalforcingsUpperwaterElevationEnum
++syn keyword juliaConstC BasalforcingsUpperwaterMeltingRateEnum
++syn keyword juliaConstC CalvingCrevasseDepthEnum
++syn keyword juliaConstC CalvingCrevasseThresholdEnum
++syn keyword juliaConstC CalvingHeightAboveFloatationEnum
++syn keyword juliaConstC CalvingLawEnum
++syn keyword juliaConstC CalvingMinthicknessEnum
++syn keyword juliaConstC CalvingTestSpeedfactorEnum
++syn keyword juliaConstC CalvingTestIndependentRateEnum
++syn keyword juliaConstC CalvingUseParamEnum
++syn keyword juliaConstC CalvingThetaEnum
++syn keyword juliaConstC CalvingAlphaEnum
++syn keyword juliaConstC CalvingXoffsetEnum
++syn keyword juliaConstC CalvingYoffsetEnum
++syn keyword juliaConstC ConfigurationTypeEnum
++syn keyword juliaConstC ConstantsGEnum
++syn keyword juliaConstC ConstantsNewtonGravityEnum
++syn keyword juliaConstC ConstantsReferencetemperatureEnum
++syn keyword juliaConstC ConstantsYtsEnum
++syn keyword juliaConstC ControlInputSizeMEnum
++syn keyword juliaConstC ControlInputSizeNEnum
++syn keyword juliaConstC ControlInputInterpolationEnum
++syn keyword juliaConstC CumBslcEnum
++syn keyword juliaConstC CumBslcIceEnum
++syn keyword juliaConstC CumBslcHydroEnum
++syn keyword juliaConstC CumBslcOceanEnum
++syn keyword juliaConstC CumBslcIcePartitionEnum
++syn keyword juliaConstC CumBslcHydroPartitionEnum
++syn keyword juliaConstC CumBslcOceanPartitionEnum
++syn keyword juliaConstC CumGmtslcEnum
++syn keyword juliaConstC CumGmslcEnum
++syn keyword juliaConstC DamageC1Enum
++syn keyword juliaConstC DamageC2Enum
++syn keyword juliaConstC DamageC3Enum
++syn keyword juliaConstC DamageC4Enum
++syn keyword juliaConstC DamageEnum
++syn keyword juliaConstC DamageEquivStressEnum
++syn keyword juliaConstC DamageEvolutionNumRequestedOutputsEnum
++syn keyword juliaConstC DamageEvolutionRequestedOutputsEnum
++syn keyword juliaConstC DamageHealingEnum
++syn keyword juliaConstC DamageKappaEnum
++syn keyword juliaConstC DamageLawEnum
++syn keyword juliaConstC DamageMaxDamageEnum
++syn keyword juliaConstC DamageStabilizationEnum
++syn keyword juliaConstC DamageStressThresholdEnum
++syn keyword juliaConstC DamageStressUBoundEnum
++syn keyword juliaConstC DebugProfilingEnum
++syn keyword juliaConstC DomainDimensionEnum
++syn keyword juliaConstC DomainTypeEnum
++syn keyword juliaConstC DslModelEnum
++syn keyword juliaConstC DslModelidEnum
++syn keyword juliaConstC DslNummodelsEnum
++syn keyword juliaConstC SolidearthIsExternalEnum
++syn keyword juliaConstC SolidearthExternalNatureEnum
++syn keyword juliaConstC SolidearthExternalModelidEnum
++syn keyword juliaConstC SolidearthExternalNummodelsEnum
++syn keyword juliaConstC SolidearthSettingsComputeBpGrdEnum
++syn keyword juliaConstC EarthIdEnum
++syn keyword juliaConstC ElasticEnum
++syn keyword juliaConstC EplZigZagCounterEnum
++syn keyword juliaConstC EsaHElasticEnum
++syn keyword juliaConstC EsaHemisphereEnum
++syn keyword juliaConstC EsaRequestedOutputsEnum
++syn keyword juliaConstC EsaUElasticEnum
++syn keyword juliaConstC ExtrapolationVariableEnum
++syn keyword juliaConstC FemModelCommEnum
++syn keyword juliaConstC FieldsEnum
++syn keyword juliaConstC FlowequationFeFSEnum
++syn keyword juliaConstC FlowequationIsFSEnum
++syn keyword juliaConstC FlowequationIsHOEnum
++syn keyword juliaConstC FlowequationIsL1L2Enum
++syn keyword juliaConstC FlowequationIsMOLHOEnum
++syn keyword juliaConstC FlowequationIsSIAEnum
++syn keyword juliaConstC FlowequationIsSSAEnum
++syn keyword juliaConstC FlowequationIsNitscheEnum
++syn keyword juliaConstC FeFSNitscheGammaEnum
++syn keyword juliaConstC FrictionCouplingEnum
++syn keyword juliaConstC FrictionDeltaEnum
++syn keyword juliaConstC FrictionEffectivePressureLimitEnum
++syn keyword juliaConstC FrictionFEnum
++syn keyword juliaConstC FrictionGammaEnum
++syn keyword juliaConstC FrictionLawEnum
++syn keyword juliaConstC FrictionPseudoplasticityExponentEnum
++syn keyword juliaConstC FrictionThresholdSpeedEnum
++syn keyword juliaConstC FrictionVoidRatioEnum
++syn keyword juliaConstC FrontalForcingsBasinIcefrontAreaEnum
++syn keyword juliaConstC FrontalForcingsAutoregressionInitialTimeEnum
++syn keyword juliaConstC FrontalForcingsAutoregressionTimestepEnum
++syn keyword juliaConstC FrontalForcingsAutoregressiveOrderEnum
++syn keyword juliaConstC FrontalForcingsBeta0Enum
++syn keyword juliaConstC FrontalForcingsBeta1Enum
++syn keyword juliaConstC FrontalForcingsNumberofBasinsEnum
++syn keyword juliaConstC FrontalForcingsParamEnum
++syn keyword juliaConstC FrontalForcingsPhiEnum
++syn keyword juliaConstC GrdModelEnum
++syn keyword juliaConstC GroundinglineFrictionInterpolationEnum
++syn keyword juliaConstC GroundinglineMeltInterpolationEnum
++syn keyword juliaConstC GroundinglineMigrationEnum
++syn keyword juliaConstC GroundinglineNumRequestedOutputsEnum
++syn keyword juliaConstC GroundinglineRequestedOutputsEnum
++syn keyword juliaConstC HydrologyAveragingEnum
++syn keyword juliaConstC HydrologyCavitySpacingEnum
++syn keyword juliaConstC HydrologyChannelConductivityEnum
++syn keyword juliaConstC HydrologyChannelSheetWidthEnum
++syn keyword juliaConstC HydrologyEnglacialVoidRatioEnum
++syn keyword juliaConstC HydrologyIschannelsEnum
++syn keyword juliaConstC HydrologyMeltFlagEnum
++syn keyword juliaConstC HydrologyModelEnum
++syn keyword juliaConstC HydrologyNumRequestedOutputsEnum
++syn keyword juliaConstC HydrologyPressureMeltCoefficientEnum
++syn keyword juliaConstC HydrologyRelaxationEnum
++syn keyword juliaConstC HydrologyRequestedOutputsEnum
++syn keyword juliaConstC HydrologySedimentKmaxEnum
++syn keyword juliaConstC HydrologyStepsPerStepEnum
++syn keyword juliaConstC HydrologyStorageEnum
++syn keyword juliaConstC HydrologydcEplColapseThicknessEnum
++syn keyword juliaConstC HydrologydcEplConductivityEnum
++syn keyword juliaConstC HydrologydcEplInitialThicknessEnum
++syn keyword juliaConstC HydrologydcEplLayerCompressibilityEnum
++syn keyword juliaConstC HydrologydcEplMaxThicknessEnum
++syn keyword juliaConstC HydrologydcEplPoreWaterMassEnum
++syn keyword juliaConstC HydrologydcEplThickCompEnum
++syn keyword juliaConstC HydrologydcEplflipLockEnum
++syn keyword juliaConstC HydrologydcIsefficientlayerEnum
++syn keyword juliaConstC HydrologydcLeakageFactorEnum
++syn keyword juliaConstC HydrologydcMaxIterEnum
++syn keyword juliaConstC HydrologydcPenaltyFactorEnum
++syn keyword juliaConstC HydrologydcPenaltyLockEnum
++syn keyword juliaConstC HydrologydcRelTolEnum
++syn keyword juliaConstC HydrologydcSedimentlimitEnum
++syn keyword juliaConstC HydrologydcSedimentlimitFlagEnum
++syn keyword juliaConstC HydrologydcSedimentLayerCompressibilityEnum
++syn keyword juliaConstC HydrologydcSedimentPoreWaterMassEnum
++syn keyword juliaConstC HydrologydcSedimentPorosityEnum
++syn keyword juliaConstC HydrologydcSedimentThicknessEnum
++syn keyword juliaConstC HydrologyStepAdaptEnum
++syn keyword juliaConstC HydrologydcTransferFlagEnum
++syn keyword juliaConstC HydrologydcUnconfinedFlagEnum
++syn keyword juliaConstC HydrologyshreveStabilizationEnum
++syn keyword juliaConstC IcecapToEarthCommEnum
++syn keyword juliaConstC IndexEnum
++syn keyword juliaConstC InputFileNameEnum
++syn keyword juliaConstC DirectoryNameEnum
++syn keyword juliaConstC IndicesEnum
++syn keyword juliaConstC InputToDepthaverageInEnum
++syn keyword juliaConstC InputToDepthaverageOutEnum
++syn keyword juliaConstC InputToExtrudeEnum
++syn keyword juliaConstC InputToL2ProjectEnum
++syn keyword juliaConstC InputToSmoothEnum
++syn keyword juliaConstC InversionAlgorithmEnum
++syn keyword juliaConstC InversionControlParametersEnum
++syn keyword juliaConstC InversionControlScalingFactorsEnum
++syn keyword juliaConstC InversionCostFunctionsEnum
++syn keyword juliaConstC InversionDxminEnum
++syn keyword juliaConstC InversionGatolEnum
++syn keyword juliaConstC InversionGradientScalingEnum
++syn keyword juliaConstC InversionGrtolEnum
++syn keyword juliaConstC InversionGttolEnum
++syn keyword juliaConstC InversionIncompleteAdjointEnum
++syn keyword juliaConstC InversionIscontrolEnum
++syn keyword juliaConstC InversionMaxiterEnum
++syn keyword juliaConstC InversionMaxiterPerStepEnum
++syn keyword juliaConstC InversionMaxstepsEnum
++syn keyword juliaConstC InversionNstepsEnum
++syn keyword juliaConstC InversionNumControlParametersEnum
++syn keyword juliaConstC InversionNumCostFunctionsEnum
++syn keyword juliaConstC InversionStepThresholdEnum
++syn keyword juliaConstC InversionTypeEnum
++syn keyword juliaConstC IvinsEnum
++syn keyword juliaConstC IsSlcCouplingEnum
++syn keyword juliaConstC LevelsetKillIcebergsEnum
++syn keyword juliaConstC LevelsetReinitFrequencyEnum
++syn keyword juliaConstC LevelsetStabilizationEnum
++syn keyword juliaConstC LockFileNameEnum
++syn keyword juliaConstC LoveAllowLayerDeletionEnum
++syn keyword juliaConstC LoveChandlerWobbleEnum
++syn keyword juliaConstC LoveCoreMantleBoundaryEnum
++syn keyword juliaConstC LoveEarthMassEnum
++syn keyword juliaConstC LoveForcingTypeEnum
++syn keyword juliaConstC LoveFrequenciesEnum
++syn keyword juliaConstC LoveIsTemporalEnum
++syn keyword juliaConstC LoveG0Enum
++syn keyword juliaConstC LoveGravitationalConstantEnum
++syn keyword juliaConstC LoveInnerCoreBoundaryEnum
++syn keyword juliaConstC LoveComplexComputationEnum
++syn keyword juliaConstC LoveQuadPrecisionEnum
++syn keyword juliaConstC LoveIntStepsPerLayerEnum
++syn keyword juliaConstC LoveMinIntegrationStepsEnum
++syn keyword juliaConstC LoveMaxIntegrationdrEnum
++syn keyword juliaConstC LoveKernelsEnum
++syn keyword juliaConstC LoveMu0Enum
++syn keyword juliaConstC LoveNfreqEnum
++syn keyword juliaConstC LoveNTemporalIterationsEnum
++syn keyword juliaConstC LoveNYiEquationsEnum
++syn keyword juliaConstC LoveR0Enum
++syn keyword juliaConstC LoveShNmaxEnum
++syn keyword juliaConstC LoveShNminEnum
++syn keyword juliaConstC LoveStartingLayerEnum
++syn keyword juliaConstC LoveUnderflowTolEnum
++syn keyword juliaConstC LovePostWidderThresholdEnum
++syn keyword juliaConstC LoveDebugEnum
++syn keyword juliaConstC LoveHypergeomNZEnum
++syn keyword juliaConstC LoveHypergeomNAlphaEnum
++syn keyword juliaConstC MassFluxSegmentsEnum
++syn keyword juliaConstC MassFluxSegmentsPresentEnum
++syn keyword juliaConstC MasstransportHydrostaticAdjustmentEnum
++syn keyword juliaConstC MasstransportIsfreesurfaceEnum
++syn keyword juliaConstC MasstransportMinThicknessEnum
++syn keyword juliaConstC MasstransportNumRequestedOutputsEnum
++syn keyword juliaConstC MasstransportPenaltyFactorEnum
++syn keyword juliaConstC MasstransportRequestedOutputsEnum
++syn keyword juliaConstC MasstransportStabilizationEnum
++syn keyword juliaConstC MaterialsBetaEnum
++syn keyword juliaConstC MaterialsEarthDensityEnum
++syn keyword juliaConstC MaterialsEffectiveconductivityAveragingEnum
++syn keyword juliaConstC MaterialsHeatcapacityEnum
++syn keyword juliaConstC MaterialsLatentheatEnum
++syn keyword juliaConstC MaterialsMeltingpointEnum
++syn keyword juliaConstC MaterialsMixedLayerCapacityEnum
++syn keyword juliaConstC MaterialsMuWaterEnum
++syn keyword juliaConstC MaterialsRheologyLawEnum
++syn keyword juliaConstC MaterialsRhoFreshwaterEnum
++syn keyword juliaConstC MaterialsRhoIceEnum
++syn keyword juliaConstC MaterialsRhoSeawaterEnum
++syn keyword juliaConstC MaterialsTemperateiceconductivityEnum
++syn keyword juliaConstC MaterialsThermalExchangeVelocityEnum
++syn keyword juliaConstC MaterialsThermalconductivityEnum
++syn keyword juliaConstC MeltingOffsetEnum
++syn keyword juliaConstC MeshAverageVertexConnectivityEnum
++syn keyword juliaConstC MeshElementtypeEnum
++syn keyword juliaConstC MeshNumberoflayersEnum
++syn keyword juliaConstC MeshNumberofverticesEnum
++syn keyword juliaConstC MeshNumberofelementsEnum
++syn keyword juliaConstC MigrationMaxEnum
++syn keyword juliaConstC ModelIdEnum
++syn keyword juliaConstC NbinsEnum
++syn keyword juliaConstC NodesEnum
++syn keyword juliaConstC NumModelsEnum
++syn keyword juliaConstC OceanGridNxEnum
++syn keyword juliaConstC OceanGridNyEnum
++syn keyword juliaConstC OceanGridXEnum
++syn keyword juliaConstC OceanGridYEnum
++syn keyword juliaConstC OutputBufferPointerEnum
++syn keyword juliaConstC OutputBufferSizePointerEnum
++syn keyword juliaConstC OutputFileNameEnum
++syn keyword juliaConstC OutputFilePointerEnum
++syn keyword juliaConstC OutputdefinitionEnum
++syn keyword juliaConstC QmuErrNameEnum
++syn keyword juliaConstC QmuInNameEnum
++syn keyword juliaConstC QmuIsdakotaEnum
++syn keyword juliaConstC QmuOutNameEnum
++syn keyword juliaConstC QmuOutputEnum
++syn keyword juliaConstC QmuCurrEvalIdEnum
++syn keyword juliaConstC QmuNsampleEnum
++syn keyword juliaConstC QmuResponsedescriptorsEnum
++syn keyword juliaConstC QmuVariableDescriptorsEnum
++syn keyword juliaConstC QmuVariablePartitionsEnum
++syn keyword juliaConstC QmuVariablePartitionsNpartEnum
++syn keyword juliaConstC QmuVariablePartitionsNtEnum
++syn keyword juliaConstC QmuResponsePartitionsEnum
++syn keyword juliaConstC QmuResponsePartitionsNpartEnum
++syn keyword juliaConstC QmuStatisticsEnum
++syn keyword juliaConstC QmuNumstatisticsEnum
++syn keyword juliaConstC QmuNdirectoriesEnum
++syn keyword juliaConstC QmuNfilesPerDirectoryEnum
++syn keyword juliaConstC QmuStatisticsMethodEnum
++syn keyword juliaConstC QmuMethodsEnum
++syn keyword juliaConstC RestartFileNameEnum
++syn keyword juliaConstC ResultsEnum
++syn keyword juliaConstC RootPathEnum
++syn keyword juliaConstC ModelnameEnum
++syn keyword juliaConstC SamplingAlphaEnum
++syn keyword juliaConstC SamplingNumRequestedOutputsEnum
++syn keyword juliaConstC SamplingRequestedOutputsEnum
++syn keyword juliaConstC SamplingRobinEnum
++syn keyword juliaConstC SamplingSeedEnum
++syn keyword juliaConstC SaveResultsEnum
++syn keyword juliaConstC SolidearthPartitionIceEnum
++syn keyword juliaConstC SolidearthPartitionHydroEnum
++syn keyword juliaConstC SolidearthPartitionOceanEnum
++syn keyword juliaConstC SolidearthNpartIceEnum
++syn keyword juliaConstC SolidearthNpartOceanEnum
++syn keyword juliaConstC SolidearthNpartHydroEnum
++syn keyword juliaConstC SolidearthPlanetRadiusEnum
++syn keyword juliaConstC SolidearthPlanetAreaEnum
++syn keyword juliaConstC SolidearthSettingsAbstolEnum
++syn keyword juliaConstC SolidearthSettingsCrossSectionShapeEnum
++syn keyword juliaConstC SolidearthSettingsElasticEnum
++syn keyword juliaConstC SolidearthSettingsViscousEnum
++syn keyword juliaConstC SolidearthSettingsSatelliteGraviEnum
++syn keyword juliaConstC SolidearthSettingsDegreeAccuracyEnum
++syn keyword juliaConstC SealevelchangeGeometryDoneEnum
++syn keyword juliaConstC SealevelchangeViscousNumStepsEnum
++syn keyword juliaConstC SealevelchangeViscousTimesEnum
++syn keyword juliaConstC SealevelchangeViscousIndexEnum
++syn keyword juliaConstC SealevelchangeViscousPolarMotionEnum
++syn keyword juliaConstC SealevelchangeRunCountEnum
++syn keyword juliaConstC SealevelchangeTransitionsEnum
++syn keyword juliaConstC SealevelchangeRequestedOutputsEnum
++syn keyword juliaConstC RotationalAngularVelocityEnum
++syn keyword juliaConstC RotationalEquatorialMoiEnum
++syn keyword juliaConstC RotationalPolarMoiEnum
++syn keyword juliaConstC LovePolarMotionTransferFunctionColinearEnum
++syn keyword juliaConstC LovePolarMotionTransferFunctionOrthogonalEnum
++syn keyword juliaConstC TidalLoveHEnum
++syn keyword juliaConstC TidalLoveKEnum
++syn keyword juliaConstC TidalLoveLEnum
++syn keyword juliaConstC TidalLoveK2SecularEnum
++syn keyword juliaConstC LoadLoveHEnum
++syn keyword juliaConstC LoadLoveKEnum
++syn keyword juliaConstC LoadLoveLEnum
++syn keyword juliaConstC LoveTimeFreqEnum
++syn keyword juliaConstC LoveIsTimeEnum
++syn keyword juliaConstC LoveHypergeomZEnum
++syn keyword juliaConstC LoveHypergeomTable1Enum
++syn keyword juliaConstC LoveHypergeomTable2Enum
++syn keyword juliaConstC SealevelchangeGSelfAttractionEnum
++syn keyword juliaConstC SealevelchangeGViscoElasticEnum
++syn keyword juliaConstC SealevelchangeUViscoElasticEnum
++syn keyword juliaConstC SealevelchangeHViscoElasticEnum
++syn keyword juliaConstC SealevelchangePolarMotionTransferFunctionColinearEnum
++syn keyword juliaConstC SealevelchangePolarMotionTransferFunctionOrthogonalEnum
++syn keyword juliaConstC SealevelchangePolarMotionTransferFunctionZEnum
++syn keyword juliaConstC SealevelchangeTidalK2Enum
++syn keyword juliaConstC SealevelchangeTidalH2Enum
++syn keyword juliaConstC SealevelchangeTidalL2Enum
++syn keyword juliaConstC SolidearthSettingsSealevelLoadingEnum
++syn keyword juliaConstC SolidearthSettingsGRDEnum
++syn keyword juliaConstC SolidearthSettingsRunFrequencyEnum
++syn keyword juliaConstC SolidearthSettingsTimeAccEnum
++syn keyword juliaConstC SolidearthSettingsHorizEnum
++syn keyword juliaConstC SolidearthSettingsMaxiterEnum
++syn keyword juliaConstC SolidearthSettingsGrdOceanEnum
++syn keyword juliaConstC SolidearthSettingsOceanAreaScalingEnum
++syn keyword juliaConstC StochasticForcingCovarianceEnum
++syn keyword juliaConstC StochasticForcingDefaultDimensionEnum
++syn keyword juliaConstC StochasticForcingDimensionsEnum
++syn keyword juliaConstC StochasticForcingFieldsEnum
++syn keyword juliaConstC StochasticForcingIsEffectivePressureEnum
++syn keyword juliaConstC StochasticForcingIsStochasticForcingEnum
++syn keyword juliaConstC StochasticForcingIsWaterPressureEnum
++syn keyword juliaConstC StochasticForcingNoisetermsEnum
++syn keyword juliaConstC StochasticForcingNumFieldsEnum
++syn keyword juliaConstC StochasticForcingRandomflagEnum
++syn keyword juliaConstC StochasticForcingTimestepEnum
++syn keyword juliaConstC SolidearthSettingsReltolEnum
++syn keyword juliaConstC SolidearthSettingsSelfAttractionEnum
++syn keyword juliaConstC SolidearthSettingsRotationEnum
++syn keyword juliaConstC SolidearthSettingsMaxSHCoeffEnum
++syn keyword juliaConstC SettingsIoGatherEnum
++syn keyword juliaConstC SettingsNumResultsOnNodesEnum
++syn keyword juliaConstC SettingsOutputFrequencyEnum
++syn keyword juliaConstC SettingsCheckpointFrequencyEnum
++syn keyword juliaConstC SettingsResultsOnNodesEnum
++syn keyword juliaConstC SettingsSbCouplingFrequencyEnum
++syn keyword juliaConstC SettingsSolverResidueThresholdEnum
++syn keyword juliaConstC SettingsWaitonlockEnum
++syn keyword juliaConstC SmbAIceEnum
++syn keyword juliaConstC SmbAIdxEnum
++syn keyword juliaConstC SmbASnowEnum
++syn keyword juliaConstC SmbAccualtiEnum
++syn keyword juliaConstC SmbAccugradEnum
++syn keyword juliaConstC SmbAccurefEnum
++syn keyword juliaConstC SmbAdThreshEnum
++syn keyword juliaConstC SmbAutoregressionInitialTimeEnum
++syn keyword juliaConstC SmbAutoregressionTimestepEnum
++syn keyword juliaConstC SmbAutoregressiveOrderEnum
++syn keyword juliaConstC SmbAveragingEnum
++syn keyword juliaConstC SmbBeta0Enum
++syn keyword juliaConstC SmbBeta1Enum
++syn keyword juliaConstC SmbDesfacEnum
++syn keyword juliaConstC SmbDpermilEnum
++syn keyword juliaConstC SmbDsnowIdxEnum
++syn keyword juliaConstC SmbElevationBinsEnum
++syn keyword juliaConstC SmbCldFracEnum
++syn keyword juliaConstC SmbDelta18oEnum
++syn keyword juliaConstC SmbDelta18oSurfaceEnum
++syn keyword juliaConstC SmbDenIdxEnum
++syn keyword juliaConstC SmbDtEnum
++syn keyword juliaConstC SmbEnum
++syn keyword juliaConstC SmbEIdxEnum
++syn keyword juliaConstC SmbFEnum
++syn keyword juliaConstC SmbInitDensityScalingEnum
++syn keyword juliaConstC SmbIsaccumulationEnum
++syn keyword juliaConstC SmbIsalbedoEnum
++syn keyword juliaConstC SmbIsconstrainsurfaceTEnum
++syn keyword juliaConstC SmbIsd18opdEnum
++syn keyword juliaConstC SmbIsdelta18oEnum
++syn keyword juliaConstC SmbIsdensificationEnum
++syn keyword juliaConstC SmbIsdeltaLWupEnum
++syn keyword juliaConstC SmbIsfirnwarmingEnum
++syn keyword juliaConstC SmbIsgraingrowthEnum
++syn keyword juliaConstC SmbIsmeltEnum
++syn keyword juliaConstC SmbIsmungsmEnum
++syn keyword juliaConstC SmbIsprecipscaledEnum
++syn keyword juliaConstC SmbIssetpddfacEnum
++syn keyword juliaConstC SmbIsshortwaveEnum
++syn keyword juliaConstC SmbIstemperaturescaledEnum
++syn keyword juliaConstC SmbIsthermalEnum
++syn keyword juliaConstC SmbIsturbulentfluxEnum
++syn keyword juliaConstC SmbKEnum
++syn keyword juliaConstC SmbLapseRatesEnum
++syn keyword juliaConstC SmbNumBasinsEnum
++syn keyword juliaConstC SmbNumElevationBinsEnum
++syn keyword juliaConstC SmbNumRequestedOutputsEnum
++syn keyword juliaConstC SmbPfacEnum
++syn keyword juliaConstC SmbPhiEnum
++syn keyword juliaConstC SmbRdlEnum
++syn keyword juliaConstC SmbRefElevationEnum
++syn keyword juliaConstC SmbRequestedOutputsEnum
++syn keyword juliaConstC SmbRlapsEnum
++syn keyword juliaConstC SmbRlapslgmEnum
++syn keyword juliaConstC SmbRunoffaltiEnum
++syn keyword juliaConstC SmbRunoffgradEnum
++syn keyword juliaConstC SmbRunoffrefEnum
++syn keyword juliaConstC SmbSealevEnum
++syn keyword juliaConstC SmbStepsPerStepEnum
++syn keyword juliaConstC SmbSwIdxEnum
++syn keyword juliaConstC SmbT0dryEnum
++syn keyword juliaConstC SmbT0wetEnum
++syn keyword juliaConstC SmbTeThreshEnum
++syn keyword juliaConstC SmbTdiffEnum
++syn keyword juliaConstC SmbThermoDeltaTScalingEnum
++syn keyword juliaConstC SmbTemperaturesReconstructedYearsEnum
++syn keyword juliaConstC SmbPrecipitationsReconstructedYearsEnum
++syn keyword juliaConstC SmoothThicknessMultiplierEnum
++syn keyword juliaConstC SolutionTypeEnum
++syn keyword juliaConstC SteadystateMaxiterEnum
++syn keyword juliaConstC SteadystateNumRequestedOutputsEnum
++syn keyword juliaConstC SteadystateReltolEnum
++syn keyword juliaConstC SteadystateRequestedOutputsEnum
++syn keyword juliaConstC StepEnum
++syn keyword juliaConstC StepsEnum
++syn keyword juliaConstC StressbalanceAbstolEnum
++syn keyword juliaConstC StressbalanceFSreconditioningEnum
++syn keyword juliaConstC StressbalanceIsnewtonEnum
++syn keyword juliaConstC StressbalanceMaxiterEnum
++syn keyword juliaConstC StressbalanceNumRequestedOutputsEnum
++syn keyword juliaConstC StressbalancePenaltyFactorEnum
++syn keyword juliaConstC StressbalanceReltolEnum
++syn keyword juliaConstC StressbalanceRequestedOutputsEnum
++syn keyword juliaConstC StressbalanceRestolEnum
++syn keyword juliaConstC StressbalanceRiftPenaltyThresholdEnum
++syn keyword juliaConstC StressbalanceShelfDampeningEnum
++syn keyword juliaConstC ThermalIsdrainicecolumnEnum
++syn keyword juliaConstC ThermalIsdynamicbasalspcEnum
++syn keyword juliaConstC ThermalIsenthalpyEnum
++syn keyword juliaConstC ThermalMaxiterEnum
++syn keyword juliaConstC ThermalNumRequestedOutputsEnum
++syn keyword juliaConstC ThermalPenaltyFactorEnum
++syn keyword juliaConstC ThermalPenaltyLockEnum
++syn keyword juliaConstC ThermalPenaltyThresholdEnum
++syn keyword juliaConstC ThermalReltolEnum
++syn keyword juliaConstC ThermalRequestedOutputsEnum
++syn keyword juliaConstC ThermalStabilizationEnum
++syn keyword juliaConstC ThermalWatercolumnUpperlimitEnum
++syn keyword juliaConstC TimeEnum
++syn keyword juliaConstC TimesteppingAverageForcingEnum
++syn keyword juliaConstC TimesteppingCflCoefficientEnum
++syn keyword juliaConstC TimesteppingCouplingTimeEnum
++syn keyword juliaConstC TimesteppingFinalTimeEnum
++syn keyword juliaConstC TimesteppingInterpForcingEnum
++syn keyword juliaConstC TimesteppingCycleForcingEnum
++syn keyword juliaConstC TimesteppingStartTimeEnum
++syn keyword juliaConstC TimesteppingTimeStepEnum
++syn keyword juliaConstC TimesteppingTimeStepMaxEnum
++syn keyword juliaConstC TimesteppingTimeStepMinEnum
++syn keyword juliaConstC TimesteppingTypeEnum
++syn keyword juliaConstC ToMITgcmCommEnum
++syn keyword juliaConstC ToolkitsFileNameEnum
++syn keyword juliaConstC ToolkitsOptionsAnalysesEnum
++syn keyword juliaConstC ToolkitsOptionsStringsEnum
++syn keyword juliaConstC ToolkitsTypesEnum
++syn keyword juliaConstC TransientAmrFrequencyEnum
++syn keyword juliaConstC TransientIsageEnum
++syn keyword juliaConstC TransientIsdamageevolutionEnum
++syn keyword juliaConstC TransientIsesaEnum
++syn keyword juliaConstC TransientIsgiaEnum
++syn keyword juliaConstC TransientIsgroundinglineEnum
++syn keyword juliaConstC TransientIshydrologyEnum
++syn keyword juliaConstC TransientIsmasstransportEnum
++syn keyword juliaConstC TransientIsoceantransportEnum
++syn keyword juliaConstC TransientIsmovingfrontEnum
++syn keyword juliaConstC TransientIsoceancouplingEnum
++syn keyword juliaConstC TransientIssamplingEnum
++syn keyword juliaConstC TransientIsslcEnum
++syn keyword juliaConstC TransientIssmbEnum
++syn keyword juliaConstC TransientIsstressbalanceEnum
++syn keyword juliaConstC TransientIsthermalEnum
++syn keyword juliaConstC TransientNumRequestedOutputsEnum
++syn keyword juliaConstC TransientRequestedOutputsEnum
++syn keyword juliaConstC VelocityEnum
++syn keyword juliaConstC XxeEnum
++syn keyword juliaConstC YyeEnum
++syn keyword juliaConstC ZzeEnum
++syn keyword juliaConstC AreaeEnum
++syn keyword juliaConstC WorldCommEnum
++syn keyword juliaConstC ParametersENDEnum
++syn keyword juliaConstC InputsSTARTEnum
++syn keyword juliaConstC AccumulatedDeltaBottomPressureEnum
++syn keyword juliaConstC AccumulatedDeltaIceThicknessEnum
++syn keyword juliaConstC AccumulatedDeltaTwsEnum
++syn keyword juliaConstC AdjointEnum
++syn keyword juliaConstC AdjointpEnum
++syn keyword juliaConstC AdjointxEnum
++syn keyword juliaConstC AdjointxBaseEnum
++syn keyword juliaConstC AdjointxShearEnum
++syn keyword juliaConstC AdjointyEnum
++syn keyword juliaConstC AdjointyBaseEnum
++syn keyword juliaConstC AdjointyShearEnum
++syn keyword juliaConstC AdjointzEnum
++syn keyword juliaConstC AgeEnum
++syn keyword juliaConstC AirEnum
++syn keyword juliaConstC ApproximationEnum
++syn keyword juliaConstC BalancethicknessMisfitEnum
++syn keyword juliaConstC BalancethicknessOmega0Enum
++syn keyword juliaConstC BalancethicknessOmegaEnum
++syn keyword juliaConstC BalancethicknessSpcthicknessEnum
++syn keyword juliaConstC BalancethicknessThickeningRateEnum
++syn keyword juliaConstC BasalCrevasseEnum
++syn keyword juliaConstC BasalforcingsDeepwaterMeltingRateAutoregressionEnum
++syn keyword juliaConstC BasalforcingsDeepwaterMeltingRateNoiseEnum
++syn keyword juliaConstC BasalforcingsDeepwaterMeltingRateValuesAutoregressionEnum
++syn keyword juliaConstC BasalforcingsFloatingiceMeltingRateEnum
++syn keyword juliaConstC BasalforcingsGeothermalfluxEnum
++syn keyword juliaConstC BasalforcingsGroundediceMeltingRateEnum
++syn keyword juliaConstC BasalforcingsLinearBasinIdEnum
++syn keyword juliaConstC BasalforcingsPerturbationMeltingRateEnum
++syn keyword juliaConstC BasalforcingsSpatialDeepwaterElevationEnum
++syn keyword juliaConstC BasalforcingsSpatialDeepwaterMeltingRateEnum
++syn keyword juliaConstC BasalforcingsSpatialUpperwaterElevationEnum
++syn keyword juliaConstC BasalforcingsSpatialUpperwaterMeltingRateEnum
++syn keyword juliaConstC BasalforcingsIsmip6BasinIdEnum
++syn keyword juliaConstC BasalforcingsIsmip6TfEnum
++syn keyword juliaConstC BasalforcingsIsmip6TfShelfEnum
++syn keyword juliaConstC BasalforcingsIsmip6MeltAnomalyEnum
++syn keyword juliaConstC BasalforcingsMeltrateFactorEnum
++syn keyword juliaConstC BasalforcingsOceanSalinityEnum
++syn keyword juliaConstC BasalforcingsOceanTempEnum
++syn keyword juliaConstC BasalforcingsPicoBasinIdEnum
++syn keyword juliaConstC BasalforcingsPicoBoxIdEnum
++syn keyword juliaConstC BasalforcingsPicoOverturningCoeffEnum
++syn keyword juliaConstC BasalforcingsPicoSubShelfOceanOverturningEnum
++syn keyword juliaConstC BasalforcingsPicoSubShelfOceanSalinityEnum
++syn keyword juliaConstC BasalforcingsPicoSubShelfOceanTempEnum
++syn keyword juliaConstC BasalStressxEnum
++syn keyword juliaConstC BasalStressyEnum
++syn keyword juliaConstC BasalStressEnum
++syn keyword juliaConstC BaseEnum
++syn keyword juliaConstC BaseOldEnum
++syn keyword juliaConstC BaseSlopeXEnum
++syn keyword juliaConstC BaseSlopeYEnum
++syn keyword juliaConstC BaselineBasalforcingsFloatingiceMeltingRateEnum
++syn keyword juliaConstC BaselineBasalforcingsSpatialDeepwaterMeltingRateEnum
++syn keyword juliaConstC BaselineCalvingCalvingrateEnum
++syn keyword juliaConstC BaselineFrictionEffectivePressureEnum
++syn keyword juliaConstC BaselineSmbMassBalanceEnum
++syn keyword juliaConstC BedEnum
++syn keyword juliaConstC BedGRDEnum
++syn keyword juliaConstC BedEastEnum
++syn keyword juliaConstC BedEastGRDEnum
++syn keyword juliaConstC BedNorthEnum
++syn keyword juliaConstC BedNorthGRDEnum
++syn keyword juliaConstC BedSlopeXEnum
++syn keyword juliaConstC BedSlopeYEnum
++syn keyword juliaConstC BottomPressureEnum
++syn keyword juliaConstC BottomPressureOldEnum
++syn keyword juliaConstC CalvingCalvingrateEnum
++syn keyword juliaConstC CalvingHabFractionEnum
++syn keyword juliaConstC CalvingAblationrateEnum
++syn keyword juliaConstC CalvingMeltingrateEnum
++syn keyword juliaConstC CalvingStressThresholdFloatingiceEnum
++syn keyword juliaConstC CalvingStressThresholdGroundediceEnum
++syn keyword juliaConstC CalvinglevermannCoeffEnum
++syn keyword juliaConstC CalvingratexEnum
++syn keyword juliaConstC CalvingrateyEnum
++syn keyword juliaConstC CalvingFluxLevelsetEnum
++syn keyword juliaConstC CalvingMeltingFluxLevelsetEnum
++syn keyword juliaConstC ConvergedEnum
++syn keyword juliaConstC CrevasseDepthEnum
++syn keyword juliaConstC DamageDEnum
++syn keyword juliaConstC DamageDOldEnum
++syn keyword juliaConstC DamageDbarEnum
++syn keyword juliaConstC DamageDbarOldEnum
++syn keyword juliaConstC DamageFEnum
++syn keyword juliaConstC DegreeOfChannelizationEnum
++syn keyword juliaConstC DepthBelowSurfaceEnum
++syn keyword juliaConstC DeltaIceThicknessEnum
++syn keyword juliaConstC DeltaTwsEnum
++syn keyword juliaConstC DeltaBottomPressureEnum
++syn keyword juliaConstC DeltaDslEnum
++syn keyword juliaConstC DslOldEnum
++syn keyword juliaConstC DslEnum
++syn keyword juliaConstC DeltaStrEnum
++syn keyword juliaConstC StrOldEnum
++syn keyword juliaConstC StrEnum
++syn keyword juliaConstC DeviatoricStresseffectiveEnum
++syn keyword juliaConstC DeviatoricStressxxEnum
++syn keyword juliaConstC DeviatoricStressxyEnum
++syn keyword juliaConstC DeviatoricStressxzEnum
++syn keyword juliaConstC DeviatoricStressyyEnum
++syn keyword juliaConstC DeviatoricStressyzEnum
++syn keyword juliaConstC DeviatoricStresszzEnum
++syn keyword juliaConstC DeviatoricStress1Enum
++syn keyword juliaConstC DeviatoricStress2Enum
++syn keyword juliaConstC DistanceToCalvingfrontEnum
++syn keyword juliaConstC DistanceToGroundinglineEnum
++syn keyword juliaConstC Domain2DhorizontalEnum
++syn keyword juliaConstC Domain2DverticalEnum
++syn keyword juliaConstC Domain3DEnum
++syn keyword juliaConstC DragCoefficientAbsGradientEnum
++syn keyword juliaConstC DrivingStressXEnum
++syn keyword juliaConstC DrivingStressYEnum
++syn keyword juliaConstC DummyEnum
++syn keyword juliaConstC EffectivePressureEnum
++syn keyword juliaConstC EffectivePressureSubstepEnum
++syn keyword juliaConstC EffectivePressureTransientEnum
++syn keyword juliaConstC EnthalpyEnum
++syn keyword juliaConstC EnthalpyPicardEnum
++syn keyword juliaConstC EplHeadEnum
++syn keyword juliaConstC EplHeadOldEnum
++syn keyword juliaConstC EplHeadSlopeXEnum
++syn keyword juliaConstC EplHeadSlopeYEnum
++syn keyword juliaConstC EplHeadSubstepEnum
++syn keyword juliaConstC EplHeadTransientEnum
++syn keyword juliaConstC EsaEmotionEnum
++syn keyword juliaConstC EsaNmotionEnum
++syn keyword juliaConstC EsaRotationrateEnum
++syn keyword juliaConstC EsaStrainratexxEnum
++syn keyword juliaConstC EsaStrainratexyEnum
++syn keyword juliaConstC EsaStrainrateyyEnum
++syn keyword juliaConstC EsaUmotionEnum
++syn keyword juliaConstC EsaXmotionEnum
++syn keyword juliaConstC EsaYmotionEnum
++syn keyword juliaConstC EtaDiffEnum
++syn keyword juliaConstC FlowequationBorderFSEnum
++syn keyword juliaConstC FrictionAsEnum
++syn keyword juliaConstC FrictionCEnum
++syn keyword juliaConstC FrictionCmaxEnum
++syn keyword juliaConstC FrictionCoefficientEnum
++syn keyword juliaConstC FrictionCoefficientcoulombEnum
++syn keyword juliaConstC FrictionCoulombWaterPressureEnum
++syn keyword juliaConstC FrictionEffectivePressureEnum
++syn keyword juliaConstC FrictionMEnum
++syn keyword juliaConstC FrictionPEnum
++syn keyword juliaConstC FrictionPressureAdjustedTemperatureEnum
++syn keyword juliaConstC FrictionQEnum
++syn keyword juliaConstC FrictionSedimentCompressibilityCoefficientEnum
++syn keyword juliaConstC FrictionTillFrictionAngleEnum
++syn keyword juliaConstC FrictionSchoofWaterPressureEnum
++syn keyword juliaConstC FrictionWaterLayerEnum
++syn keyword juliaConstC FrictionWaterPressureEnum
++syn keyword juliaConstC FrictionfEnum
++syn keyword juliaConstC FrontalForcingsBasinIdEnum
++syn keyword juliaConstC FrontalForcingsSubglacialDischargeEnum
++syn keyword juliaConstC FrontalForcingsThermalForcingEnum
++syn keyword juliaConstC GeometryHydrostaticRatioEnum
++syn keyword juliaConstC NGiaEnum
++syn keyword juliaConstC NGiaRateEnum
++syn keyword juliaConstC UGiaEnum
++syn keyword juliaConstC UGiaRateEnum
++syn keyword juliaConstC GradientEnum
++syn keyword juliaConstC GroundinglineHeightEnum
++syn keyword juliaConstC HydraulicPotentialEnum
++syn keyword juliaConstC HydraulicPotentialOldEnum
++syn keyword juliaConstC HydrologyBasalFluxEnum
++syn keyword juliaConstC HydrologyBumpHeightEnum
++syn keyword juliaConstC HydrologyBumpSpacingEnum
++syn keyword juliaConstC HydrologydcBasalMoulinInputEnum
++syn keyword juliaConstC HydrologydcEplThicknessEnum
++syn keyword juliaConstC HydrologydcEplThicknessOldEnum
++syn keyword juliaConstC HydrologydcEplThicknessSubstepEnum
++syn keyword juliaConstC HydrologydcEplThicknessTransientEnum
++syn keyword juliaConstC HydrologydcMaskEplactiveEltEnum
++syn keyword juliaConstC HydrologydcMaskEplactiveNodeEnum
++syn keyword juliaConstC HydrologydcMaskThawedEltEnum
++syn keyword juliaConstC HydrologydcMaskThawedNodeEnum
++syn keyword juliaConstC HydrologydcSedimentTransmitivityEnum
++syn keyword juliaConstC HydrologyDrainageRateEnum
++syn keyword juliaConstC HydrologyEnglacialInputEnum
++syn keyword juliaConstC HydrologyGapHeightEnum
++syn keyword juliaConstC HydrologyGapHeightXEnum
++syn keyword juliaConstC HydrologyGapHeightXXEnum
++syn keyword juliaConstC HydrologyGapHeightYEnum
++syn keyword juliaConstC HydrologyGapHeightYYEnum
++syn keyword juliaConstC HydrologyHeadEnum
++syn keyword juliaConstC HydrologyHeadOldEnum
++syn keyword juliaConstC HydrologyMoulinInputEnum
++syn keyword juliaConstC HydrologyNeumannfluxEnum
++syn keyword juliaConstC HydrologyReynoldsEnum
++syn keyword juliaConstC HydrologySheetConductivityEnum
++syn keyword juliaConstC HydrologySheetThicknessEnum
++syn keyword juliaConstC HydrologySheetThicknessOldEnum
++syn keyword juliaConstC HydrologyTwsEnum
++syn keyword juliaConstC HydrologyTwsSpcEnum
++syn keyword juliaConstC HydrologyTwsAnalysisEnum
++syn keyword juliaConstC HydrologyWatercolumnMaxEnum
++syn keyword juliaConstC HydrologyWaterVxEnum
++syn keyword juliaConstC HydrologyWaterVyEnum
++syn keyword juliaConstC IceEnum
++syn keyword juliaConstC IceMaskNodeActivationEnum
++syn keyword juliaConstC InputEnum
++syn keyword juliaConstC InversionCostFunctionsCoefficientsEnum
++syn keyword juliaConstC InversionSurfaceObsEnum
++syn keyword juliaConstC InversionThicknessObsEnum
++syn keyword juliaConstC InversionVelObsEnum
++syn keyword juliaConstC InversionVxObsEnum
++syn keyword juliaConstC InversionVyObsEnum
++syn keyword juliaConstC LevelsetfunctionSlopeXEnum
++syn keyword juliaConstC LevelsetfunctionSlopeYEnum
++syn keyword juliaConstC LevelsetObservationEnum
++syn keyword juliaConstC LoadingforceXEnum
++syn keyword juliaConstC LoadingforceYEnum
++syn keyword juliaConstC LoadingforceZEnum
++syn keyword juliaConstC MaskOceanLevelsetEnum
++syn keyword juliaConstC MaskIceLevelsetEnum
++syn keyword juliaConstC MaskIceRefLevelsetEnum
++syn keyword juliaConstC MasstransportSpcthicknessEnum
++syn keyword juliaConstC MaterialsRheologyBEnum
++syn keyword juliaConstC MaterialsRheologyBbarEnum
++syn keyword juliaConstC MaterialsRheologyEEnum
++syn keyword juliaConstC MaterialsRheologyEbarEnum
++syn keyword juliaConstC MaterialsRheologyEcEnum
++syn keyword juliaConstC MaterialsRheologyEcbarEnum
++syn keyword juliaConstC MaterialsRheologyEsEnum
++syn keyword juliaConstC MaterialsRheologyEsbarEnum
++syn keyword juliaConstC MaterialsRheologyNEnum
++syn keyword juliaConstC MeshScaleFactorEnum
++syn keyword juliaConstC MeshVertexonbaseEnum
++syn keyword juliaConstC MeshVertexonboundaryEnum
++syn keyword juliaConstC MeshVertexonsurfaceEnum
++syn keyword juliaConstC MisfitEnum
++syn keyword juliaConstC MovingFrontalVxEnum
++syn keyword juliaConstC MovingFrontalVyEnum
++syn keyword juliaConstC NeumannfluxEnum
++syn keyword juliaConstC NewDamageEnum
++syn keyword juliaConstC NodeEnum
++syn keyword juliaConstC OmegaAbsGradientEnum
++syn keyword juliaConstC OceantransportSpcbottompressureEnum
++syn keyword juliaConstC OceantransportSpcstrEnum
++syn keyword juliaConstC OceantransportSpcdslEnum
++syn keyword juliaConstC P0Enum
++syn keyword juliaConstC P1Enum
++syn keyword juliaConstC PartitioningEnum
++syn keyword juliaConstC PressureEnum
++syn keyword juliaConstC RadarEnum
++syn keyword juliaConstC RadarAttenuationMacGregorEnum
++syn keyword juliaConstC RadarAttenuationWolffEnum
++syn keyword juliaConstC RadarIcePeriodEnum
++syn keyword juliaConstC RadarPowerMacGregorEnum
++syn keyword juliaConstC RadarPowerWolffEnum
++syn keyword juliaConstC RheologyBAbsGradientEnum
++syn keyword juliaConstC RheologyBInitialguessEnum
++syn keyword juliaConstC RheologyBInitialguessMisfitEnum
++syn keyword juliaConstC RheologyBbarAbsGradientEnum
++syn keyword juliaConstC SampleEnum
++syn keyword juliaConstC SampleOldEnum
++syn keyword juliaConstC SampleNoiseEnum
++syn keyword juliaConstC SamplingBetaEnum
++syn keyword juliaConstC SamplingKappaEnum
++syn keyword juliaConstC SamplingPhiEnum
++syn keyword juliaConstC SamplingTauEnum
++syn keyword juliaConstC SealevelEnum
++syn keyword juliaConstC SealevelGRDEnum
++syn keyword juliaConstC SatGraviGRDEnum
++syn keyword juliaConstC SealevelBarystaticMaskEnum
++syn keyword juliaConstC SealevelBarystaticIceMaskEnum
++syn keyword juliaConstC SealevelBarystaticIceWeightsEnum
++syn keyword juliaConstC SealevelBarystaticIceAreaEnum
++syn keyword juliaConstC SealevelBarystaticIceLatbarEnum
++syn keyword juliaConstC SealevelBarystaticIceLongbarEnum
++syn keyword juliaConstC SealevelBarystaticIceLoadEnum
++syn keyword juliaConstC SealevelBarystaticHydroMaskEnum
++syn keyword juliaConstC SealevelBarystaticHydroWeightsEnum
++syn keyword juliaConstC SealevelBarystaticHydroAreaEnum
++syn keyword juliaConstC SealevelBarystaticHydroLatbarEnum
++syn keyword juliaConstC SealevelBarystaticHydroLongbarEnum
++syn keyword juliaConstC SealevelBarystaticHydroLoadEnum
++syn keyword juliaConstC SealevelBarystaticBpMaskEnum
++syn keyword juliaConstC SealevelBarystaticBpWeightsEnum
++syn keyword juliaConstC SealevelBarystaticBpAreaEnum
++syn keyword juliaConstC SealevelBarystaticBpLoadEnum
++syn keyword juliaConstC SealevelBarystaticOceanMaskEnum
++syn keyword juliaConstC SealevelBarystaticOceanWeightsEnum
++syn keyword juliaConstC SealevelBarystaticOceanAreaEnum
++syn keyword juliaConstC SealevelBarystaticOceanLatbarEnum
++syn keyword juliaConstC SealevelBarystaticOceanLongbarEnum
++syn keyword juliaConstC SealevelBarystaticOceanLoadEnum
++syn keyword juliaConstC SealevelNEsaEnum
++syn keyword juliaConstC SealevelNEsaRateEnum
++syn keyword juliaConstC SealevelRSLEnum
++syn keyword juliaConstC BslcEnum
++syn keyword juliaConstC BslcIceEnum
++syn keyword juliaConstC BslcHydroEnum
++syn keyword juliaConstC BslcOceanEnum
++syn keyword juliaConstC BslcRateEnum
++syn keyword juliaConstC GmtslcEnum
++syn keyword juliaConstC SealevelRSLBarystaticEnum
++syn keyword juliaConstC SealevelRSLRateEnum
++syn keyword juliaConstC SealevelUGrdEnum
++syn keyword juliaConstC SealevelNGrdEnum
++syn keyword juliaConstC SealevelUEastEsaEnum
++syn keyword juliaConstC SealevelUNorthEsaEnum
++syn keyword juliaConstC SealevelchangeIndicesEnum
++syn keyword juliaConstC SealevelchangeAlphaIndexEnum
++syn keyword juliaConstC SealevelchangeAzimuthIndexEnum
++syn keyword juliaConstC SealevelchangeGrotEnum
++syn keyword juliaConstC SealevelchangeGSatGravirotEnum
++syn keyword juliaConstC SealevelchangeGUrotEnum
++syn keyword juliaConstC SealevelchangeGNrotEnum
++syn keyword juliaConstC SealevelchangeGErotEnum
++syn keyword juliaConstC SealevelchangeAlphaIndexOceanEnum
++syn keyword juliaConstC SealevelchangeAlphaIndexIceEnum
++syn keyword juliaConstC SealevelchangeAlphaIndexHydroEnum
++syn keyword juliaConstC SealevelchangeAzimuthIndexOceanEnum
++syn keyword juliaConstC SealevelchangeAzimuthIndexIceEnum
++syn keyword juliaConstC SealevelchangeAzimuthIndexHydroEnum
++syn keyword juliaConstC SealevelchangeViscousRSLEnum
++syn keyword juliaConstC SealevelchangeViscousSGEnum
++syn keyword juliaConstC SealevelchangeViscousUEnum
++syn keyword juliaConstC SealevelchangeViscousNEnum
++syn keyword juliaConstC SealevelchangeViscousEEnum
++syn keyword juliaConstC SedimentHeadEnum
++syn keyword juliaConstC SedimentHeadOldEnum
++syn keyword juliaConstC SedimentHeadSubstepEnum
++syn keyword juliaConstC SedimentHeadTransientEnum
++syn keyword juliaConstC SedimentHeadResidualEnum
++syn keyword juliaConstC SedimentHeadStackedEnum
++syn keyword juliaConstC SigmaNNEnum
++syn keyword juliaConstC SigmaVMEnum
++syn keyword juliaConstC SmbAccumulatedECEnum
++syn keyword juliaConstC SmbAccumulatedMassBalanceEnum
++syn keyword juliaConstC SmbAccumulatedMeltEnum
++syn keyword juliaConstC SmbAccumulatedPrecipitationEnum
++syn keyword juliaConstC SmbAccumulatedRainEnum
++syn keyword juliaConstC SmbAccumulatedRefreezeEnum
++syn keyword juliaConstC SmbAccumulatedRunoffEnum
++syn keyword juliaConstC SmbAEnum
++syn keyword juliaConstC SmbAdiffEnum
++syn keyword juliaConstC SmbAValueEnum
++syn keyword juliaConstC SmbAccumulationEnum
++syn keyword juliaConstC SmbAdiffiniEnum
++syn keyword juliaConstC SmbAiniEnum
++syn keyword juliaConstC SmbAutoregressionNoiseEnum
++syn keyword juliaConstC SmbBasinsIdEnum
++syn keyword juliaConstC SmbBMaxEnum
++syn keyword juliaConstC SmbBMinEnum
++syn keyword juliaConstC SmbBNegEnum
++syn keyword juliaConstC SmbBPosEnum
++syn keyword juliaConstC SmbCEnum
++syn keyword juliaConstC SmbCcsnowValueEnum
++syn keyword juliaConstC SmbCciceValueEnum
++syn keyword juliaConstC SmbCotValueEnum
++syn keyword juliaConstC SmbDEnum
++syn keyword juliaConstC SmbDailyairdensityEnum
++syn keyword juliaConstC SmbDailyairhumidityEnum
++syn keyword juliaConstC SmbDailydlradiationEnum
++syn keyword juliaConstC SmbDailydsradiationEnum
++syn keyword juliaConstC SmbDailypressureEnum
++syn keyword juliaConstC SmbDailyrainfallEnum
++syn keyword juliaConstC SmbDailysnowfallEnum
++syn keyword juliaConstC SmbDailytemperatureEnum
++syn keyword juliaConstC SmbDailywindspeedEnum
++syn keyword juliaConstC SmbDiniEnum
++syn keyword juliaConstC SmbDlwrfEnum
++syn keyword juliaConstC SmbDulwrfValueEnum
++syn keyword juliaConstC SmbDswrfEnum
++syn keyword juliaConstC SmbDswdiffrfEnum
++syn keyword juliaConstC SmbDzAddEnum
++syn keyword juliaConstC SmbDzEnum
++syn keyword juliaConstC SmbDzMinEnum
++syn keyword juliaConstC SmbDzTopEnum
++syn keyword juliaConstC SmbDziniEnum
++syn keyword juliaConstC SmbEAirEnum
++syn keyword juliaConstC SmbECEnum
++syn keyword juliaConstC SmbECDtEnum
++syn keyword juliaConstC SmbECiniEnum
++syn keyword juliaConstC SmbElaEnum
++syn keyword juliaConstC SmbEvaporationEnum
++syn keyword juliaConstC SmbFACEnum
++syn keyword juliaConstC SmbGdnEnum
++syn keyword juliaConstC SmbGdniniEnum
++syn keyword juliaConstC SmbGspEnum
++syn keyword juliaConstC SmbGspiniEnum
++syn keyword juliaConstC SmbHrefEnum
++syn keyword juliaConstC SmbIsInitializedEnum
++syn keyword juliaConstC SmbMAddEnum
++syn keyword juliaConstC SmbMassBalanceEnum
++syn keyword juliaConstC SmbMassBalanceSubstepEnum
++syn keyword juliaConstC SmbMassBalanceTransientEnum
++syn keyword juliaConstC SmbMeanLHFEnum
++syn keyword juliaConstC SmbMeanSHFEnum
++syn keyword juliaConstC SmbMeanULWEnum
++syn keyword juliaConstC SmbMeltEnum
++syn keyword juliaConstC SmbMonthlytemperaturesEnum
++syn keyword juliaConstC SmbMSurfEnum
++syn keyword juliaConstC SmbNetLWEnum
++syn keyword juliaConstC SmbNetSWEnum
++syn keyword juliaConstC SmbPAirEnum
++syn keyword juliaConstC SmbPEnum
++syn keyword juliaConstC SmbPddfacIceEnum
++syn keyword juliaConstC SmbPddfacSnowEnum
++syn keyword juliaConstC SmbPrecipitationEnum
++syn keyword juliaConstC SmbPrecipitationsAnomalyEnum
++syn keyword juliaConstC SmbPrecipitationsLgmEnum
++syn keyword juliaConstC SmbPrecipitationsPresentdayEnum
++syn keyword juliaConstC SmbPrecipitationsReconstructedEnum
++syn keyword juliaConstC SmbRainEnum
++syn keyword juliaConstC SmbReEnum
++syn keyword juliaConstC SmbRefreezeEnum
++syn keyword juliaConstC SmbReiniEnum
++syn keyword juliaConstC SmbRunoffEnum
++syn keyword juliaConstC SmbRunoffSubstepEnum
++syn keyword juliaConstC SmbRunoffTransientEnum
++syn keyword juliaConstC SmbS0gcmEnum
++syn keyword juliaConstC SmbS0pEnum
++syn keyword juliaConstC SmbS0tEnum
++syn keyword juliaConstC SmbSizeiniEnum
++syn keyword juliaConstC SmbSmbCorrEnum
++syn keyword juliaConstC SmbSmbrefEnum
++syn keyword juliaConstC SmbSzaValueEnum
++syn keyword juliaConstC SmbTEnum
++syn keyword juliaConstC SmbTaEnum
++syn keyword juliaConstC SmbTeValueEnum
++syn keyword juliaConstC SmbTemperaturesAnomalyEnum
++syn keyword juliaConstC SmbTemperaturesLgmEnum
++syn keyword juliaConstC SmbTemperaturesPresentdayEnum
++syn keyword juliaConstC SmbTemperaturesReconstructedEnum
++syn keyword juliaConstC SmbTiniEnum
++syn keyword juliaConstC SmbTmeanEnum
++syn keyword juliaConstC SmbTzEnum
++syn keyword juliaConstC SmbValuesAutoregressionEnum
++syn keyword juliaConstC SmbVEnum
++syn keyword juliaConstC SmbVmeanEnum
++syn keyword juliaConstC SmbVzEnum
++syn keyword juliaConstC SmbWEnum
++syn keyword juliaConstC SmbWAddEnum
++syn keyword juliaConstC SmbWiniEnum
++syn keyword juliaConstC SmbZMaxEnum
++syn keyword juliaConstC SmbZMinEnum
++syn keyword juliaConstC SmbZTopEnum
++syn keyword juliaConstC SmbZYEnum
++syn keyword juliaConstC SolidearthExternalDisplacementEastRateEnum
++syn keyword juliaConstC SolidearthExternalDisplacementNorthRateEnum
++syn keyword juliaConstC SolidearthExternalDisplacementUpRateEnum
++syn keyword juliaConstC SolidearthExternalGeoidRateEnum
++syn keyword juliaConstC StochasticForcingDefaultIdEnum
++syn keyword juliaConstC StrainRateeffectiveEnum
++syn keyword juliaConstC StrainRateparallelEnum
++syn keyword juliaConstC StrainRateperpendicularEnum
++syn keyword juliaConstC StrainRatexxEnum
++syn keyword juliaConstC StrainRatexyEnum
++syn keyword juliaConstC StrainRatexzEnum
++syn keyword juliaConstC StrainRateyyEnum
++syn keyword juliaConstC StrainRateyzEnum
++syn keyword juliaConstC StrainRatezzEnum
++syn keyword juliaConstC StressMaxPrincipalEnum
++syn keyword juliaConstC StressTensorxxEnum
++syn keyword juliaConstC StressTensorxyEnum
++syn keyword juliaConstC StressTensorxzEnum
++syn keyword juliaConstC StressTensoryyEnum
++syn keyword juliaConstC StressTensoryzEnum
++syn keyword juliaConstC StressTensorzzEnum
++syn keyword juliaConstC SurfaceAbsMisfitEnum
++syn keyword juliaConstC SurfaceAbsVelMisfitEnum
++syn keyword juliaConstC AreaEnum
++syn keyword juliaConstC SealevelAreaEnum
++syn keyword juliaConstC SurfaceAreaEnum
++syn keyword juliaConstC SurfaceAverageVelMisfitEnum
++syn keyword juliaConstC SurfaceCrevasseEnum
++syn keyword juliaConstC SurfaceEnum
++syn keyword juliaConstC SurfaceOldEnum
++syn keyword juliaConstC SurfaceLogVelMisfitEnum
++syn keyword juliaConstC SurfaceLogVxVyMisfitEnum
++syn keyword juliaConstC SurfaceObservationEnum
++syn keyword juliaConstC SurfaceRelVelMisfitEnum
++syn keyword juliaConstC SurfaceSlopeXEnum
++syn keyword juliaConstC SurfaceSlopeYEnum
++syn keyword juliaConstC TemperatureEnum
++syn keyword juliaConstC TemperaturePDDEnum
++syn keyword juliaConstC TemperaturePicardEnum
++syn keyword juliaConstC TemperatureSEMICEnum
++syn keyword juliaConstC ThermalforcingAutoregressionNoiseEnum
++syn keyword juliaConstC ThermalforcingValuesAutoregressionEnum
++syn keyword juliaConstC ThermalSpctemperatureEnum
++syn keyword juliaConstC ThicknessAbsGradientEnum
++syn keyword juliaConstC ThicknessAbsMisfitEnum
++syn keyword juliaConstC ThicknessAcrossGradientEnum
++syn keyword juliaConstC ThicknessAlongGradientEnum
++syn keyword juliaConstC ThicknessEnum
++syn keyword juliaConstC ThicknessOldEnum
++syn keyword juliaConstC ThicknessPositiveEnum
++syn keyword juliaConstC ThicknessResidualEnum
++syn keyword juliaConstC TransientAccumulatedDeltaIceThicknessEnum
++syn keyword juliaConstC VelEnum
++syn keyword juliaConstC VxAverageEnum
++syn keyword juliaConstC VxBaseEnum
++syn keyword juliaConstC VxEnum
++syn keyword juliaConstC VxMeshEnum
++syn keyword juliaConstC VxObsEnum
++syn keyword juliaConstC VxShearEnum
++syn keyword juliaConstC VxSurfaceEnum
++syn keyword juliaConstC VyAverageEnum
++syn keyword juliaConstC VyBaseEnum
++syn keyword juliaConstC VyEnum
++syn keyword juliaConstC VyMeshEnum
++syn keyword juliaConstC VyObsEnum
++syn keyword juliaConstC VyShearEnum
++syn keyword juliaConstC VySurfaceEnum
++syn keyword juliaConstC VzEnum
++syn keyword juliaConstC VzFSEnum
++syn keyword juliaConstC VzHOEnum
++syn keyword juliaConstC VzMeshEnum
++syn keyword juliaConstC VzSSAEnum
++syn keyword juliaConstC WaterColumnOldEnum
++syn keyword juliaConstC WatercolumnEnum
++syn keyword juliaConstC WaterfractionDrainageEnum
++syn keyword juliaConstC WaterfractionDrainageIntegratedEnum
++syn keyword juliaConstC WaterfractionEnum
++syn keyword juliaConstC WaterheightEnum
++syn keyword juliaConstC WeightsLevelsetObservationEnum
++syn keyword juliaConstC WeightsSurfaceObservationEnum
++syn keyword juliaConstC OldAccumulatedDeltaBottomPressureEnum
++syn keyword juliaConstC OldAccumulatedDeltaIceThicknessEnum
++syn keyword juliaConstC OldAccumulatedDeltaTwsEnum
++syn keyword juliaConstC Outputdefinition1Enum
++syn keyword juliaConstC Outputdefinition10Enum
++syn keyword juliaConstC Outputdefinition11Enum
++syn keyword juliaConstC Outputdefinition12Enum
++syn keyword juliaConstC Outputdefinition13Enum
++syn keyword juliaConstC Outputdefinition14Enum
++syn keyword juliaConstC Outputdefinition15Enum
++syn keyword juliaConstC Outputdefinition16Enum
++syn keyword juliaConstC Outputdefinition17Enum
++syn keyword juliaConstC Outputdefinition18Enum
++syn keyword juliaConstC Outputdefinition19Enum
++syn keyword juliaConstC Outputdefinition20Enum
++syn keyword juliaConstC Outputdefinition21Enum
++syn keyword juliaConstC Outputdefinition22Enum
++syn keyword juliaConstC Outputdefinition23Enum
++syn keyword juliaConstC Outputdefinition24Enum
++syn keyword juliaConstC Outputdefinition25Enum
++syn keyword juliaConstC Outputdefinition26Enum
++syn keyword juliaConstC Outputdefinition27Enum
++syn keyword juliaConstC Outputdefinition28Enum
++syn keyword juliaConstC Outputdefinition29Enum
++syn keyword juliaConstC Outputdefinition2Enum
++syn keyword juliaConstC Outputdefinition30Enum
++syn keyword juliaConstC Outputdefinition31Enum
++syn keyword juliaConstC Outputdefinition32Enum
++syn keyword juliaConstC Outputdefinition33Enum
++syn keyword juliaConstC Outputdefinition34Enum
++syn keyword juliaConstC Outputdefinition35Enum
++syn keyword juliaConstC Outputdefinition36Enum
++syn keyword juliaConstC Outputdefinition37Enum
++syn keyword juliaConstC Outputdefinition38Enum
++syn keyword juliaConstC Outputdefinition39Enum
++syn keyword juliaConstC Outputdefinition3Enum
++syn keyword juliaConstC Outputdefinition40Enum
++syn keyword juliaConstC Outputdefinition41Enum
++syn keyword juliaConstC Outputdefinition42Enum
++syn keyword juliaConstC Outputdefinition43Enum
++syn keyword juliaConstC Outputdefinition44Enum
++syn keyword juliaConstC Outputdefinition45Enum
++syn keyword juliaConstC Outputdefinition46Enum
++syn keyword juliaConstC Outputdefinition47Enum
++syn keyword juliaConstC Outputdefinition48Enum
++syn keyword juliaConstC Outputdefinition49Enum
++syn keyword juliaConstC Outputdefinition4Enum
++syn keyword juliaConstC Outputdefinition50Enum
++syn keyword juliaConstC Outputdefinition51Enum
++syn keyword juliaConstC Outputdefinition52Enum
++syn keyword juliaConstC Outputdefinition53Enum
++syn keyword juliaConstC Outputdefinition54Enum
++syn keyword juliaConstC Outputdefinition55Enum
++syn keyword juliaConstC Outputdefinition56Enum
++syn keyword juliaConstC Outputdefinition57Enum
++syn keyword juliaConstC Outputdefinition58Enum
++syn keyword juliaConstC Outputdefinition59Enum
++syn keyword juliaConstC Outputdefinition5Enum
++syn keyword juliaConstC Outputdefinition60Enum
++syn keyword juliaConstC Outputdefinition61Enum
++syn keyword juliaConstC Outputdefinition62Enum
++syn keyword juliaConstC Outputdefinition63Enum
++syn keyword juliaConstC Outputdefinition64Enum
++syn keyword juliaConstC Outputdefinition65Enum
++syn keyword juliaConstC Outputdefinition66Enum
++syn keyword juliaConstC Outputdefinition67Enum
++syn keyword juliaConstC Outputdefinition68Enum
++syn keyword juliaConstC Outputdefinition69Enum
++syn keyword juliaConstC Outputdefinition6Enum
++syn keyword juliaConstC Outputdefinition70Enum
++syn keyword juliaConstC Outputdefinition71Enum
++syn keyword juliaConstC Outputdefinition72Enum
++syn keyword juliaConstC Outputdefinition73Enum
++syn keyword juliaConstC Outputdefinition74Enum
++syn keyword juliaConstC Outputdefinition75Enum
++syn keyword juliaConstC Outputdefinition76Enum
++syn keyword juliaConstC Outputdefinition77Enum
++syn keyword juliaConstC Outputdefinition78Enum
++syn keyword juliaConstC Outputdefinition79Enum
++syn keyword juliaConstC Outputdefinition7Enum
++syn keyword juliaConstC Outputdefinition80Enum
++syn keyword juliaConstC Outputdefinition81Enum
++syn keyword juliaConstC Outputdefinition82Enum
++syn keyword juliaConstC Outputdefinition83Enum
++syn keyword juliaConstC Outputdefinition84Enum
++syn keyword juliaConstC Outputdefinition85Enum
++syn keyword juliaConstC Outputdefinition86Enum
++syn keyword juliaConstC Outputdefinition87Enum
++syn keyword juliaConstC Outputdefinition88Enum
++syn keyword juliaConstC Outputdefinition89Enum
++syn keyword juliaConstC Outputdefinition8Enum
++syn keyword juliaConstC Outputdefinition90Enum
++syn keyword juliaConstC Outputdefinition91Enum
++syn keyword juliaConstC Outputdefinition92Enum
++syn keyword juliaConstC Outputdefinition93Enum
++syn keyword juliaConstC Outputdefinition94Enum
++syn keyword juliaConstC Outputdefinition95Enum
++syn keyword juliaConstC Outputdefinition96Enum
++syn keyword juliaConstC Outputdefinition97Enum
++syn keyword juliaConstC Outputdefinition98Enum
++syn keyword juliaConstC Outputdefinition99Enum
++syn keyword juliaConstC Outputdefinition9Enum
++syn keyword juliaConstC Outputdefinition100Enum
++syn keyword juliaConstC InputsENDEnum
++syn keyword juliaConstC AbsoluteEnum
++syn keyword juliaConstC AdaptiveTimesteppingEnum
++syn keyword juliaConstC AdjointBalancethickness2AnalysisEnum
++syn keyword juliaConstC AdjointBalancethicknessAnalysisEnum
++syn keyword juliaConstC AdjointHorizAnalysisEnum
++syn keyword juliaConstC AgeAnalysisEnum
++syn keyword juliaConstC AggressiveMigrationEnum
++syn keyword juliaConstC AmrBamgEnum
++syn keyword juliaConstC AmrNeopzEnum
++syn keyword juliaConstC AndroidFrictionCoefficientEnum
++syn keyword juliaConstC ArrheniusEnum
++syn keyword juliaConstC AutodiffJacobianEnum
++syn keyword juliaConstC AutoregressionLinearFloatingMeltRateEnum
++syn keyword juliaConstC Balancethickness2AnalysisEnum
++syn keyword juliaConstC Balancethickness2SolutionEnum
++syn keyword juliaConstC BalancethicknessAnalysisEnum
++syn keyword juliaConstC BalancethicknessApparentMassbalanceEnum
++syn keyword juliaConstC BalancethicknessSoftAnalysisEnum
++syn keyword juliaConstC BalancethicknessSoftSolutionEnum
++syn keyword juliaConstC BalancethicknessSolutionEnum
++syn keyword juliaConstC BalancevelocityAnalysisEnum
++syn keyword juliaConstC BalancevelocitySolutionEnum
++syn keyword juliaConstC BasalforcingsIsmip6Enum
++syn keyword juliaConstC BasalforcingsPicoEnum
++syn keyword juliaConstC BeckmannGoosseFloatingMeltRateEnum
++syn keyword juliaConstC BedSlopeSolutionEnum
++syn keyword juliaConstC BoolExternalResultEnum
++syn keyword juliaConstC BoolInputEnum
++syn keyword juliaConstC IntInputEnum
++syn keyword juliaConstC DoubleInputEnum
++syn keyword juliaConstC BoolParamEnum
++syn keyword juliaConstC BoundaryEnum
++syn keyword juliaConstC BuddJackaEnum
++syn keyword juliaConstC CalvingDev2Enum
++syn keyword juliaConstC CalvingHabEnum
++syn keyword juliaConstC CalvingLevermannEnum
++syn keyword juliaConstC CalvingTestEnum
++syn keyword juliaConstC CalvingParameterizationEnum
++syn keyword juliaConstC CalvingVonmisesEnum
++syn keyword juliaConstC CfdragcoeffabsgradEnum
++syn keyword juliaConstC CfsurfacelogvelEnum
++syn keyword juliaConstC CfsurfacesquareEnum
++syn keyword juliaConstC CflevelsetmisfitEnum
++syn keyword juliaConstC ChannelEnum
++syn keyword juliaConstC ChannelAreaEnum
++syn keyword juliaConstC ChannelAreaOldEnum
++syn keyword juliaConstC ChannelDischargeEnum
++syn keyword juliaConstC ClosedEnum
++syn keyword juliaConstC ColinearEnum
++syn keyword juliaConstC ConstraintsEnum
++syn keyword juliaConstC ContactEnum
++syn keyword juliaConstC ContourEnum
++syn keyword juliaConstC ContoursEnum
++syn keyword juliaConstC ControlInputEnum
++syn keyword juliaConstC ControlInputGradEnum
++syn keyword juliaConstC ControlInputMaxsEnum
++syn keyword juliaConstC ControlInputMinsEnum
++syn keyword juliaConstC ControlInputValuesEnum
++syn keyword juliaConstC CrouzeixRaviartEnum
++syn keyword juliaConstC CuffeyEnum
++syn keyword juliaConstC CuffeyTemperateEnum
++syn keyword juliaConstC DamageEvolutionAnalysisEnum
++syn keyword juliaConstC DamageEvolutionSolutionEnum
++syn keyword juliaConstC DataSetEnum
++syn keyword juliaConstC DataSetParamEnum
++syn keyword juliaConstC DatasetInputEnum
++syn keyword juliaConstC DefaultAnalysisEnum
++syn keyword juliaConstC DefaultCalvingEnum
++syn keyword juliaConstC DenseEnum
++syn keyword juliaConstC DependentObjectEnum
++syn keyword juliaConstC DepthAverageAnalysisEnum
++syn keyword juliaConstC DeviatoricStressErrorEstimatorEnum
++syn keyword juliaConstC DivergenceEnum
++syn keyword juliaConstC Domain3DsurfaceEnum
++syn keyword juliaConstC DoubleArrayInputEnum
++syn keyword juliaConstC ArrayInputEnum
++syn keyword juliaConstC IntArrayInputEnum
++syn keyword juliaConstC DoubleExternalResultEnum
++syn keyword juliaConstC DoubleMatArrayParamEnum
++syn keyword juliaConstC DoubleMatExternalResultEnum
++syn keyword juliaConstC DoubleMatParamEnum
++syn keyword juliaConstC DoubleParamEnum
++syn keyword juliaConstC DoubleVecParamEnum
++syn keyword juliaConstC ElementEnum
++syn keyword juliaConstC ElementHookEnum
++syn keyword juliaConstC ElementSIdEnum
++syn keyword juliaConstC EnthalpyAnalysisEnum
++syn keyword juliaConstC EsaAnalysisEnum
++syn keyword juliaConstC EsaSolutionEnum
++syn keyword juliaConstC EsaTransitionsEnum
++syn keyword juliaConstC ExternalResultEnum
++syn keyword juliaConstC ExtrapolationAnalysisEnum
++syn keyword juliaConstC ExtrudeFromBaseAnalysisEnum
++syn keyword juliaConstC ExtrudeFromTopAnalysisEnum
++syn keyword juliaConstC FSApproximationEnum
++syn keyword juliaConstC FSSolverEnum
++syn keyword juliaConstC FSpressureEnum
++syn keyword juliaConstC FSvelocityEnum
++syn keyword juliaConstC FemModelEnum
++syn keyword juliaConstC FileParamEnum
++syn keyword juliaConstC FixedTimesteppingEnum
++syn keyword juliaConstC FloatingAreaEnum
++syn keyword juliaConstC FloatingAreaScaledEnum
++syn keyword juliaConstC FloatingMeltRateEnum
++syn keyword juliaConstC FreeEnum
++syn keyword juliaConstC FreeSurfaceBaseAnalysisEnum
++syn keyword juliaConstC FreeSurfaceTopAnalysisEnum
++syn keyword juliaConstC FrontalForcingsDefaultEnum
++syn keyword juliaConstC FrontalForcingsRignotEnum
++syn keyword juliaConstC FrontalForcingsRignotAutoregressionEnum
++syn keyword juliaConstC FsetEnum
++syn keyword juliaConstC FullMeltOnPartiallyFloatingEnum
++syn keyword juliaConstC GLheightadvectionAnalysisEnum
++syn keyword juliaConstC GaussPentaEnum
++syn keyword juliaConstC GaussSegEnum
++syn keyword juliaConstC GaussTetraEnum
++syn keyword juliaConstC GaussTriaEnum
++syn keyword juliaConstC GenericOptionEnum
++syn keyword juliaConstC GenericParamEnum
++syn keyword juliaConstC GenericExternalResultEnum
++syn keyword juliaConstC Gradient1Enum
++syn keyword juliaConstC Gradient2Enum
++syn keyword juliaConstC Gradient3Enum
++syn keyword juliaConstC Gradient4Enum
++syn keyword juliaConstC GroundedAreaEnum
++syn keyword juliaConstC GroundedAreaScaledEnum
++syn keyword juliaConstC GroundingOnlyEnum
++syn keyword juliaConstC GroundinglineMassFluxEnum
++syn keyword juliaConstC GsetEnum
++syn keyword juliaConstC GslEnum
++syn keyword juliaConstC HOApproximationEnum
++syn keyword juliaConstC HOFSApproximationEnum
++syn keyword juliaConstC HookEnum
++syn keyword juliaConstC HydrologyDCEfficientAnalysisEnum
++syn keyword juliaConstC HydrologyDCInefficientAnalysisEnum
++syn keyword juliaConstC HydrologyGlaDSAnalysisEnum
++syn keyword juliaConstC HydrologyGlaDSEnum
++syn keyword juliaConstC HydrologyPismAnalysisEnum
++syn keyword juliaConstC HydrologyShaktiAnalysisEnum
++syn keyword juliaConstC HydrologyShreveAnalysisEnum
++syn keyword juliaConstC HydrologySolutionEnum
++syn keyword juliaConstC HydrologySubstepsEnum
++syn keyword juliaConstC HydrologySubTimeEnum
++syn keyword juliaConstC HydrologydcEnum
++syn keyword juliaConstC HydrologypismEnum
++syn keyword juliaConstC HydrologyshaktiEnum
++syn keyword juliaConstC HydrologyshreveEnum
++syn keyword juliaConstC IceMassEnum
++syn keyword juliaConstC IceMassScaledEnum
++syn keyword juliaConstC IceVolumeAboveFloatationEnum
++syn keyword juliaConstC IceVolumeAboveFloatationScaledEnum
++syn keyword juliaConstC IceVolumeEnum
++syn keyword juliaConstC IceVolumeScaledEnum
++syn keyword juliaConstC IcefrontMassFluxEnum
++syn keyword juliaConstC IcefrontMassFluxLevelsetEnum
++syn keyword juliaConstC IncrementalEnum
++syn keyword juliaConstC IndexedEnum
++syn keyword juliaConstC IntExternalResultEnum
++syn keyword juliaConstC ElementInputEnum
++syn keyword juliaConstC IntMatExternalResultEnum
++syn keyword juliaConstC IntMatParamEnum
++syn keyword juliaConstC IntParamEnum
++syn keyword juliaConstC IntVecParamEnum
++syn keyword juliaConstC InputsEnum
++syn keyword juliaConstC InternalEnum
++syn keyword juliaConstC IntersectEnum
++syn keyword juliaConstC InversionVzObsEnum
++syn keyword juliaConstC JEnum
++syn keyword juliaConstC L1L2ApproximationEnum
++syn keyword juliaConstC MOLHOApproximationEnum
++syn keyword juliaConstC L2ProjectionBaseAnalysisEnum
++syn keyword juliaConstC L2ProjectionEPLAnalysisEnum
++syn keyword juliaConstC LACrouzeixRaviartEnum
++syn keyword juliaConstC LATaylorHoodEnum
++syn keyword juliaConstC LambdaSEnum
++syn keyword juliaConstC LevelsetAnalysisEnum
++syn keyword juliaConstC LevelsetfunctionPicardEnum
++syn keyword juliaConstC LinearFloatingMeltRateEnum
++syn keyword juliaConstC LliboutryDuvalEnum
++syn keyword juliaConstC LoadsEnum
++syn keyword juliaConstC LoveAnalysisEnum
++syn keyword juliaConstC LoveHfEnum
++syn keyword juliaConstC LoveHtEnum
++syn keyword juliaConstC LoveKernelsImagEnum
++syn keyword juliaConstC LoveKernelsRealEnum
++syn keyword juliaConstC LoveKfEnum
++syn keyword juliaConstC LoveKtEnum
++syn keyword juliaConstC LoveLfEnum
++syn keyword juliaConstC LoveLtEnum
++syn keyword juliaConstC LoveTidalHtEnum
++syn keyword juliaConstC LoveTidalKtEnum
++syn keyword juliaConstC LoveTidalLtEnum
++syn keyword juliaConstC LovePMTF1tEnum
++syn keyword juliaConstC LovePMTF2tEnum
++syn keyword juliaConstC LoveYiEnum
++syn keyword juliaConstC LoveRhsEnum
++syn keyword juliaConstC LoveSolutionEnum
++syn keyword juliaConstC MINIEnum
++syn keyword juliaConstC MINIcondensedEnum
++syn keyword juliaConstC MantlePlumeGeothermalFluxEnum
++syn keyword juliaConstC MassFluxEnum
++syn keyword juliaConstC MassconEnum
++syn keyword juliaConstC MassconaxpbyEnum
++syn keyword juliaConstC MassfluxatgateEnum
++syn keyword juliaConstC MasstransportAnalysisEnum
++syn keyword juliaConstC MasstransportSolutionEnum
++syn keyword juliaConstC MatdamageiceEnum
++syn keyword juliaConstC MatenhancediceEnum
++syn keyword juliaConstC MaterialsEnum
++syn keyword juliaConstC MatestarEnum
++syn keyword juliaConstC MaticeEnum
++syn keyword juliaConstC MatlithoEnum
++syn keyword juliaConstC MathydroEnum
++syn keyword juliaConstC MatrixParamEnum
++syn keyword juliaConstC MaxAbsVxEnum
++syn keyword juliaConstC MaxAbsVyEnum
++syn keyword juliaConstC MaxAbsVzEnum
++syn keyword juliaConstC MaxDivergenceEnum
++syn keyword juliaConstC MaxVelEnum
++syn keyword juliaConstC MaxVxEnum
++syn keyword juliaConstC MaxVyEnum
++syn keyword juliaConstC MaxVzEnum
++syn keyword juliaConstC MelangeEnum
++syn keyword juliaConstC MeltingAnalysisEnum
++syn keyword juliaConstC MeshElementsEnum
++syn keyword juliaConstC MeshXEnum
++syn keyword juliaConstC MeshYEnum
++syn keyword juliaConstC MinVelEnum
++syn keyword juliaConstC MinVxEnum
++syn keyword juliaConstC MinVyEnum
++syn keyword juliaConstC MinVzEnum
++syn keyword juliaConstC MismipFloatingMeltRateEnum
++syn keyword juliaConstC MoulinEnum
++syn keyword juliaConstC MpiDenseEnum
++syn keyword juliaConstC MpiEnum
++syn keyword juliaConstC MpiSparseEnum
++syn keyword juliaConstC MumpsEnum
++syn keyword juliaConstC NoFrictionOnPartiallyFloatingEnum
++syn keyword juliaConstC NoMeltOnPartiallyFloatingEnum
++syn keyword juliaConstC NodalEnum
++syn keyword juliaConstC NodalvalueEnum
++syn keyword juliaConstC NodeSIdEnum
++syn keyword juliaConstC NoneApproximationEnum
++syn keyword juliaConstC NoneEnum
++syn keyword juliaConstC NumberedcostfunctionEnum
++syn keyword juliaConstC NyeCO2Enum
++syn keyword juliaConstC NyeH2OEnum
++syn keyword juliaConstC NumericalfluxEnum
++syn keyword juliaConstC OceantransportAnalysisEnum
++syn keyword juliaConstC OceantransportSolutionEnum
++syn keyword juliaConstC OldGradientEnum
++syn keyword juliaConstC OneLayerP4zEnum
++syn keyword juliaConstC OpenEnum
++syn keyword juliaConstC OptionEnum
++syn keyword juliaConstC ParamEnum
++syn keyword juliaConstC ParametersEnum
++syn keyword juliaConstC P0ArrayEnum
++syn keyword juliaConstC P0DGEnum
++syn keyword juliaConstC P1DGEnum
++syn keyword juliaConstC P1P1Enum
++syn keyword juliaConstC P1P1GLSEnum
++syn keyword juliaConstC P1bubbleEnum
++syn keyword juliaConstC P1bubblecondensedEnum
++syn keyword juliaConstC P1xP2Enum
++syn keyword juliaConstC P1xP3Enum
++syn keyword juliaConstC P1xP4Enum
++syn keyword juliaConstC P2Enum
++syn keyword juliaConstC P2bubbleEnum
++syn keyword juliaConstC P2bubblecondensedEnum
++syn keyword juliaConstC P2xP1Enum
++syn keyword juliaConstC P2xP4Enum
++syn keyword juliaConstC PatersonEnum
++syn keyword juliaConstC PengridEnum
++syn keyword juliaConstC PenpairEnum
++syn keyword juliaConstC PentaEnum
++syn keyword juliaConstC PentaInputEnum
++syn keyword juliaConstC ProfilerEnum
++syn keyword juliaConstC ProfilingCurrentFlopsEnum
++syn keyword juliaConstC ProfilingCurrentMemEnum
++syn keyword juliaConstC ProfilingSolutionTimeEnum
++syn keyword juliaConstC RegionaloutputEnum
++syn keyword juliaConstC RegularEnum
++syn keyword juliaConstC RecoveryAnalysisEnum
++syn keyword juliaConstC RiftfrontEnum
++syn keyword juliaConstC SamplingAnalysisEnum
++syn keyword juliaConstC SamplingSolutionEnum
++syn keyword juliaConstC SIAApproximationEnum
++syn keyword juliaConstC SMBautoregressionEnum
++syn keyword juliaConstC SMBcomponentsEnum
++syn keyword juliaConstC SMBd18opddEnum
++syn keyword juliaConstC SMBforcingEnum
++syn keyword juliaConstC SMBgcmEnum
++syn keyword juliaConstC SMBgembEnum
++syn keyword juliaConstC SMBgradientsEnum
++syn keyword juliaConstC SMBgradientscomponentsEnum
++syn keyword juliaConstC SMBgradientselaEnum
++syn keyword juliaConstC SMBhenningEnum
++syn keyword juliaConstC SMBmeltcomponentsEnum
++syn keyword juliaConstC SMBpddEnum
++syn keyword juliaConstC SMBpddSicopolisEnum
++syn keyword juliaConstC SMBsemicEnum
++syn keyword juliaConstC SSAApproximationEnum
++syn keyword juliaConstC SSAFSApproximationEnum
++syn keyword juliaConstC SSAHOApproximationEnum
++syn keyword juliaConstC ScaledEnum
++syn keyword juliaConstC SealevelAbsoluteEnum
++syn keyword juliaConstC SealevelEmotionEnum
++syn keyword juliaConstC SealevelchangePolarMotionXEnum
++syn keyword juliaConstC SealevelchangePolarMotionYEnum
++syn keyword juliaConstC SealevelchangePolarMotionZEnum
++syn keyword juliaConstC SealevelchangePolarMotionEnum
++syn keyword juliaConstC SealevelNmotionEnum
++syn keyword juliaConstC SealevelUmotionEnum
++syn keyword juliaConstC SealevelchangeAnalysisEnum
++syn keyword juliaConstC SegEnum
++syn keyword juliaConstC SegInputEnum
++syn keyword juliaConstC SegmentEnum
++syn keyword juliaConstC SegmentRiftfrontEnum
++syn keyword juliaConstC SeparateEnum
++syn keyword juliaConstC SeqEnum
++syn keyword juliaConstC SmbAnalysisEnum
++syn keyword juliaConstC SmbSolutionEnum
++syn keyword juliaConstC SmoothAnalysisEnum
++syn keyword juliaConstC SoftMigrationEnum
++syn keyword juliaConstC SpatialLinearFloatingMeltRateEnum
++syn keyword juliaConstC SpcDynamicEnum
++syn keyword juliaConstC SpcStaticEnum
++syn keyword juliaConstC SpcTransientEnum
++syn keyword juliaConstC SsetEnum
++syn keyword juliaConstC StatisticsSolutionEnum
++syn keyword juliaConstC SteadystateSolutionEnum
++syn keyword juliaConstC StressIntensityFactorEnum
++syn keyword juliaConstC StressbalanceAnalysisEnum
++syn keyword juliaConstC StressbalanceConvergenceNumStepsEnum
++syn keyword juliaConstC StressbalanceSIAAnalysisEnum
++syn keyword juliaConstC StressbalanceSolutionEnum
++syn keyword juliaConstC StressbalanceVerticalAnalysisEnum
++syn keyword juliaConstC StringArrayParamEnum
++syn keyword juliaConstC StringExternalResultEnum
++syn keyword juliaConstC StringParamEnum
++syn keyword juliaConstC SubelementFriction1Enum
++syn keyword juliaConstC SubelementFriction2Enum
++syn keyword juliaConstC SubelementMelt1Enum
++syn keyword juliaConstC SubelementMelt2Enum
++syn keyword juliaConstC SubelementMigrationEnum
++syn keyword juliaConstC SurfaceSlopeSolutionEnum
++syn keyword juliaConstC TaylorHoodEnum
++syn keyword juliaConstC TetraEnum
++syn keyword juliaConstC TetraInputEnum
++syn keyword juliaConstC ThermalAnalysisEnum
++syn keyword juliaConstC ThermalSolutionEnum
++syn keyword juliaConstC ThicknessErrorEstimatorEnum
++syn keyword juliaConstC TotalCalvingFluxLevelsetEnum
++syn keyword juliaConstC TotalCalvingMeltingFluxLevelsetEnum
++syn keyword juliaConstC TotalFloatingBmbEnum
++syn keyword juliaConstC TotalFloatingBmbScaledEnum
++syn keyword juliaConstC TotalGroundedBmbEnum
++syn keyword juliaConstC TotalGroundedBmbScaledEnum
++syn keyword juliaConstC TotalSmbEnum
++syn keyword juliaConstC TotalSmbScaledEnum
++syn keyword juliaConstC TransientArrayParamEnum
++syn keyword juliaConstC TransientInputEnum
++syn keyword juliaConstC TransientParamEnum
++syn keyword juliaConstC TransientSolutionEnum
++syn keyword juliaConstC TriaEnum
++syn keyword juliaConstC TriaInputEnum
++syn keyword juliaConstC UzawaPressureAnalysisEnum
++syn keyword juliaConstC VectorParamEnum
++syn keyword juliaConstC VertexEnum
++syn keyword juliaConstC VertexLIdEnum
++syn keyword juliaConstC VertexPIdEnum
++syn keyword juliaConstC VertexSIdEnum
++syn keyword juliaConstC VerticesEnum
++syn keyword juliaConstC ViscousHeatingEnum
++syn keyword juliaConstC WaterEnum
++syn keyword juliaConstC XTaylorHoodEnum
++syn keyword juliaConstC XYEnum
++syn keyword juliaConstC XYZEnum
++syn keyword juliaConstC BalancethicknessD0Enum
++syn keyword juliaConstC BalancethicknessDiffusionCoefficientEnum
++syn keyword juliaConstC BilinearInterpEnum
++syn keyword juliaConstC CalvingdevCoeffEnum
++syn keyword juliaConstC DeviatoricStressEnum
++syn keyword juliaConstC EtaAbsGradientEnum
++syn keyword juliaConstC MeshZEnum
++syn keyword juliaConstC NearestInterpEnum
++syn keyword juliaConstC OutputdefinitionListEnum
++syn keyword juliaConstC SealevelObsEnum
++syn keyword juliaConstC SealevelWeightsEnum
++syn keyword juliaConstC StrainRateEnum
++syn keyword juliaConstC StressTensorEnum
++syn keyword juliaConstC StressbalanceViscosityOvershootEnum
++syn keyword juliaConstC SubelementMigration4Enum
++syn keyword juliaConstC TimesteppingTimeAdaptEnum
++syn keyword juliaConstC TriangleInterpEnum
++syn keyword juliaConstC MaximumNumberOfDefinitionsEnum
++"ISSM Enums end
+Index: ../trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp
+===================================================================
+--- ../trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp	(revision 27178)
++++ ../trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp	(revision 27179)
+@@ -247,6 +247,7 @@
+ 	      else if (strcmp(name,"HydrologydcSedimentPoreWaterMass")==0) return HydrologydcSedimentPoreWaterMassEnum;
+ 	      else if (strcmp(name,"HydrologydcSedimentPorosity")==0) return HydrologydcSedimentPorosityEnum;
+ 	      else if (strcmp(name,"HydrologydcSedimentThickness")==0) return HydrologydcSedimentThicknessEnum;
++	      else if (strcmp(name,"HydrologyStepAdapt")==0) return HydrologyStepAdaptEnum;
+ 	      else if (strcmp(name,"HydrologydcTransferFlag")==0) return HydrologydcTransferFlagEnum;
+ 	      else if (strcmp(name,"HydrologydcUnconfinedFlag")==0) return HydrologydcUnconfinedFlagEnum;
+ 	      else if (strcmp(name,"HydrologyshreveStabilization")==0) return HydrologyshreveStabilizationEnum;
+@@ -258,11 +259,11 @@
+ 	      else if (strcmp(name,"InputToDepthaverageIn")==0) return InputToDepthaverageInEnum;
+ 	      else if (strcmp(name,"InputToDepthaverageOut")==0) return InputToDepthaverageOutEnum;
+ 	      else if (strcmp(name,"InputToExtrude")==0) return InputToExtrudeEnum;
+-	      else if (strcmp(name,"InputToL2Project")==0) return InputToL2ProjectEnum;
+          else stage=3;
+    }
+    if(stage==3){
+-	      if (strcmp(name,"InputToSmooth")==0) return InputToSmoothEnum;
++	      if (strcmp(name,"InputToL2Project")==0) return InputToL2ProjectEnum;
++	      else if (strcmp(name,"InputToSmooth")==0) return InputToSmoothEnum;
+ 	      else if (strcmp(name,"InversionAlgorithm")==0) return InversionAlgorithmEnum;
+ 	      else if (strcmp(name,"InversionControlParameters")==0) return InversionControlParametersEnum;
+ 	      else if (strcmp(name,"InversionControlScalingFactors")==0) return InversionControlScalingFactorsEnum;
+@@ -381,11 +382,11 @@
+ 	      else if (strcmp(name,"QmuNfilesPerDirectory")==0) return QmuNfilesPerDirectoryEnum;
+ 	      else if (strcmp(name,"QmuStatisticsMethod")==0) return QmuStatisticsMethodEnum;
+ 	      else if (strcmp(name,"QmuMethods")==0) return QmuMethodsEnum;
+-	      else if (strcmp(name,"RestartFileName")==0) return RestartFileNameEnum;
+          else stage=4;
+    }
+    if(stage==4){
+-	      if (strcmp(name,"Results")==0) return ResultsEnum;
++	      if (strcmp(name,"RestartFileName")==0) return RestartFileNameEnum;
++	      else if (strcmp(name,"Results")==0) return ResultsEnum;
+ 	      else if (strcmp(name,"RootPath")==0) return RootPathEnum;
+ 	      else if (strcmp(name,"Modelname")==0) return ModelnameEnum;
+ 	      else if (strcmp(name,"SamplingAlpha")==0) return SamplingAlphaEnum;
+@@ -504,11 +505,11 @@
+ 	      else if (strcmp(name,"SmbIsalbedo")==0) return SmbIsalbedoEnum;
+ 	      else if (strcmp(name,"SmbIsconstrainsurfaceT")==0) return SmbIsconstrainsurfaceTEnum;
+ 	      else if (strcmp(name,"SmbIsd18opd")==0) return SmbIsd18opdEnum;
+-	      else if (strcmp(name,"SmbIsdelta18o")==0) return SmbIsdelta18oEnum;
+          else stage=5;
+    }
+    if(stage==5){
+-	      if (strcmp(name,"SmbIsdensification")==0) return SmbIsdensificationEnum;
++	      if (strcmp(name,"SmbIsdelta18o")==0) return SmbIsdelta18oEnum;
++	      else if (strcmp(name,"SmbIsdensification")==0) return SmbIsdensificationEnum;
+ 	      else if (strcmp(name,"SmbIsdeltaLWup")==0) return SmbIsdeltaLWupEnum;
+ 	      else if (strcmp(name,"SmbIsfirnwarming")==0) return SmbIsfirnwarmingEnum;
+ 	      else if (strcmp(name,"SmbIsgraingrowth")==0) return SmbIsgraingrowthEnum;
+@@ -577,6 +578,7 @@
+ 	      else if (strcmp(name,"ThermalStabilization")==0) return ThermalStabilizationEnum;
+ 	      else if (strcmp(name,"ThermalWatercolumnUpperlimit")==0) return ThermalWatercolumnUpperlimitEnum;
+ 	      else if (strcmp(name,"Time")==0) return TimeEnum;
++	      else if (strcmp(name,"TimesteppingAverageForcing")==0) return TimesteppingAverageForcingEnum;
+ 	      else if (strcmp(name,"TimesteppingCflCoefficient")==0) return TimesteppingCflCoefficientEnum;
+ 	      else if (strcmp(name,"TimesteppingCouplingTime")==0) return TimesteppingCouplingTimeEnum;
+ 	      else if (strcmp(name,"TimesteppingFinalTime")==0) return TimesteppingFinalTimeEnum;
+@@ -626,12 +628,12 @@
+ 	      else if (strcmp(name,"Adjointx")==0) return AdjointxEnum;
+ 	      else if (strcmp(name,"AdjointxBase")==0) return AdjointxBaseEnum;
+ 	      else if (strcmp(name,"AdjointxShear")==0) return AdjointxShearEnum;
+-	      else if (strcmp(name,"Adjointy")==0) return AdjointyEnum;
+-	      else if (strcmp(name,"AdjointyBase")==0) return AdjointyBaseEnum;
+          else stage=6;
+    }
+    if(stage==6){
+-	      if (strcmp(name,"AdjointyShear")==0) return AdjointyShearEnum;
++	      if (strcmp(name,"Adjointy")==0) return AdjointyEnum;
++	      else if (strcmp(name,"AdjointyBase")==0) return AdjointyBaseEnum;
++	      else if (strcmp(name,"AdjointyShear")==0) return AdjointyShearEnum;
+ 	      else if (strcmp(name,"Adjointz")==0) return AdjointzEnum;
+ 	      else if (strcmp(name,"Age")==0) return AgeEnum;
+ 	      else if (strcmp(name,"Air")==0) return AirEnum;
+@@ -749,12 +751,12 @@
+ 	      else if (strcmp(name,"EplHeadTransient")==0) return EplHeadTransientEnum;
+ 	      else if (strcmp(name,"EsaEmotion")==0) return EsaEmotionEnum;
+ 	      else if (strcmp(name,"EsaNmotion")==0) return EsaNmotionEnum;
+-	      else if (strcmp(name,"EsaRotationrate")==0) return EsaRotationrateEnum;
+-	      else if (strcmp(name,"EsaStrainratexx")==0) return EsaStrainratexxEnum;
+          else stage=7;
+    }
+    if(stage==7){
+-	      if (strcmp(name,"EsaStrainratexy")==0) return EsaStrainratexyEnum;
++	      if (strcmp(name,"EsaRotationrate")==0) return EsaRotationrateEnum;
++	      else if (strcmp(name,"EsaStrainratexx")==0) return EsaStrainratexxEnum;
++	      else if (strcmp(name,"EsaStrainratexy")==0) return EsaStrainratexyEnum;
+ 	      else if (strcmp(name,"EsaStrainrateyy")==0) return EsaStrainrateyyEnum;
+ 	      else if (strcmp(name,"EsaUmotion")==0) return EsaUmotionEnum;
+ 	      else if (strcmp(name,"EsaXmotion")==0) return EsaXmotionEnum;
+@@ -872,12 +874,12 @@
+ 	      else if (strcmp(name,"Pressure")==0) return PressureEnum;
+ 	      else if (strcmp(name,"Radar")==0) return RadarEnum;
+ 	      else if (strcmp(name,"RadarAttenuationMacGregor")==0) return RadarAttenuationMacGregorEnum;
+-	      else if (strcmp(name,"RadarAttenuationWolff")==0) return RadarAttenuationWolffEnum;
+-	      else if (strcmp(name,"RadarIcePeriod")==0) return RadarIcePeriodEnum;
+          else stage=8;
+    }
+    if(stage==8){
+-	      if (strcmp(name,"RadarPowerMacGregor")==0) return RadarPowerMacGregorEnum;
++	      if (strcmp(name,"RadarAttenuationWolff")==0) return RadarAttenuationWolffEnum;
++	      else if (strcmp(name,"RadarIcePeriod")==0) return RadarIcePeriodEnum;
++	      else if (strcmp(name,"RadarPowerMacGregor")==0) return RadarPowerMacGregorEnum;
+ 	      else if (strcmp(name,"RadarPowerWolff")==0) return RadarPowerWolffEnum;
+ 	      else if (strcmp(name,"RheologyBAbsGradient")==0) return RheologyBAbsGradientEnum;
+ 	      else if (strcmp(name,"RheologyBInitialguess")==0) return RheologyBInitialguessEnum;
+@@ -995,12 +997,12 @@
+ 	      else if (strcmp(name,"SmbDlwrf")==0) return SmbDlwrfEnum;
+ 	      else if (strcmp(name,"SmbDulwrfValue")==0) return SmbDulwrfValueEnum;
+ 	      else if (strcmp(name,"SmbDswrf")==0) return SmbDswrfEnum;
+-	      else if (strcmp(name,"SmbDswdiffrf")==0) return SmbDswdiffrfEnum;
+-	      else if (strcmp(name,"SmbDzAdd")==0) return SmbDzAddEnum;
+          else stage=9;
+    }
+    if(stage==9){
+-	      if (strcmp(name,"SmbDz")==0) return SmbDzEnum;
++	      if (strcmp(name,"SmbDswdiffrf")==0) return SmbDswdiffrfEnum;
++	      else if (strcmp(name,"SmbDzAdd")==0) return SmbDzAddEnum;
++	      else if (strcmp(name,"SmbDz")==0) return SmbDzEnum;
+ 	      else if (strcmp(name,"SmbDzMin")==0) return SmbDzMinEnum;
+ 	      else if (strcmp(name,"SmbDzTop")==0) return SmbDzTopEnum;
+ 	      else if (strcmp(name,"SmbDzini")==0) return SmbDziniEnum;
+@@ -1118,12 +1120,12 @@
+ 	      else if (strcmp(name,"ThermalSpctemperature")==0) return ThermalSpctemperatureEnum;
+ 	      else if (strcmp(name,"ThicknessAbsGradient")==0) return ThicknessAbsGradientEnum;
+ 	      else if (strcmp(name,"ThicknessAbsMisfit")==0) return ThicknessAbsMisfitEnum;
+-	      else if (strcmp(name,"ThicknessAcrossGradient")==0) return ThicknessAcrossGradientEnum;
+-	      else if (strcmp(name,"ThicknessAlongGradient")==0) return ThicknessAlongGradientEnum;
+          else stage=10;
+    }
+    if(stage==10){
+-	      if (strcmp(name,"Thickness")==0) return ThicknessEnum;
++	      if (strcmp(name,"ThicknessAcrossGradient")==0) return ThicknessAcrossGradientEnum;
++	      else if (strcmp(name,"ThicknessAlongGradient")==0) return ThicknessAlongGradientEnum;
++	      else if (strcmp(name,"Thickness")==0) return ThicknessEnum;
+ 	      else if (strcmp(name,"ThicknessOld")==0) return ThicknessOldEnum;
+ 	      else if (strcmp(name,"ThicknessPositive")==0) return ThicknessPositiveEnum;
+ 	      else if (strcmp(name,"ThicknessResidual")==0) return ThicknessResidualEnum;
+@@ -1241,12 +1243,12 @@
+ 	      else if (strcmp(name,"Outputdefinition82")==0) return Outputdefinition82Enum;
+ 	      else if (strcmp(name,"Outputdefinition83")==0) return Outputdefinition83Enum;
+ 	      else if (strcmp(name,"Outputdefinition84")==0) return Outputdefinition84Enum;
+-	      else if (strcmp(name,"Outputdefinition85")==0) return Outputdefinition85Enum;
+-	      else if (strcmp(name,"Outputdefinition86")==0) return Outputdefinition86Enum;
+          else stage=11;
+    }
+    if(stage==11){
+-	      if (strcmp(name,"Outputdefinition87")==0) return Outputdefinition87Enum;
++	      if (strcmp(name,"Outputdefinition85")==0) return Outputdefinition85Enum;
++	      else if (strcmp(name,"Outputdefinition86")==0) return Outputdefinition86Enum;
++	      else if (strcmp(name,"Outputdefinition87")==0) return Outputdefinition87Enum;
+ 	      else if (strcmp(name,"Outputdefinition88")==0) return Outputdefinition88Enum;
+ 	      else if (strcmp(name,"Outputdefinition89")==0) return Outputdefinition89Enum;
+ 	      else if (strcmp(name,"Outputdefinition8")==0) return Outputdefinition8Enum;
+@@ -1364,12 +1366,12 @@
+ 	      else if (strcmp(name,"FemModel")==0) return FemModelEnum;
+ 	      else if (strcmp(name,"FileParam")==0) return FileParamEnum;
+ 	      else if (strcmp(name,"FixedTimestepping")==0) return FixedTimesteppingEnum;
+-	      else if (strcmp(name,"FloatingArea")==0) return FloatingAreaEnum;
+-	      else if (strcmp(name,"FloatingAreaScaled")==0) return FloatingAreaScaledEnum;
+          else stage=12;
+    }
+    if(stage==12){
+-	      if (strcmp(name,"FloatingMeltRate")==0) return FloatingMeltRateEnum;
++	      if (strcmp(name,"FloatingArea")==0) return FloatingAreaEnum;
++	      else if (strcmp(name,"FloatingAreaScaled")==0) return FloatingAreaScaledEnum;
++	      else if (strcmp(name,"FloatingMeltRate")==0) return FloatingMeltRateEnum;
+ 	      else if (strcmp(name,"Free")==0) return FreeEnum;
+ 	      else if (strcmp(name,"FreeSurfaceBaseAnalysis")==0) return FreeSurfaceBaseAnalysisEnum;
+ 	      else if (strcmp(name,"FreeSurfaceTopAnalysis")==0) return FreeSurfaceTopAnalysisEnum;
+@@ -1407,6 +1409,8 @@
+ 	      else if (strcmp(name,"HydrologyShaktiAnalysis")==0) return HydrologyShaktiAnalysisEnum;
+ 	      else if (strcmp(name,"HydrologyShreveAnalysis")==0) return HydrologyShreveAnalysisEnum;
+ 	      else if (strcmp(name,"HydrologySolution")==0) return HydrologySolutionEnum;
++	      else if (strcmp(name,"HydrologySubsteps")==0) return HydrologySubstepsEnum;
++	      else if (strcmp(name,"HydrologySubTime")==0) return HydrologySubTimeEnum;
+ 	      else if (strcmp(name,"Hydrologydc")==0) return HydrologydcEnum;
+ 	      else if (strcmp(name,"Hydrologypism")==0) return HydrologypismEnum;
+ 	      else if (strcmp(name,"Hydrologyshakti")==0) return HydrologyshaktiEnum;
+@@ -1485,14 +1489,14 @@
+ 	      else if (strcmp(name,"MaxVel")==0) return MaxVelEnum;
+ 	      else if (strcmp(name,"MaxVx")==0) return MaxVxEnum;
+ 	      else if (strcmp(name,"MaxVy")==0) return MaxVyEnum;
+-	      else if (strcmp(name,"MaxVz")==0) return MaxVzEnum;
++         else stage=13;
++   }
++   if(stage==13){
++	      if (strcmp(name,"MaxVz")==0) return MaxVzEnum;
+ 	      else if (strcmp(name,"Melange")==0) return MelangeEnum;
+ 	      else if (strcmp(name,"MeltingAnalysis")==0) return MeltingAnalysisEnum;
+ 	      else if (strcmp(name,"MeshElements")==0) return MeshElementsEnum;
+-         else stage=13;
+-   }
+-   if(stage==13){
+-	      if (strcmp(name,"MeshX")==0) return MeshXEnum;
++	      else if (strcmp(name,"MeshX")==0) return MeshXEnum;
+ 	      else if (strcmp(name,"MeshY")==0) return MeshYEnum;
+ 	      else if (strcmp(name,"MinVel")==0) return MinVelEnum;
+ 	      else if (strcmp(name,"MinVx")==0) return MinVxEnum;
+@@ -1608,14 +1612,14 @@
+ 	      else if (strcmp(name,"StringExternalResult")==0) return StringExternalResultEnum;
+ 	      else if (strcmp(name,"StringParam")==0) return StringParamEnum;
+ 	      else if (strcmp(name,"SubelementFriction1")==0) return SubelementFriction1Enum;
+-	      else if (strcmp(name,"SubelementFriction2")==0) return SubelementFriction2Enum;
++         else stage=14;
++   }
++   if(stage==14){
++	      if (strcmp(name,"SubelementFriction2")==0) return SubelementFriction2Enum;
+ 	      else if (strcmp(name,"SubelementMelt1")==0) return SubelementMelt1Enum;
+ 	      else if (strcmp(name,"SubelementMelt2")==0) return SubelementMelt2Enum;
+ 	      else if (strcmp(name,"SubelementMigration")==0) return SubelementMigrationEnum;
+-         else stage=14;
+-   }
+-   if(stage==14){
+-	      if (strcmp(name,"SurfaceSlopeSolution")==0) return SurfaceSlopeSolutionEnum;
++	      else if (strcmp(name,"SurfaceSlopeSolution")==0) return SurfaceSlopeSolutionEnum;
+ 	      else if (strcmp(name,"TaylorHood")==0) return TaylorHoodEnum;
+ 	      else if (strcmp(name,"Tetra")==0) return TetraEnum;
+ 	      else if (strcmp(name,"TetraInput")==0) return TetraInputEnum;
Index: /issm/oecreview/Archive/27032-27229/ISSM-27179-27180.diff
===================================================================
--- /issm/oecreview/Archive/27032-27229/ISSM-27179-27180.diff	(revision 27230)
+++ /issm/oecreview/Archive/27032-27229/ISSM-27179-27180.diff	(revision 27230)
@@ -0,0 +1,99 @@
+Index: ../trunk-jpl/src/c/classes/Inputs/TransientInput.cpp
+===================================================================
+--- ../trunk-jpl/src/c/classes/Inputs/TransientInput.cpp	(revision 27179)
++++ ../trunk-jpl/src/c/classes/Inputs/TransientInput.cpp	(revision 27180)
+@@ -8,6 +8,7 @@
+ #error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+ #endif
+ 
++#include <numeric>
+ #include "./TransientInput.h"
+ #include "./TriaInput.h"
+ #include "./PentaInput.h"
+@@ -207,7 +208,7 @@
+ 	}
+ 
+ 	/*This is a new time step! we need to add it to the list*/
+-	if(this->numtimesteps>0 && time<this->timesteps[this->numtimesteps-1]) _error_("timestep values must increase sequentially");
++	if(this->numtimesteps>0 && time<this->timesteps[this->numtimesteps-1]) _error_("timestep values must increase sequentially, here " << this->timesteps[this->numtimesteps-1] <<" is the last step but smaller than the preceding "<< time<<"\n");
+ 
+ 	IssmDouble *old_timesteps = NULL;
+ 	Input    **old_inputs    = NULL;
+@@ -432,9 +433,10 @@
+ void TransientInput::SetCurrentTimeInput(IssmDouble time){/*{{{*/
+ 
+ 	/*First, recover current time from parameters: */
+-	bool linear_interp,cycle;
++	bool linear_interp,average,cycle;
+ 	IssmDouble dt;
+ 	this->parameters->FindParam(&linear_interp,TimesteppingInterpForcingEnum);
++	this->parameters->FindParam(&average,TimesteppingAverageForcingEnum);
+ 	this->parameters->FindParam(&cycle,TimesteppingCycleForcingEnum);
+ 	this->parameters->FindParam(&dt,TimesteppingTimeStepEnum);          /*transient core time step*/
+ 
+@@ -470,10 +472,13 @@
+ 	}
+ 
+ 	/*Figure step out*/
+-	int offset;
++	int offset, prevoffset;
+ 	if(!binary_search(&offset,time,this->timesteps,this->numtimesteps)){
+ 		_error_("Input not found (is TransientInput sorted ?)");
+ 	}
++	if(!binary_search(&prevoffset,time-dt,this->timesteps,this->numtimesteps)){
++		_error_("Input not found (is TransientInput sorted ?)");
++	}
+ 
+ 	if (offset==-1){
+ 
+@@ -489,6 +494,24 @@
+ 		this->current_input = this->inputs[0]->copy();
+ 
+ 	}
++	else if(offset-prevoffset>1 && prevoffset >=0 && average){
++		/*get values for the last time: */
++		_assert_(time>=this->timesteps[offset]);
++
++		/*If already processed return*/
++		if(this->current_step==reCast<IssmDouble>(offset)) return;
++
++		/*Prepare input*/
++		if(this->current_input) delete this->current_input;
++		this->current_step  = reCast<IssmDouble>(offset);
++
++		this->current_input = this->inputs[prevoffset]->copy();
++		for(int i=prevoffset+1;i<offset;i++) {
++			this->current_input->AXPY(this->inputs[i],+1.0);
++		}
++		this->current_input->Scale(1./(offset-prevoffset));
++
++	}
+ 	else if(offset==(this->numtimesteps-1) || !linear_interp){
+ 
+ 		/*get values for the last time: */
+@@ -535,6 +558,7 @@
+ 	IssmDouble  timespan,mid_step;
+ 	int         found,start_offset,end_offset,input_offset;
+ 
++
+ 	/*go through the timesteps, and grab offset for start and end*/
+ 	found=binary_search(&start_offset,start_time,this->timesteps,this->numtimesteps);
+ 	if(!found) _error_("Input not found (is TransientInput sorted ?)");
+@@ -572,8 +596,7 @@
+ 			dt=this->timesteps[offset+1]-this->timesteps[offset];
+ 			_assert_(dt>0.);
+ 		}
+-		Input* stepinput=this->inputs[offset+1];
+-
++		Input* stepinput=this->inputs[offset+1]->copy();
+ 		switch(averaging_method){
+ 			case 0: /*Arithmetic mean*/
+ 				if(offset==start_offset){
+@@ -607,6 +630,7 @@
+ 			default:
+ 				_error_("averaging method is not recognised");
+ 		}
++		delete stepinput;
+ 		dtsum+=dt;
+ 		offset+=1;
+ 	}
Index: /issm/oecreview/Archive/27032-27229/ISSM-27180-27181.diff
===================================================================
--- /issm/oecreview/Archive/27032-27229/ISSM-27180-27181.diff	(revision 27230)
+++ /issm/oecreview/Archive/27032-27229/ISSM-27180-27181.diff	(revision 27230)
@@ -0,0 +1,62 @@
+Index: ../trunk-jpl/src/c/modules/ModelProcessorx/CreateParameters.cpp
+===================================================================
+--- ../trunk-jpl/src/c/modules/ModelProcessorx/CreateParameters.cpp	(revision 27180)
++++ ../trunk-jpl/src/c/modules/ModelProcessorx/CreateParameters.cpp	(revision 27181)
+@@ -270,13 +270,13 @@
+          xDelete<IssmDouble>(transparam);
+ 			iomodel->FetchData(&transparam,&M,&N,"md.basalforcings.upperwater_melting_rate");
+          parameters->AddObject(new DoubleVecParam(BasalforcingsUpperwaterMeltingRateEnum,transparam,N));
+-         xDelete<IssmDouble>(transparam);   
++         xDelete<IssmDouble>(transparam);
+          iomodel->FetchData(&transparam,&M,&N,"md.basalforcings.upperwater_elevation");
+          parameters->AddObject(new DoubleVecParam(BasalforcingsUpperwaterElevationEnum,transparam,N));
+-         xDelete<IssmDouble>(transparam); 
++         xDelete<IssmDouble>(transparam);
+ 			iomodel->FetchData(&transparam,&M,&N,"md.basalforcings.deepwater_elevation");
+          parameters->AddObject(new DoubleVecParam(BasalforcingsDeepwaterElevationEnum,transparam,N));
+-         xDelete<IssmDouble>(transparam);   
++         xDelete<IssmDouble>(transparam);
+ 			break;
+ 		default:
+ 			_error_("Basal forcing model "<<EnumToStringx(basalforcing_model)<<" not supported yet");
+@@ -294,6 +294,7 @@
+ 			parameters->AddObject(iomodel->CopyConstantObject("md.timestepping.final_time",TimesteppingFinalTimeEnum));
+ 			parameters->AddObject(iomodel->CopyConstantObject("md.timestepping.time_step",TimesteppingTimeStepEnum));
+ 			parameters->AddObject(iomodel->CopyConstantObject("md.timestepping.interp_forcing",TimesteppingInterpForcingEnum));
++			parameters->AddObject(iomodel->CopyConstantObject("md.timestepping.average_forcing",TimesteppingAverageForcingEnum));
+ 			parameters->AddObject(iomodel->CopyConstantObject("md.timestepping.cycle_forcing",TimesteppingCycleForcingEnum));
+ 			parameters->AddObject(iomodel->CopyConstantObject("md.timestepping.coupling_time",TimesteppingCouplingTimeEnum));
+ 			break;
+@@ -304,6 +305,7 @@
+ 			parameters->AddObject(iomodel->CopyConstantObject("md.timestepping.time_step_max",TimesteppingTimeStepMaxEnum));
+ 			parameters->AddObject(iomodel->CopyConstantObject("md.timestepping.cfl_coefficient",TimesteppingCflCoefficientEnum));
+ 			parameters->AddObject(iomodel->CopyConstantObject("md.timestepping.interp_forcing",TimesteppingInterpForcingEnum));
++			parameters->AddObject(iomodel->CopyConstantObject("md.timestepping.average_forcing",TimesteppingAverageForcingEnum));
+ 			parameters->AddObject(iomodel->CopyConstantObject("md.timestepping.cycle_forcing",TimesteppingCycleForcingEnum));
+ 			parameters->AddObject(iomodel->CopyConstantObject("md.timestepping.coupling_time",TimesteppingCouplingTimeEnum));
+ 			break;
+@@ -480,12 +482,6 @@
+ 	iomodel->FindConstant(&hydrology_model,"md.hydrology.model");
+ 	if(hydrology_model==HydrologydcEnum){
+ 		IssmDouble sedcomp, sedporo, watcomp, rhofresh, g;
+-
+-		/*FIXME: this should go to Analysis!!!*/
+-		parameters->AddObject(iomodel->CopyConstantObject("md.hydrology.sediment_porosity",HydrologydcSedimentPorosityEnum));
+-		parameters->AddObject(iomodel->CopyConstantObject("md.hydrology.sediment_thickness",HydrologydcSedimentThicknessEnum));
+-		parameters->AddObject(iomodel->CopyConstantObject("md.hydrology.isefficientlayer",HydrologydcIsefficientlayerEnum));
+-
+ 		iomodel->FindConstant(&sedcomp,"md.hydrology.sediment_compressibility");
+ 		iomodel->FindConstant(&sedporo,"md.hydrology.sediment_porosity");
+ 		iomodel->FindConstant(&watcomp,"md.hydrology.water_compressibility");
+@@ -499,11 +495,6 @@
+ 		iomodel->FindConstant(&isefficientlayer,"md.hydrology.isefficientlayer");
+ 		if(isefficientlayer){
+ 			IssmDouble eplcomp, eplporo;
+-			parameters->AddObject(iomodel->CopyConstantObject("md.hydrology.epl_initial_thickness",HydrologydcEplInitialThicknessEnum));
+-			parameters->AddObject(iomodel->CopyConstantObject("md.hydrology.epl_colapse_thickness",HydrologydcEplColapseThicknessEnum));
+-			parameters->AddObject(iomodel->CopyConstantObject("md.hydrology.epl_max_thickness",HydrologydcEplMaxThicknessEnum));
+-			parameters->AddObject(iomodel->CopyConstantObject("md.hydrology.epl_conductivity",HydrologydcEplConductivityEnum));
+-
+ 			iomodel->FindConstant(&eplcomp,"md.hydrology.epl_compressibility");
+ 			iomodel->FindConstant(&eplporo,"md.hydrology.epl_porosity");
+ 			parameters->AddObject(new DoubleParam(HydrologydcEplLayerCompressibilityEnum,(watcomp + eplcomp/eplporo)));
Index: /issm/oecreview/Archive/27032-27229/ISSM-27181-27182.diff
===================================================================
--- /issm/oecreview/Archive/27032-27229/ISSM-27181-27182.diff	(revision 27230)
+++ /issm/oecreview/Archive/27032-27229/ISSM-27181-27182.diff	(revision 27230)
@@ -0,0 +1,14 @@
+Index: ../trunk-jpl/src/c/solutionsequences/solutionsequences.h
+===================================================================
+--- ../trunk-jpl/src/c/solutionsequences/solutionsequences.h	(revision 27181)
++++ ../trunk-jpl/src/c/solutionsequences/solutionsequences.h	(revision 27182)
+@@ -12,7 +12,8 @@
+ #include "../shared/Numerics/types.h"
+ 
+ void solutionsequence_thermal_nonlinear(FemModel* femmodel);
+-void solutionsequence_hydro_nonlinear(FemModel* femmodel);
++void solutionsequence_hydro_nonlinear(FemModel* femmodel, bool* conv_fail);
++void solutionsequence_hydro_singleloop(FemModel* femmodel, bool* conv_fail);
+ void solutionsequence_shakti_nonlinear(FemModel* femmodel);
+ void solutionsequence_glads_nonlinear(FemModel* femmodel);
+ void solutionsequence_nonlinear(FemModel* femmodel,bool conserve_loads);
Index: /issm/oecreview/Archive/27032-27229/ISSM-27182-27183.diff
===================================================================
--- /issm/oecreview/Archive/27032-27229/ISSM-27182-27183.diff	(revision 27230)
+++ /issm/oecreview/Archive/27032-27229/ISSM-27182-27183.diff	(revision 27230)
@@ -0,0 +1,4 @@
+Index: ../trunk-jpl/test/Archives/Archive900.arch
+===================================================================
+Cannot display: file marked as a binary type.
+svn:mime-type = application/octet-stream
Index: /issm/oecreview/Archive/27032-27229/ISSM-27183-27184.diff
===================================================================
--- /issm/oecreview/Archive/27032-27229/ISSM-27183-27184.diff	(revision 27230)
+++ /issm/oecreview/Archive/27032-27229/ISSM-27183-27184.diff	(revision 27230)
@@ -0,0 +1,13 @@
+Index: ../trunk-jpl/src/c/cores/hydrology_core.cpp
+===================================================================
+--- ../trunk-jpl/src/c/cores/hydrology_core.cpp	(revision 27183)
++++ ../trunk-jpl/src/c/cores/hydrology_core.cpp	(revision 27184)
+@@ -179,7 +179,7 @@
+ 				femmodel->parameters->SetParam(global_time,TimeEnum);
+ 				if(save_results){
+                femmodel->results->AddResult(new GenericExternalResult<int>(femmodel->results->Size()+1,HydrologySubstepsEnum,dtslices,step,global_time));
+-               femmodel->results->AddResult(new GenericExternalResult<double>(femmodel->results->Size()+1,HydrologySubTimeEnum,(averagetime/dt)/yts,step,global_time));
++               femmodel->results->AddResult(new GenericExternalResult<IssmDouble>(femmodel->results->Size()+1,HydrologySubTimeEnum,(averagetime/dt)/yts,step,global_time));
+             }
+ 			}
+ 			else{
Index: /issm/oecreview/Archive/27032-27229/ISSM-27184-27185.diff
===================================================================
--- /issm/oecreview/Archive/27032-27229/ISSM-27184-27185.diff	(revision 27230)
+++ /issm/oecreview/Archive/27032-27229/ISSM-27184-27185.diff	(revision 27230)
@@ -0,0 +1,13 @@
+Index: ../trunk-jpl/src/c/classes/Inputs/TransientInput.cpp
+===================================================================
+--- ../trunk-jpl/src/c/classes/Inputs/TransientInput.cpp	(revision 27184)
++++ ../trunk-jpl/src/c/classes/Inputs/TransientInput.cpp	(revision 27185)
+@@ -476,7 +476,7 @@
+ 	if(!binary_search(&offset,time,this->timesteps,this->numtimesteps)){
+ 		_error_("Input not found (is TransientInput sorted ?)");
+ 	}
+-	if(!binary_search(&prevoffset,time-dt,this->timesteps,this->numtimesteps)){
++	if(!binary_search(&prevoffset,reCast<IssmDouble>(time-dt),this->timesteps,this->numtimesteps)){
+ 		_error_("Input not found (is TransientInput sorted ?)");
+ 	}
+ 
Index: /issm/oecreview/Archive/27032-27229/ISSM-27185-27186.diff
===================================================================
--- /issm/oecreview/Archive/27032-27229/ISSM-27185-27186.diff	(revision 27230)
+++ /issm/oecreview/Archive/27032-27229/ISSM-27185-27186.diff	(revision 27230)
@@ -0,0 +1,245 @@
+Index: ../trunk-jpl/src/c/cores/hydrology_core.cpp
+===================================================================
+--- ../trunk-jpl/src/c/cores/hydrology_core.cpp	(revision 27185)
++++ ../trunk-jpl/src/c/cores/hydrology_core.cpp	(revision 27186)
+@@ -131,7 +131,7 @@
+ 				while(substep<dtslices){ //loop on hydro dts
+ 					substep+=1;
+ 					subtime+=subdt;
+-					averagetime+=subtime*dt;
++					averagetime+=subtime*subdt;
+ 					/*Setting substep time as global time*/
+ 					femmodel->parameters->SetParam(subtime,TimeEnum);
+ 					if(VerboseSolution()) _printf0_("sub iteration " << substep << "/" << dtslices << "  time [yr]: " << setprecision(4) << subtime/yts << " (time step: " << subdt/yts << ")\n");
+@@ -156,8 +156,8 @@
+                   /*We double the number of remaining slices and compute their duration*/
+                   dtslices=dtslices-remainingslices+(2*remainingslices);
+                   subdt=remainingtime/(2*remainingslices);
+-                  _printf0_("convergence failed for sub-step "<< substep <<" total number of slice is now "<< dtslices <<" for step "<<step<<"\n");
+-                  _printf0_("next slice duration is "<< subdt/yts <<" years\n");
++                  if(VerboseSolution())_printf0_("convergence failed for sub-step "<< substep <<" total number of slice is now "<< dtslices <<" for step "<<step<<"\n");
++                  if(VerboseSolution())_printf0_("next slice duration is "<< subdt/yts <<" years\n");
+                   conv_fail = false;  //re-initialize the control keyword
+                   if (dtslices>500){
+                      _error_("   We reached (" << dtslices << ") which exceeds the hard limit of 500");
+Index: ../trunk-jpl/test/Archives/Archive906.arch
+===================================================================
+Cannot display: file marked as a binary type.
+svn:mime-type = application/octet-stream
+
+Property changes on: ../trunk-jpl/test/Archives/Archive906.arch
+___________________________________________________________________
+Added: svn:mime-type
+## -0,0 +1 ##
++application/octet-stream
+\ No newline at end of property
+Index: ../trunk-jpl/test/NightlyRun/test906.m
+===================================================================
+--- ../trunk-jpl/test/NightlyRun/test906.m	(nonexistent)
++++ ../trunk-jpl/test/NightlyRun/test906.m	(revision 27186)
+@@ -0,0 +1,92 @@
++%Test Name: SquareNoDynHydrologyDCtimeadapt
++md=triangle(model(), '../Exp/Square.exp', 200000.);
++md=setmask(md, '', '');
++md=parameterize(md, '../Par/SquareNoDyn.par');
++md.cluster=generic('name', oshostname(), 'np', 1);
++
++md.transient=deactivateall(md.transient);
++md.transient.ishydrology=1;
++md.hydrology=(hydrologydc);
++md.hydrology=initialize(md.hydrology,md);
++
++%Hydro Model Parameters
++md.hydrology.isefficientlayer=1;
++md.hydrology.sedimentlimit_flag=1;
++md.hydrology.sedimentlimit=500;
++md.hydrology.rel_tol=1.0e-6;
++md.hydrology.penalty_lock=10;
++md.hydrology.max_iter=100;
++md.hydrology.transfer_flag=1;
++md.hydrology.unconfined_flag=0;
++md.hydrology.leakage_factor=5.0e-10;
++md.hydrology.mask_thawed_node=ones(md.mesh.numberofvertices,1);
++
++%Sediment Parameters
++md.hydrology.sediment_porosity=0.4;
++md.hydrology.sediment_transmitivity=3.0*ones(md.mesh.numberofvertices,1);
++md.hydrology.sediment_thickness=10.;
++
++%Epl Parameters
++md.hydrology.mask_eplactive_node=zeros(md.mesh.numberofvertices,1);
++md.hydrology.epl_conductivity=30.;
++md.hydrology.epl_initial_thickness=1.0;
++md.hydrology.epl_colapse_thickness=1.0e-3;
++md.hydrology.epl_thick_comp=0;
++md.hydrology.epl_max_thickness=10;
++md.hydrology.eplflip_lock=0;
++
++%Initialisation
++md.initialization.sediment_head=md.geometry.base;
++md.initialization.epl_head=md.geometry.base;
++md.initialization.epl_thickness=ones(md.mesh.numberofvertices,1);
++
++%Boundary conditions
++md.hydrology.spcsediment_head=NaN*ones(md.mesh.numberofvertices,1);
++md.hydrology.spcepl_head=NaN*ones(md.mesh.numberofvertices,1);
++
++%Forcing
++stepping=3600./md.constants.yts;
++endtime=0.3;
++times=[0.:stepping:endtime];
++input=find(abs(times-0.3) > 0.2);
++inputval=times*0+100;
++inputval(input)=0;
++
++%basal forcing inputval
++md.basalforcings.groundedice_melting_rate=repmat(inputval,md.mesh.numberofvertices,1);
++md.basalforcings.groundedice_melting_rate=[[md.basalforcings.groundedice_melting_rate];[times]];
++
++%Time
++md.timestepping.final_time=endtime;
++md.settings.output_frequency=1.0;
++
++md.timestepping.average_forcing=1;
++md.hydrology.step_adapt=1;
++md.hydrology.steps_per_step=1;
++md.timestepping.time_step=0.1;
++
++
++md=solve(md, 'Transient');
++
++field_names={'SedimentWaterHead2', 'EplWaterHead2', 'SedimentHeadResidual2',...
++	     'SedimentHeadSubstep2', 'EplHeadSubstep2', 'HydrologySubsteps2', 'HydrologySubTime2',...
++	     'SedimentWaterHead3', 'EplWaterHead3', 'SedimentHeadResidual3'};
++field_tolerances={1e-13, 1e-13, 1e-13,...
++		  1e-13, 1e-13, 1e-13, 1e-13,...
++		  1e-13, 1e-13, 1e-13};
++field_values={md.results.TransientSolution(2).SedimentHead,...
++	      md.results.TransientSolution(2).EplHead,...
++	      md.results.TransientSolution(2).SedimentHeadResidual,...
++	      md.results.TransientSolution(2).SedimentHeadSubstep,...
++	      md.results.TransientSolution(2).EplHeadSubstep,...
++	      md.results.TransientSolution(2).HydrologySubsteps,...
++	      md.results.TransientSolution(2).HydrologySubTime,...
++	      md.results.TransientSolution(3).SedimentHead,...
++	      md.results.TransientSolution(3).EplHead,...
++	      md.results.TransientSolution(3).SedimentHeadResidual};
++
++for i=1:3
++	disp(md.results.TransientSolution(i).EplHead(1));
++	disp(md.results.TransientSolution(i).HydrologySubTime);
++	disp(md.results.TransientSolution(i).HydrologySubsteps);
++end
+\ No newline at end of file
+
+Property changes on: ../trunk-jpl/test/NightlyRun/test906.m
+___________________________________________________________________
+Added: svn:executable
+## -0,0 +1 ##
++*
+\ No newline at end of property
+Index: ../trunk-jpl/test/NightlyRun/test906.py
+===================================================================
+--- ../trunk-jpl/test/NightlyRun/test906.py	(nonexistent)
++++ ../trunk-jpl/test/NightlyRun/test906.py	(revision 27186)
+@@ -0,0 +1,93 @@
++#Test Name: SquareNoDynHydrologyDCtimeadapt
++import numpy as np
++from model import *
++from solve import *
++from socket import gethostname
++from triangle import triangle
++from setmask import setmask
++from parameterize import parameterize
++
++md = triangle(model(), '../Exp/Square.exp', 200000.)
++md = setmask(md, '', '')
++md = parameterize(md, '../Par/SquareNoDyn.py')
++
++md.transient = transient.deactivateall(md.transient)
++md.transient.ishydrology = True
++md.hydrology = hydrologydc()
++md.hydrology = md.hydrology.initialize(md)
++
++#Hydro Model Parameters
++md.hydrology.isefficientlayer = 1
++md.hydrology.sedimentlimit_flag = 1
++md.hydrology.sedimentlimit = 500
++md.hydrology.rel_tol = 1.0e-6
++md.hydrology.penalty_lock = 10
++md.hydrology.max_iter = 100
++md.hydrology.transfer_flag = 1
++md.hydrology.unconfined_flag = 0
++md.hydrology.leakage_factor = 5.0e-10
++md.hydrology.mask_thawed_node = np.ones((md.mesh.numberofvertices))
++
++#Sediment Parameters
++md.hydrology.sediment_porosity = 0.4
++md.hydrology.sediment_transmitivity = 3.0 * np.ones((md.mesh.numberofvertices))
++md.hydrology.sediment_thickness = 10.
++
++#Epl Parameters
++md.hydrology.mask_eplactive_node = np.zeros((md.mesh.numberofvertices))
++md.hydrology.epl_conductivity = 30.
++md.hydrology.epl_initial_thickness = 1.0
++md.hydrology.epl_colapse_thickness = 1.0e-3
++md.hydrology.epl_thick_comp = 0
++md.hydrology.epl_max_thickness = 10
++md.hydrology.eplflip_lock = 0
++
++#Initialisation
++md.initialization.sediment_head = md.geometry.base
++md.initialization.epl_head = md.geometry.base
++md.initialization.epl_thickness = np.ones((md.mesh.numberofvertices))
++
++#Boundary conditions
++front = np.where(md.mesh.x == 0)[0]
++md.hydrology.spcsediment_head = np.nan * np.ones((md.mesh.numberofvertices))
++md.hydrology.spcepl_head = np.nan * np.ones((md.mesh.numberofvertices))
++
++#Forcing
++stepping = 3600. / md.constants.yts  #hourly forcing
++endtime = 0.3
++times = np.arange(0., endtime + stepping, stepping)
++inputval = np.where(np.abs(times - 0.3) > 0.2, 0, 100.0)
++
++#basal forcing inputval
++md.basalforcings.groundedice_melting_rate = np.outer(np.ones((md.mesh.numberofvertices)), inputval)
++md.basalforcings.groundedice_melting_rate = np.append(md.basalforcings.groundedice_melting_rate, [times], axis=0)
++
++#Time
++md.timestepping.final_time = endtime
++md.settings.output_frequency = 1.0
++
++md.timestepping.average_forcing = 1
++md.hydrology.step_adapt = 1
++md.hydrology.steps_per_step = 1
++md.timestepping.time_step = 0.1
++md.debug.valgrind = False
++
++md.cluster = generic('name', gethostname(), 'np', 1)
++md = solve(md, 'Transient')
++
++field_names = ['SedimentWaterHead2', 'EplWaterHead2', 'SedimentHeadResidual2',
++               'SedimentHeadSubstep2', 'EplHeadSubstep2', 'HydrologySubsteps2', 'HydrologySubTime2',
++               'SedimentWaterHead3', 'EplWaterHead3', 'SedimentHeadResidual3']
++field_tolerances = [1e-13, 1e-13, 1e-13,
++                    1e-13, 1e-13, 1e-13, 1e-13,
++                    1e-13, 1e-13, 1e-13]
++field_values = [md.results.TransientSolution[1].SedimentHead,
++                md.results.TransientSolution[1].EplHead,
++                md.results.TransientSolution[1].SedimentHeadResidual,
++                md.results.TransientSolution[1].SedimentHeadSubstep,
++                md.results.TransientSolution[1].EplHeadSubstep,
++                md.results.TransientSolution[1].HydrologySubsteps,
++                md.results.TransientSolution[1].HydrologySubTime,
++                md.results.TransientSolution[2].SedimentHead,
++                md.results.TransientSolution[2].EplHead,
++                md.results.TransientSolution[2].SedimentHeadResidual]
+
+Property changes on: ../trunk-jpl/test/NightlyRun/test906.py
+___________________________________________________________________
+Added: svn:executable
+## -0,0 +1 ##
++*
+\ No newline at end of property
Index: /issm/oecreview/Archive/27032-27229/ISSM-27186-27187.diff
===================================================================
--- /issm/oecreview/Archive/27032-27229/ISSM-27186-27187.diff	(revision 27230)
+++ /issm/oecreview/Archive/27032-27229/ISSM-27186-27187.diff	(revision 27230)
@@ -0,0 +1,63 @@
+Index: ../trunk-jpl/externalpackages/dakota/install-6.2-linux.sh
+===================================================================
+--- ../trunk-jpl/externalpackages/dakota/install-6.2-linux.sh	(revision 27186)
++++ ../trunk-jpl/externalpackages/dakota/install-6.2-linux.sh	(revision 27187)
+@@ -11,8 +11,6 @@
+ ## Environment
+ #
+ export BLAS_LIBS="-L${BLAS_ROOT}/lib -lfblas -L/usr/lib/x86_64-linux-gnu -lgfortran" # Need to export BLAS_LIBS *and* pass it as an option to CMake to ensure that external packages also find it
+-export CXXFLAGS='-std=c++98' # Setting CXXFLAGS to deal with C++11 incompatibility with MATLAB's Boost (absolutely necessary for this version)
+-#export CXXFLAGS='-std=c++11'
+ export DAK_BUILD=${ISSM_DIR}/externalpackages/dakota/build # DO NOT CHANGE THIS
+ export DAK_INSTALL=${PREFIX} # DO NOT CHANGE THIS
+ export DAK_SRC=${ISSM_DIR}/externalpackages/dakota/src # DO NOT CHANGE THIS
+@@ -53,6 +51,7 @@
+ 	-DCMAKE_C_COMPILER=${MPI_HOME}/bin/mpicc \
+ 	-DCMAKE_C_FLAGS="-Wno-error=implicit-function-declaration" \
+ 	-DCMAKE_CXX_COMPILER=${MPI_HOME}/bin/mpicxx \
++	-DCMAKE_CXX_STANDARD="11" \
+ 	-DCMAKE_Fortran_COMPILER=${MPI_HOME}/bin/mpif77 \
+ 	-DBoost_NO_BOOST_CMAKE=TRUE \
+ 	-DHAVE_ACRO=OFF \
+Index: ../trunk-jpl/externalpackages/dakota/install-6.2-mac.sh
+===================================================================
+--- ../trunk-jpl/externalpackages/dakota/install-6.2-mac.sh	(revision 27186)
++++ ../trunk-jpl/externalpackages/dakota/install-6.2-mac.sh	(revision 27187)
+@@ -6,15 +6,11 @@
+ #
+ VER="6.2"
+ 
+-PREFIX="${ISSM_DIR}/externalpackages/dakota/install" # Set to location where external package should be installed
++PREFIX="${ISSM_EXT_SHARED_DIR}/dakota/install" # Set to location where external package should be installed
+ 
+ ## Environment
+ #
+ 
+-# Check for Python 2, required by Dakota
+-#
+-PYTHON_EXECUTABLE=$(which python2) || echo "Error: This version of Dakota requires Python 2"
+-
+ # Find libgfortran so that we do not have to hardcode it.
+ #
+ # Should retrieve a copy of gfortran that is compiled from source before 
+@@ -60,6 +56,9 @@
+ cp configs/${VER}/mac/cmake/DakotaDev.cmake ${DAK_SRC}/cmake
+ cp configs/${VER}/mac/cmake/InstallDarwinDylibs.cmake ${DAK_SRC}/cmake
+ 
++# Disable requirement of Python 2 for TriBITS
++sed -i'' -e 's|SET(PythonInterp_FIND_VERSION|#SET(PythonInterp_FIND_VERSION|' ${DAK_SRC}/packages/teuchos/cmake/tribits/package_arch/TribitsFindPythonInterp.cmake
++
+ # Configure
+ cd ${DAK_BUILD}
+ cmake \
+@@ -68,9 +67,8 @@
+ 	-DCMAKE_C_COMPILER=${MPI_HOME}/bin/mpicc \
+ 	-DCMAKE_CXX_COMPILER=${MPI_HOME}/bin/mpicxx \
+ 	-DCMAKE_CXX_FLAGS="-fdelayed-template-parsing" \
++	-DCMAKE_CXX_STANDARD="11" \
+ 	-DCMAKE_Fortran_COMPILER=${MPI_HOME}/bin/mpif77 \
+-	-DCMAKE_Fortran_FLAGS="-fallow-argument-mismatch" \
+-	-DPYTHON_EXECUTABLE=${PYTHON_EXECUTABLE} \
+ 	-DBoost_NO_BOOST_CMAKE=TRUE \
+ 	-DHAVE_ACRO=OFF \
+ 	-DHAVE_JEGA=OFF \
Index: /issm/oecreview/Archive/27032-27229/ISSM-27187-27188.diff
===================================================================
--- /issm/oecreview/Archive/27032-27229/ISSM-27187-27188.diff	(revision 27230)
+++ /issm/oecreview/Archive/27032-27229/ISSM-27187-27188.diff	(revision 27230)
@@ -0,0 +1,13 @@
+Index: ../trunk-jpl/externalpackages/dakota/install-6.2-mac.sh
+===================================================================
+--- ../trunk-jpl/externalpackages/dakota/install-6.2-mac.sh	(revision 27187)
++++ ../trunk-jpl/externalpackages/dakota/install-6.2-mac.sh	(revision 27188)
+@@ -6,7 +6,7 @@
+ #
+ VER="6.2"
+ 
+-PREFIX="${ISSM_EXT_SHARED_DIR}/dakota/install" # Set to location where external package should be installed
++PREFIX="${ISSM_DIR}/externalpackages/dakota/install" # Set to location where external package should be installed
+ 
+ ## Environment
+ #
Index: /issm/oecreview/Archive/27032-27229/ISSM-27188-27189.diff
===================================================================
--- /issm/oecreview/Archive/27032-27229/ISSM-27188-27189.diff	(revision 27230)
+++ /issm/oecreview/Archive/27032-27229/ISSM-27188-27189.diff	(revision 27230)
@@ -0,0 +1,52 @@
+Index: ../trunk-jpl/externalpackages/gdal/install-3-python-static.sh
+===================================================================
+--- ../trunk-jpl/externalpackages/gdal/install-3-python-static.sh	(revision 27188)
++++ ../trunk-jpl/externalpackages/gdal/install-3-python-static.sh	(revision 27189)
+@@ -8,7 +8,7 @@
+ 
+ ## Constants
+ #
+-VER="3.1.1"
++VER="3.5.1"
+ 
+ ## Environment
+ #
+Index: ../trunk-jpl/externalpackages/gdal/install-3-python.sh
+===================================================================
+--- ../trunk-jpl/externalpackages/gdal/install-3-python.sh	(revision 27188)
++++ ../trunk-jpl/externalpackages/gdal/install-3-python.sh	(revision 27189)
+@@ -8,7 +8,7 @@
+ 
+ ## Constants
+ #
+-VER="3.1.1"
++VER="3.5.1"
+ 
+ ## Environment
+ #
+Index: ../trunk-jpl/externalpackages/gdal/install-3-static.sh
+===================================================================
+--- ../trunk-jpl/externalpackages/gdal/install-3-static.sh	(revision 27188)
++++ ../trunk-jpl/externalpackages/gdal/install-3-static.sh	(revision 27189)
+@@ -8,7 +8,7 @@
+ 
+ ## Constants
+ #
+-VER="3.1.1"
++VER="3.5.1"
+ 
+ ## Environment
+ #
+Index: ../trunk-jpl/externalpackages/gdal/install-3.sh
+===================================================================
+--- ../trunk-jpl/externalpackages/gdal/install-3.sh	(revision 27188)
++++ ../trunk-jpl/externalpackages/gdal/install-3.sh	(revision 27189)
+@@ -4,7 +4,7 @@
+ 
+ ## Constants
+ #
+-VER="3.1.1"
++VER="3.5.1"
+ 
+ ## Environment
+ #
Index: /issm/oecreview/Archive/27032-27229/ISSM-27189-27190.diff
===================================================================
--- /issm/oecreview/Archive/27032-27229/ISSM-27189-27190.diff	(revision 27230)
+++ /issm/oecreview/Archive/27032-27229/ISSM-27189-27190.diff	(revision 27230)
@@ -0,0 +1,288 @@
+Index: ../trunk-jpl/src/c/solutionsequences/solutionsequence_hydro_singleloop.cpp
+===================================================================
+--- ../trunk-jpl/src/c/solutionsequences/solutionsequence_hydro_singleloop.cpp	(revision 27189)
++++ ../trunk-jpl/src/c/solutionsequences/solutionsequence_hydro_singleloop.cpp	(nonexistent)
+@@ -1,271 +0,0 @@
+-/*!\file: solutionsequence_hydro_singleloop.cpp
+- * \brief: core of the hydro solution
+- trying a single loop set-up to see the effect on convergence
+- */
+-
+-#include "../toolkits/toolkits.h"
+-#include "../classes/classes.h"
+-#include "../shared/shared.h"
+-#include "../modules/modules.h"
+-/*FIXME, dirty hack to get the solutionsequence linear needed to compute the slopes*/
+-#include "../solutionsequences/solutionsequences.h"
+-
+-void solutionsequence_hydro_nonlinear(FemModel* femmodel, bool* pconv_fail){
+-	/*solution : */
+-	Vector<IssmDouble>* ug_sed=NULL;
+-	Vector<IssmDouble>* uf_sed=NULL;
+-	Vector<IssmDouble>* uf_sed_sub_iter=NULL;
+-	Vector<IssmDouble>* ug_sed_sub_iter=NULL;
+-	Vector<IssmDouble>* ug_sed_main_iter=NULL;
+-	Vector<IssmDouble>* ug_sed_init=NULL;
+-
+-	Vector<IssmDouble>* ug_epl=NULL;
+-	Vector<IssmDouble>* uf_epl=NULL;
+-	Vector<IssmDouble>* uf_epl_sub_iter=NULL;
+-	Vector<IssmDouble>* ug_epl_sub_iter=NULL;
+-	Vector<IssmDouble>* ug_epl_main_iter=NULL;
+-	Vector<IssmDouble>* ug_epl_init=NULL;
+-
+-	Vector<IssmDouble>* ys=NULL;
+-	Vector<IssmDouble>* dug=NULL;
+-	Vector<IssmDouble>* duf=NULL;
+-
+-	Matrix<IssmDouble>* Kff=NULL;
+-	Matrix<IssmDouble>* Kfs=NULL;
+-
+-	Vector<IssmDouble>* pf=NULL;
+-	Vector<IssmDouble>* df=NULL;
+-
+-	HydrologyDCInefficientAnalysis* inefanalysis = NULL;
+-	HydrologyDCEfficientAnalysis* effanalysis = NULL;
+-
+-	bool       sedconverged,eplconverged,hydroconverged, headconverged, newthick;
+-	bool       isefficientlayer;
+-	bool       sliceadapt;
+-	int        constraints_converged;
+-	int        num_unstable_constraints;
+-	int        sedcount,eplcount,hydrocount;
+-	int        hydro_maxiter;
+-	IssmDouble sediment_kmax;
+-	IssmDouble eps_hyd;
+-	IssmDouble ndu_sed,nu_sed;
+-	IssmDouble ndu_epl,nu_epl;
+-	IssmDouble ThickCount,L2Count;
+-	/*Recover parameters: */
+-	femmodel->SetCurrentConfiguration(HydrologyDCInefficientAnalysisEnum);
+-	femmodel->parameters->FindParam(&isefficientlayer,HydrologydcIsefficientlayerEnum);
+-	femmodel->parameters->FindParam(&sliceadapt,HydrologyStepAdaptEnum);
+-	femmodel->parameters->FindParam(&hydro_maxiter,HydrologydcMaxIterEnum);
+-	femmodel->parameters->FindParam(&eps_hyd,HydrologydcRelTolEnum);
+-	hydrocount=1;
+-	hydroconverged=false;
+-
+-	/*{{{ Retrieve inputs as the initial state for the non linear iteration*/
+-	GetBasalSolutionFromInputsx(&ug_sed,femmodel);
+-	ug_sed_init=ug_sed->Duplicate();
+-	ug_sed->Copy(ug_sed_init);
+-	Reducevectorgtofx(&uf_sed, ug_sed, femmodel->nodes,femmodel->parameters);
+-	inefanalysis = new HydrologyDCInefficientAnalysis();
+-	/*Initialize the IDS element mask to exclude frozen nodes*/
+-	inefanalysis->ElementizeIdsMask(femmodel);
+-
+-	if(isefficientlayer) {
+-		effanalysis = new HydrologyDCEfficientAnalysis();
+-		femmodel->SetCurrentConfiguration(HydrologyDCEfficientAnalysisEnum);
+-		GetBasalSolutionFromInputsx(&ug_epl,femmodel);
+-		ug_epl_init=ug_epl->Duplicate();
+-		ug_epl->Copy(ug_epl_init);
+-		/*Initialize the EPL element mask*/
+-		inefanalysis->ElementizeEplMask(femmodel);
+-		effanalysis->InitZigZagCounter(femmodel);
+-	}
+-	/*}}}*/
+-	/*The real computation starts here,single loop on the two layer system*/
+-	for(;;){
+-		sedcount=1;
+-		eplcount=1;
+-
+-		/*keep the initial vlaue to compute convergence (on ug as activation can change for both layers)*/
+-		ug_sed_main_iter=ug_sed->Duplicate();
+-		ug_sed->Copy(ug_sed_main_iter);
+-		if(isefficientlayer){
+-			ug_epl_main_iter=ug_epl->Duplicate();
+-			ug_epl->Copy(ug_epl_main_iter);
+-		}
+-		/*Loop on sediment layer to deal with transfer and head value*/
+-		femmodel->SetCurrentConfiguration(HydrologyDCInefficientAnalysisEnum);
+-		ResetZigzagCounterx(femmodel);
+-		InputUpdateFromConstantx(femmodel,false,ConvergedEnum);
+-		femmodel->UpdateConstraintsx();
+-
+-		/*Reset constraint on the ZigZag Lock*/
+-		ResetConstraintsx(femmodel);
+-
+-		/*{{{ Loop for the sediment penalization*/
+-		femmodel->profiler->Start(SEDLOOP);
+-
+-		for(;;){
+-			/*{{{ Core of the computation*/
+-			if(VerboseSolution()) _printf0_("Building Sediment Matrix...\n");
+-			femmodel->profiler->Start(SEDMatrix);
+-			sedconverged=false;
+-			SystemMatricesx(&Kff,&Kfs,&pf,&df,&sediment_kmax,femmodel);
+-			CreateNodalConstraintsx(&ys,femmodel->nodes);
+-			Reduceloadx(pf,Kfs,ys); delete Kfs;
+-			delete uf_sed;
+-			femmodel->profiler->Stop(SEDMatrix);
+-
+-			femmodel->profiler->Start(SOLVER);
+-			Solverx(&uf_sed,Kff,pf,uf_sed_sub_iter,df,femmodel->parameters);
+-			delete Kff; delete pf; delete df; delete uf_sed_sub_iter;
+-			uf_sed_sub_iter=uf_sed->Duplicate();_assert_(uf_sed_sub_iter);
+-			uf_sed->Copy(uf_sed_sub_iter);
+-			femmodel->profiler->Stop(SOLVER);
+-
+-			delete ug_sed;
+-			femmodel->profiler->Start(SEDUpdate);
+-			Mergesolutionfromftogx(&ug_sed,uf_sed,ys,femmodel->nodes,femmodel->parameters); delete ys;
+-			InputUpdateFromSolutionx(femmodel,ug_sed);
+-			ConstraintsStatex(&constraints_converged,&num_unstable_constraints,femmodel);
+-			femmodel->profiler->Stop(SEDUpdate);
+-
+-			/*}}}*/
+-			if (!sedconverged){
+-				/*First check that all the penalizations are applied*/
+-				if(VerboseConvergence()) _printf0_("   # Sediment unstable constraints = " << num_unstable_constraints << "\n");
+-				if(num_unstable_constraints==0) sedconverged = true;
+-				if (sedcount>=hydro_maxiter){
+-					_error_("   maximum number of Sediment iterations (" << hydro_maxiter << ") exceeded");
+-				}
+-			}
+-			/*Add an iteration and get out of the loop if the penalisation is converged*/
+-			sedcount++;
+-			if(sedconverged)break;
+-		}
+-
+-		if(isefficientlayer){
+-			femmodel->SetCurrentConfiguration(HydrologyDCEfficientAnalysisEnum);
+-			/*updating mask*/
+-			if(VerboseSolution()) _printf0_("==updating mask...\n");
+-			femmodel->HydrologyEPLupdateDomainx(&ThickCount);
+-			ResetZigzagCounterx(femmodel);
+-			InputUpdateFromConstantx(femmodel,false,ConvergedEnum);
+-
+-			/*{{{ Retrieve the EPL head slopes and compute EPL Thickness*/
+-			if(VerboseSolution()) _printf0_("computing EPL Head slope...\n");
+-
+-			femmodel->profiler->Start(EPLMasking);
+-			femmodel->SetCurrentConfiguration(L2ProjectionEPLAnalysisEnum);
+-			femmodel->UpdateConstraintsL2ProjectionEPLx(&L2Count);
+-			femmodel->parameters->SetParam(EplHeadSlopeXEnum,InputToL2ProjectEnum);
+-			solutionsequence_linear(femmodel);
+-			femmodel->parameters->SetParam(EplHeadSlopeYEnum,InputToL2ProjectEnum);
+-			solutionsequence_linear(femmodel);
+-			femmodel->SetCurrentConfiguration(HydrologyDCEfficientAnalysisEnum);
+-			effanalysis->ComputeEPLThickness(femmodel);
+-			//updating mask after the computation of the epl thickness (Allow to close too thin EPL)
+-			femmodel->HydrologyEPLupdateDomainx(&ThickCount);
+-			/*}}}*/
+-			femmodel->profiler->Stop(EPLMasking);
+-
+-			femmodel->profiler->Start(EPLMatrices);
+-			if(VerboseSolution()) _printf0_("Building EPL Matrix...\n");
+-			SystemMatricesx(&Kff,&Kfs,&pf,&df,NULL,femmodel);
+-			CreateNodalConstraintsx(&ys,femmodel->nodes);
+-			Reduceloadx(pf,Kfs,ys); delete Kfs;
+-			delete uf_epl;
+-			femmodel->profiler->Stop(EPLMatrices);
+-
+-			femmodel->profiler->Start(SOLVER);
+-			Solverx(&uf_epl,Kff,pf,uf_epl_sub_iter,df,femmodel->parameters);
+-			femmodel->profiler->Stop(SOLVER);
+-
+-			delete Kff; delete pf; delete df;
+-			delete uf_epl_sub_iter;
+-			uf_epl_sub_iter=uf_epl->Duplicate();_assert_(uf_epl_sub_iter);
+-			uf_epl->Copy(uf_epl_sub_iter);
+-			delete ug_epl;
+-
+-			femmodel->profiler->Start(EPLUpdate);
+-			Mergesolutionfromftogx(&ug_epl,uf_epl,ys,femmodel->nodes,femmodel->parameters); delete ys;
+-			InputUpdateFromSolutionx(femmodel,ug_epl);
+-			ConstraintsStatex(&constraints_converged,&num_unstable_constraints,femmodel);
+-			femmodel->profiler->Stop(EPLUpdate);
+-		}
+-		if(!hydroconverged){
+-			//compute norm(du)/norm(u)
+-			dug=ug_sed_main_iter->Duplicate(); _assert_(dug);
+-			ug_sed_main_iter->Copy(dug);
+-			dug->AYPX(ug_sed,-1.0);
+-			ndu_sed=dug->Norm(NORM_TWO);
+-			delete dug;
+-			nu_sed=ug_sed_main_iter->Norm(NORM_TWO);
+-			delete ug_sed_main_iter;
+-			if (xIsNan<IssmDouble>(ndu_sed) || xIsNan<IssmDouble>(nu_sed)) _error_("Sed convergence criterion is NaN!");
+-			if (ndu_sed==0.0 && nu_sed==0.0) nu_sed=1.0e-6; /*Hacking the case where the Sediment is used but empty*/
+-
+-			if(isefficientlayer){
+-				dug=ug_epl_main_iter->Duplicate(); _assert_(dug);
+-				ug_epl_main_iter->Copy(dug);
+-				dug->AYPX(ug_epl,-1.0);
+-				ndu_epl=dug->Norm(NORM_TWO);
+-				delete dug;
+-				nu_epl=ug_epl_main_iter->Norm(NORM_TWO);
+-				delete ug_epl_main_iter;
+-				if (xIsNan<IssmDouble>(ndu_epl) || xIsNan<IssmDouble>(nu_epl)) _error_("EPL convergence criterion is NaN!");
+-				if (ndu_epl==0.0 && nu_epl==0.0) nu_epl=1.0e-6; /*Hacking the case where the EPL is used but empty*/
+-			}
+-
+-			if (!xIsNan<IssmDouble>(eps_hyd)){
+-				if ((ndu_epl/nu_epl)<eps_hyd && (ndu_sed/nu_sed)<(eps_hyd)){
+-					if (VerboseConvergence()) _printf0_(setw(50) << left << "   Converged after, " << hydrocount << " iterations \n");
+-					hydroconverged=true;
+-				}
+-				else{
+-					if(VerboseConvergence()) _printf0_(setw(50) << left << "   for iteration:" << hydrocount << " \n");
+-					if(VerboseConvergence()) _printf0_(setw(50) << left << "   Sediment Convergence criterion:" << ndu_sed/nu_sed*100 << "%, aiming lower than " << eps_hyd*100 << " %\n");
+-					if(VerboseConvergence()) _printf0_(setw(50) << left << "   EPL Convergence criterion:" << ndu_epl/nu_epl*100 << "%, aiming lower than " << eps_hyd*100 << " %\n");
+-					hydroconverged=false;
+-				}
+-			}
+-			if (hydrocount>=hydro_maxiter*9/10  && sliceadapt && !hydroconverged) {
+-				if(VerboseSolution()) _printf0_("hydrology main loop  did not converged after "<<hydrocount<<" iteration, we refine the steping\n");
+-				*pconv_fail = true;
+-				if(isefficientlayer){
+-					InputUpdateFromSolutionx(femmodel,ug_epl_init);
+-					delete ug_epl_init;
+-				}
+-				femmodel->SetCurrentConfiguration(HydrologyDCInefficientAnalysisEnum);
+-				InputUpdateFromSolutionx(femmodel,ug_sed_init);
+-				delete ug_sed_init;
+-				break;
+-			}
+-			if (hydrocount>=hydro_maxiter){
+-				_error_("   maximum number for hydrological global iterations (" << hydro_maxiter << ") exceeded");
+-			}
+-		}
+-		hydrocount++;
+-		if(hydroconverged)break;
+-
+-		if(*pconv_fail)break;
+-	}
+-	/*To deal with adaptative stepping we only save results if we are actually converged*/
+-	if(hydroconverged){
+-		if(isefficientlayer){
+-			InputUpdateFromSolutionx(femmodel,ug_epl);
+-			delete ug_epl_init;
+-		}
+-		femmodel->SetCurrentConfiguration(HydrologyDCInefficientAnalysisEnum);
+-		InputUpdateFromSolutionx(femmodel,ug_sed);
+-		delete ug_sed_init;
+-	}
+-	/*Free resources: */
+-	delete ug_epl;
+-	delete ug_sed;
+-	delete uf_sed;
+-	delete uf_epl;
+-	delete uf_epl_sub_iter;
+-	delete uf_sed_sub_iter;
+-	delete inefanalysis;
+-	delete effanalysis;
+-}
+Index: ../trunk-jpl/src/c/solutionsequences/solutionsequences.h
+===================================================================
+--- ../trunk-jpl/src/c/solutionsequences/solutionsequences.h	(revision 27189)
++++ ../trunk-jpl/src/c/solutionsequences/solutionsequences.h	(revision 27190)
+@@ -13,7 +13,6 @@
+ 
+ void solutionsequence_thermal_nonlinear(FemModel* femmodel);
+ void solutionsequence_hydro_nonlinear(FemModel* femmodel, bool* conv_fail);
+-void solutionsequence_hydro_singleloop(FemModel* femmodel, bool* conv_fail);
+ void solutionsequence_shakti_nonlinear(FemModel* femmodel);
+ void solutionsequence_glads_nonlinear(FemModel* femmodel);
+ void solutionsequence_nonlinear(FemModel* femmodel,bool conserve_loads);
Index: /issm/oecreview/Archive/27032-27229/ISSM-27190-27191.diff
===================================================================
--- /issm/oecreview/Archive/27032-27229/ISSM-27190-27191.diff	(revision 27230)
+++ /issm/oecreview/Archive/27032-27229/ISSM-27190-27191.diff	(revision 27230)
@@ -0,0 +1,561 @@
+Index: ../trunk-jpl/externalpackages/gmsh/install-4.sh
+===================================================================
+--- ../trunk-jpl/externalpackages/gmsh/install-4.sh	(revision 27190)
++++ ../trunk-jpl/externalpackages/gmsh/install-4.sh	(nonexistent)
+@@ -1,71 +0,0 @@
+-#!/bin/bash
+-set -eu
+-
+-
+-# TODO:
+-# - Add support for,
+-#	- BLAS_LAPACK
+-#	- MUMPS
+-#	- PETSC
+-# (see configs/4/static/CMakeLists.txt)
+-#
+-
+-## Constants
+-#
+-VER="4.5.6"
+-
+-PREFIX="${ISSM_DIR}/externalpackages/gmsh/install" # Set to location where external package should be installed
+-
+-# Cleanup
+-rm -rf ${PREFIX} src
+-mkdir -p ${PREFIX} src
+-
+-# Download source
+-$ISSM_DIR/scripts/DownloadExternalPackage.sh "https://issm.ess.uci.edu/files/externalpackages/gmsh-${VER}-source.tgz" "gmsh-${VER}-source.tgz"
+-
+-# Unpack source
+-tar -xvzf gmsh-${VER}-source.tgz
+-
+-# Move source to 'src' directory
+-mv gmsh-${VER}-source/* src
+-rm -rf gmsh-${VER}-source
+-
+-# Configure
+-#
+-# NOTE:
+-# - Option -DENABLE_FLTK=0 is used because we do not need GUI.
+-# - Option -DENABLE_MPEG_ENCODE=0 is used because we do not need to record MPEG 
+-#	movies.
+-# - Option -DENABLE_OCC=0 is used because we do not need CAD kernel and are not 
+-#	importing STEP/IGES files.
+-# - Option -DENABLE_TOUCHBAR=0 is used because we do not have GUI, therefore we 
+-#	do not need to support Apple Touch bar (does not affect compilation on 
+-#	Linux).
+-#
+-cd src
+-cmake \
+-	-DCMAKE_INSTALL_PREFIX="${PREFIX}" \
+-	-DENABLE_BUILD_DYNAMIC=1 \
+-	-DENABLE_BUILD_SHARED=1 \
+-	-DENABLE_FLTK=0 \
+-	-DENABLE_MPEG_ENCODE=0 \
+-	-DENABLE_MPI=1 \
+-	-DENABLE_OCC=0 \
+-	-DENABLE_TOUCHBAR=0 \
+-	-DBLAS_LAPACK_LIBRARIES="-L${LAPACK_ROOT}/lib -lflapack -L${BLAS_ROOT}/lib -lfblas" \
+-	-DMETIS_ROOT="${METIS_ROOT}"
+-
+-# Compile and install
+-if [ $# -eq 0 ]; then
+-	make
+-	make install
+-else
+-	make -j $1
+-	make -j $1 install
+-fi
+-
+-# Make necessary link on RHEL
+-if [[ -d ${PREFIX}/lib64 && ! -d ${PREFIX}/lib ]]; then
+-	cd ${PREFIX}
+-	ln -s ./lib64 ./lib
+-fi
+
+Property changes on: ../trunk-jpl/externalpackages/gmsh/install-4.sh
+___________________________________________________________________
+Deleted: svn:executable
+## -1 +0,0 ##
+-*
+\ No newline at end of property
+Index: ../trunk-jpl/externalpackages/gmsh/install-4-linux.sh
+===================================================================
+--- ../trunk-jpl/externalpackages/gmsh/install-4-linux.sh	(nonexistent)
++++ ../trunk-jpl/externalpackages/gmsh/install-4-linux.sh	(revision 27191)
+@@ -0,0 +1,71 @@
++#!/bin/bash
++set -eu
++
++
++# TODO:
++# - Add support for,
++#	- BLAS_LAPACK
++#	- MUMPS
++#	- PETSC
++# (see configs/4/static/CMakeLists.txt)
++#
++
++## Constants
++#
++VER="4.5.6"
++
++PREFIX="${ISSM_DIR}/externalpackages/gmsh/install" # Set to location where external package should be installed
++
++# Cleanup
++rm -rf ${PREFIX} src
++mkdir -p ${PREFIX} src
++
++# Download source
++$ISSM_DIR/scripts/DownloadExternalPackage.sh "https://issm.ess.uci.edu/files/externalpackages/gmsh-${VER}-source.tgz" "gmsh-${VER}-source.tgz"
++
++# Unpack source
++tar -xvzf gmsh-${VER}-source.tgz
++
++# Move source to 'src' directory
++mv gmsh-${VER}-source/* src
++rm -rf gmsh-${VER}-source
++
++# Configure
++#
++# NOTE:
++# - Option -DENABLE_FLTK=0 is used because we do not need GUI.
++# - Option -DENABLE_MPEG_ENCODE=0 is used because we do not need to record MPEG 
++#	movies.
++# - Option -DENABLE_OCC=0 is used because we do not need CAD kernel and are not 
++#	importing STEP/IGES files.
++# - Option -DENABLE_TOUCHBAR=0 is used because we do not have GUI, therefore we 
++#	do not need to support Apple Touch bar (does not affect compilation on 
++#	Linux).
++#
++cd src
++cmake \
++	-DCMAKE_INSTALL_PREFIX="${PREFIX}" \
++	-DENABLE_BUILD_DYNAMIC=1 \
++	-DENABLE_BUILD_SHARED=1 \
++	-DENABLE_FLTK=0 \
++	-DENABLE_MPEG_ENCODE=0 \
++	-DENABLE_MPI=1 \
++	-DENABLE_OCC=0 \
++	-DENABLE_TOUCHBAR=0 \
++	-DBLAS_LAPACK_LIBRARIES="-L${LAPACK_ROOT}/lib -lflapack -L${BLAS_ROOT}/lib -lfblas" \
++	-DMETIS_ROOT="${METIS_ROOT}"
++
++# Compile and install
++if [ $# -eq 0 ]; then
++	make
++	make install
++else
++	make -j $1
++	make -j $1 install
++fi
++
++# Make necessary link on RHEL
++if [[ -d ${PREFIX}/lib64 && ! -d ${PREFIX}/lib ]]; then
++	cd ${PREFIX}
++	ln -s ./lib64 ./lib
++fi
+
+Property changes on: ../trunk-jpl/externalpackages/gmsh/install-4-linux.sh
+___________________________________________________________________
+Added: svn:executable
+## -0,0 +1 ##
++*
+\ No newline at end of property
+Index: ../trunk-jpl/externalpackages/dakota/install-6.2-mac-static.sh
+===================================================================
+--- ../trunk-jpl/externalpackages/dakota/install-6.2-mac-static.sh	(revision 27190)
++++ ../trunk-jpl/externalpackages/dakota/install-6.2-mac-static.sh	(revision 27191)
+@@ -8,9 +8,6 @@
+ 
+ PREFIX="${ISSM_DIR}/externalpackages/dakota/install" # Set to location where external package should be installed
+ 
+-## Environment
+-#
+-
+ # Find libgfortran and libgcc so we do not have to hardcode them.
+ #
+ # Should retrieve a copy of gfortran that is compiled from source before 
+@@ -21,10 +18,12 @@
+ # - Test if -static-libgfortran flag will avoid all of this
+ # - Otherwise, refactor this to work with other gfortran installations
+ #
+-LIBGFORTRAN=$(mdfind -onlyin /usr -name libgfortran | grep -n libgfortran.a | grep -v i386 | sed "s/[0-9]*://g" | head -1)
++LIBGFORTRAN=$(mdfind -onlyin /usr -name libgfortran | egrep -n libgfortran.a | egrep -v i386 | sed "s/[0-9]*://g" | head -1)
+ LIBGFORTRAN_ROOT=${LIBGFORTRAN%/*}
+-LIBGCC=$(mdfind -onlyin ${LIBGFORTRAN_ROOT} -name libgcc | grep -n libgcc.a | grep -v i386 | sed "s/[0-9]*://g" | head -1)
++LIBGCC=$(mdfind -onlyin ${LIBGFORTRAN_ROOT} -name libgcc | egrep -n libgcc.a | egrep -v i386 | sed "s/[0-9]*://g" | head -1)
+ 
++## Environment
++#
+ export BLAS_LIBS="-L${BLAS_ROOT}/lib -lfblas ${LIBGFORTRAN_ROOT}/libgfortran.a ${LIBGFORTRAN_ROOT}/libquadmath.a ${LIBGCC}" # Need to export BLAS_LIBS *and* pass it as an option to CMake to ensure that external packages also find it
+ export DAK_BUILD=${ISSM_DIR}/externalpackages/dakota/build # DO NOT CHANGE THIS
+ export DAK_INSTALL=${PREFIX} # DO NOT CHANGE THIS
+Index: ../trunk-jpl/externalpackages/dakota/install-6.2-mac.sh
+===================================================================
+--- ../trunk-jpl/externalpackages/dakota/install-6.2-mac.sh	(revision 27190)
++++ ../trunk-jpl/externalpackages/dakota/install-6.2-mac.sh	(revision 27191)
+@@ -8,9 +8,6 @@
+ 
+ PREFIX="${ISSM_DIR}/externalpackages/dakota/install" # Set to location where external package should be installed
+ 
+-## Environment
+-#
+-
+ # Find libgfortran so that we do not have to hardcode it.
+ #
+ # Should retrieve a copy of gfortran that is compiled from source before 
+@@ -19,9 +16,11 @@
+ # TODO:
+ # - Move this to etc/environment.sh
+ #
+-LIBGFORTRAN=$(mdfind -onlyin /usr -name libgfortran | grep -n libgfortran.a | grep -v i386 | sed "s/[0-9]*://g" | head -1)
++LIBGFORTRAN=$(mdfind -onlyin /usr -name libgfortran | egrep -n libgfortran.a | egrep -v i386 | sed "s/[0-9]*://g" | head -1)
+ LIBGFORTRAN_ROOT=${LIBGFORTRAN%/*}
+ 
++## Environment
++#
+ export BLAS_LIBS="-L${BLAS_ROOT}/lib -lfblas -L${LIBGFORTRAN_ROOT} -lgfortran" # Need to export BLAS_LIBS *and* pass it as an option to CMake to ensure that external packages also find it
+ export DAK_BUILD=${ISSM_DIR}/externalpackages/dakota/build # DO NOT CHANGE THIS
+ export DAK_INSTALL=${PREFIX} # DO NOT CHANGE THIS
+Index: ../trunk-jpl/externalpackages/gmsh/install-4-mac-static.sh
+===================================================================
+--- ../trunk-jpl/externalpackages/gmsh/install-4-mac-static.sh	(revision 27190)
++++ ../trunk-jpl/externalpackages/gmsh/install-4-mac-static.sh	(revision 27191)
+@@ -23,9 +23,9 @@
+ # - Test if -static-libgfortran flag will avoid all of this.
+ # - Otherwise, refactor this to work with other gfortran installations.
+ #
+-LIBGFORTRAN=$(mdfind -onlyin /usr -name libgfortran | grep -n libgfortran.a | grep -v i386 | sed "s/[0-9]*://g" | head -1)
++LIBGFORTRAN=$(mdfind -onlyin /usr -name libgfortran | egrep -n libgfortran.a | egrep -v i386 | sed "s/[0-9]*://g" | head -1)
+ LIBGFORTRAN_ROOT=${LIBGFORTRAN%/*}
+-LIBGCC=$(mdfind -onlyin ${LIBGFORTRAN_ROOT} -name libgcc | grep -n libgcc.a | grep -v i386 | sed "s/[0-9]*://g" | head -1)
++LIBGCC=$(mdfind -onlyin ${LIBGFORTRAN_ROOT} -name libgcc | egrep -n libgcc.a | egrep -v i386 | sed "s/[0-9]*://g" | head -1)
+ 
+ PREFIX="${ISSM_DIR}/externalpackages/gmsh/install" # Set to location where external package should be installed
+ 
+Index: ../trunk-jpl/externalpackages/gmsh/install-4-mac.sh
+===================================================================
+--- ../trunk-jpl/externalpackages/gmsh/install-4-mac.sh	(nonexistent)
++++ ../trunk-jpl/externalpackages/gmsh/install-4-mac.sh	(revision 27191)
+@@ -0,0 +1,82 @@
++#!/bin/bash
++set -eu
++
++
++# TODO:
++# - Add support for,
++#	- BLAS_LAPACK
++#	- MUMPS
++#	- PETSC
++# (see configs/4/static/CMakeLists.txt)
++#
++
++## Constants
++#
++VER="4.5.6"
++
++PREFIX="${ISSM_DIR}/externalpackages/gmsh/install" # Set to location where external package should be installed
++
++# Find libgfortran so that we do not have to hardcode it.
++#
++# Should retrieve a copy of gfortran that is compiled from source before 
++# returning one that is installed via package manager.
++#
++# TODO:
++# - Move this to etc/environment.sh
++#
++LIBGFORTRAN=$(mdfind -onlyin /usr -name libgfortran | egrep -n libgfortran.a | egrep -v i386 | sed "s/[0-9]*://g" | head -1)
++LIBGFORTRAN_ROOT=${LIBGFORTRAN%/*}
++
++# Cleanup
++rm -rf ${PREFIX} src
++mkdir -p ${PREFIX} src
++
++# Download source
++$ISSM_DIR/scripts/DownloadExternalPackage.sh "https://issm.ess.uci.edu/files/externalpackages/gmsh-${VER}-source.tgz" "gmsh-${VER}-source.tgz"
++
++# Unpack source
++tar -xvzf gmsh-${VER}-source.tgz
++
++# Move source to 'src' directory
++mv gmsh-${VER}-source/* src
++rm -rf gmsh-${VER}-source
++
++# Configure
++#
++# NOTE:
++# - Option -DENABLE_FLTK=0 is used because we do not need GUI.
++# - Option -DENABLE_MPEG_ENCODE=0 is used because we do not need to record MPEG 
++#	movies.
++# - Option -DENABLE_OCC=0 is used because we do not need CAD kernel and are not 
++#	importing STEP/IGES files.
++# - Option -DENABLE_TOUCHBAR=0 is used because we do not have GUI, therefore we 
++#	do not need to support Apple Touch bar (does not affect compilation on 
++#	Linux).
++#
++cd src
++cmake \
++	-DCMAKE_INSTALL_PREFIX="${PREFIX}" \
++	-DENABLE_BUILD_DYNAMIC=1 \
++	-DENABLE_BUILD_SHARED=1 \
++	-DENABLE_FLTK=0 \
++	-DENABLE_MPEG_ENCODE=0 \
++	-DENABLE_MPI=1 \
++	-DENABLE_OCC=0 \
++	-DENABLE_TOUCHBAR=0 \
++	-DBLAS_LAPACK_LIBRARIES="-L${LAPACK_ROOT}/lib -lflapack -L${BLAS_ROOT}/lib -lfblas -L${LIBGFORTRAN_ROOT} -lgfortran" \
++	-DMETIS_ROOT="${METIS_ROOT}"
++
++# Compile and install
++if [ $# -eq 0 ]; then
++	make
++	make install
++else
++	make -j $1
++	make -j $1 install
++fi
++
++# Make necessary link on RHEL
++if [[ -d ${PREFIX}/lib64 && ! -d ${PREFIX}/lib ]]; then
++	cd ${PREFIX}
++	ln -s ./lib64 ./lib
++fi
+
+Property changes on: ../trunk-jpl/externalpackages/gmsh/install-4-mac.sh
+___________________________________________________________________
+Added: svn:executable
+## -0,0 +1 ##
++*
+\ No newline at end of property
+Index: ../trunk-jpl/externalpackages/gmt/install-6-mac-static.sh
+===================================================================
+--- ../trunk-jpl/externalpackages/gmt/install-6-mac-static.sh	(revision 27190)
++++ ../trunk-jpl/externalpackages/gmt/install-6-mac-static.sh	(revision 27191)
+@@ -15,9 +15,9 @@
+ # - Test if -static-libgfortran flag will avoid all of this.
+ # - Otherwise, refactor this to work with other gfortran installations.
+ #
+-LIBGFORTRAN=$(mdfind -onlyin /usr -name libgfortran | grep -n libgfortran.a | grep -v i386 | sed "s/[0-9]*://g" | head -1)
++LIBGFORTRAN=$(mdfind -onlyin /usr -name libgfortran | egrep -n libgfortran.a | egrep -v i386 | sed "s/[0-9]*://g" | head -1)
+ LIBGFORTRAN_ROOT=${LIBGFORTRAN%/*}
+-LIBGCC=$(mdfind -onlyin ${LIBGFORTRAN_ROOT} -name libgcc | grep -n libgcc.a | grep -v i386 | sed "s/[0-9]*://g" | head -1)
++LIBGCC=$(mdfind -onlyin ${LIBGFORTRAN_ROOT} -name libgcc | egrep -n libgcc.a | egrep -v i386 | sed "s/[0-9]*://g" | head -1)
+ 
+ GDAL_EXTRA_LIBS="-lc++" # `$GDAL_ROOT/bin/gdal-config --dep-libs` does not report need to link to libc++ (see also customized configuration file ./configs/6/static/cmake/modules/FindGDAL.cmake)
+ NETCDF_EXTRA_LIBS="-lsqlite3 -lpthread -ldl -liconv" # `$NETCDF_ROOT/bin/nc-config --libs` does not report certain dependencies of certain static libraries (see also customized configuration file ./configs/6/static/cmake/modules/FindNETCDF.cmake)
+Index: ../trunk-jpl/jenkins/aws-amazon_linux-solid_earth
+===================================================================
+--- ../trunk-jpl/jenkins/aws-amazon_linux-solid_earth	(revision 27190)
++++ ../trunk-jpl/jenkins/aws-amazon_linux-solid_earth	(revision 27191)
+@@ -45,7 +45,7 @@
+ 	gdal			install-3-python.sh
+ 	gshhg			install.sh
+ 	gmt				install-6-linux.sh
+-	gmsh			install-4.sh
++	gmsh			install-4-linux.sh
+ 	shell2junit		install.sh
+ "
+ 
+Index: ../trunk-jpl/jenkins/pine_island-mac-dakota
+===================================================================
+--- ../trunk-jpl/jenkins/pine_island-mac-dakota	(revision 27190)
++++ ../trunk-jpl/jenkins/pine_island-mac-dakota	(revision 27191)
+@@ -55,7 +55,7 @@
+ 	gdal		install-3-python.sh
+ 	gshhg		install.sh
+ 	gmt			install-6-mac.sh
+-	gmsh		install-4.sh
++	gmsh		install-4-mac.sh
+ 	triangle	install-mac.sh
+ 	chaco		install.sh
+ 	m1qn3		install.sh
+Index: ../trunk-jpl/jenkins/pine_island-mac-examples
+===================================================================
+--- ../trunk-jpl/jenkins/pine_island-mac-examples	(revision 27190)
++++ ../trunk-jpl/jenkins/pine_island-mac-examples	(revision 27191)
+@@ -56,7 +56,7 @@
+ 	gdal		install-3-python.sh
+ 	gshhg		install.sh
+ 	gmt			install-6-mac.sh
+-	gmsh		install-4.sh
++	gmsh		install-4-mac.sh
+ 	triangle	install-mac.sh
+ 	chaco		install.sh
+ 	m1qn3		install.sh
+Index: ../trunk-jpl/jenkins/pine_island-mac-full
+===================================================================
+--- ../trunk-jpl/jenkins/pine_island-mac-full	(revision 27190)
++++ ../trunk-jpl/jenkins/pine_island-mac-full	(revision 27191)
+@@ -43,7 +43,7 @@
+ EXTERNALPACKAGES="
+ 	autotools	install-mac.sh
+ 	cmake		install.sh
+-	petsc		install-3.12-mac.sh
++	petsc		install-3.16-mac.sh
+ 	gsl			install.sh
+ 	boost		install-1.7-mac.sh
+ 	dakota		install-6.2-mac.sh
+@@ -53,7 +53,7 @@
+ 	gdal		install-3-python.sh
+ 	gshhg		install.sh
+ 	gmt			install-6-mac.sh
+-	gmsh		install-4.sh
++	gmsh		install-4-mac.sh
+ 	triangle	install-mac.sh
+ 	chaco		install.sh
+ 	m1qn3		install.sh
+Index: ../trunk-jpl/jenkins/pine_island-mac-full-valgrind
+===================================================================
+--- ../trunk-jpl/jenkins/pine_island-mac-full-valgrind	(revision 27190)
++++ ../trunk-jpl/jenkins/pine_island-mac-full-valgrind	(revision 27191)
+@@ -43,7 +43,7 @@
+ EXTERNALPACKAGES="
+ 	autotools	install-mac.sh
+ 	cmake		install.sh
+-	petsc		install-3.12-mac.sh
++	petsc		install-3.16-mac.sh
+ 	gsl			install.sh
+ 	boost		install-1.7-mac.sh
+ 	dakota		install-6.2-mac.sh
+@@ -53,7 +53,7 @@
+ 	gdal		install-3-python.sh
+ 	gshhg		install.sh
+ 	gmt			install-6-mac.sh
+-	gmsh		install-4.sh
++	gmsh		install-4-mac.sh
+ 	triangle	install-mac.sh
+ 	chaco		install.sh
+ 	m1qn3		install.sh
+Index: ../trunk-jpl/jenkins/pine_island-mac-solid_earth
+===================================================================
+--- ../trunk-jpl/jenkins/pine_island-mac-solid_earth	(revision 27190)
++++ ../trunk-jpl/jenkins/pine_island-mac-solid_earth	(revision 27191)
+@@ -55,7 +55,7 @@
+ 	gdal		install-3-python.sh
+ 	gshhg		install.sh
+ 	gmt			install-6-mac.sh
+-	gmsh		install-4.sh
++	gmsh		install-4-mac.sh
+ 	triangle	install-mac.sh
+ 	chaco		install.sh
+ 	m1qn3		install.sh
+Index: ../trunk-jpl/jenkins/pine_island-mac-solid_earth-lambert
+===================================================================
+--- ../trunk-jpl/jenkins/pine_island-mac-solid_earth-lambert	(revision 27190)
++++ ../trunk-jpl/jenkins/pine_island-mac-solid_earth-lambert	(revision 27191)
+@@ -55,7 +55,7 @@
+ 	gdal		install-3-python.sh
+ 	gshhg		install.sh
+ 	gmt			install-6-mac.sh
+-	gmsh		install-4.sh
++	gmsh		install-4-mac.sh
+ 	triangle	install-mac.sh
+ 	chaco		install.sh
+ 	m1qn3		install.sh
+Index: ../trunk-jpl/jenkins/pleiades-solid_earth
+===================================================================
+--- ../trunk-jpl/jenkins/pleiades-solid_earth	(revision 27190)
++++ ../trunk-jpl/jenkins/pleiades-solid_earth	(revision 27191)
+@@ -48,7 +48,7 @@
+ 	gdal		install-3.sh
+ 	gshhg		install.sh
+ 	gmt			install-6-linux.sh
+-	gmsh		install-4.sh
++	gmsh		install-4-linux.sh
+ 	triangle	install-linux.sh
+ 	chaco		install.sh
+ 	m1qn3		install.sh
+Index: ../trunk-jpl/jenkins/ross-debian_linux-dakota
+===================================================================
+--- ../trunk-jpl/jenkins/ross-debian_linux-dakota	(revision 27190)
++++ ../trunk-jpl/jenkins/ross-debian_linux-dakota	(revision 27191)
+@@ -52,7 +52,7 @@
+ 	gdal			install-3-python.sh
+ 	gshhg			install.sh
+ 	gmt				install-6-linux.sh
+-	gmsh			install-4.sh
++	gmsh			install-4-linux.sh
+ 	triangle		install-linux.sh
+ 	chaco			install.sh
+ 	m1qn3			install.sh
+Index: ../trunk-jpl/jenkins/ross-debian_linux-full
+===================================================================
+--- ../trunk-jpl/jenkins/ross-debian_linux-full	(revision 27190)
++++ ../trunk-jpl/jenkins/ross-debian_linux-full	(revision 27191)
+@@ -53,7 +53,7 @@
+ 	gdal		install-3-python.sh
+ 	gshhg		install.sh
+ 	gmt			install-6-linux.sh
+-	gmsh		install-4.sh
++	gmsh		install-4-linux.sh
+ 	triangle	install-linux.sh
+ 	chaco		install.sh
+ 	m1qn3		install.sh
+Index: ../trunk-jpl/jenkins/ross-debian_linux-full-mplapack
+===================================================================
+--- ../trunk-jpl/jenkins/ross-debian_linux-full-mplapack	(revision 27190)
++++ ../trunk-jpl/jenkins/ross-debian_linux-full-mplapack	(revision 27191)
+@@ -56,7 +56,7 @@
+ 	gdal		install-3-python.sh
+ 	gshhg		install.sh
+ 	gmt			install-6-linux.sh
+-	gmsh		install-4.sh
++	gmsh		install-4-linux.sh
+ 	triangle	install-linux.sh
+ 	chaco		install.sh
+ 	m1qn3		install.sh
+Index: ../trunk-jpl/jenkins/ross-debian_linux-full-valgrind
+===================================================================
+--- ../trunk-jpl/jenkins/ross-debian_linux-full-valgrind	(revision 27190)
++++ ../trunk-jpl/jenkins/ross-debian_linux-full-valgrind	(revision 27191)
+@@ -53,7 +53,7 @@
+ 	gdal		install-3-python.sh
+ 	gshhg		install.sh
+ 	gmt			install-6-linux.sh
+-	gmsh		install-4.sh
++	gmsh		install-4-linux.sh
+ 	triangle	install-linux.sh
+ 	chaco		install.sh
+ 	m1qn3		install.sh
+Index: ../trunk-jpl/jenkins/ross-debian_linux-gia
+===================================================================
+--- ../trunk-jpl/jenkins/ross-debian_linux-gia	(revision 27190)
++++ ../trunk-jpl/jenkins/ross-debian_linux-gia	(revision 27191)
+@@ -36,7 +36,7 @@
+ 	petsc		install-3.12-linux.sh
+ 	triangle	install-linux.sh
+ 	math77		install.sh
+-	gmsh		install-4.sh
++	gmsh		install-4-linux.sh
+ 	shell2junit	install.sh
+ "
+ 
+Index: ../trunk-jpl/jenkins/ross-debian_linux-python
+===================================================================
+--- ../trunk-jpl/jenkins/ross-debian_linux-python	(revision 27190)
++++ ../trunk-jpl/jenkins/ross-debian_linux-python	(revision 27191)
+@@ -48,7 +48,7 @@
+ 	gdal		install-3-python.sh
+ 	gshhg		install.sh
+ 	gmt			install-6-linux.sh
+-	gmsh		install-4.sh
++	gmsh		install-4-linux.sh
+ 	triangle	install-linux.sh
+ 	chaco		install.sh
+ 	m1qn3		install.sh
+Index: ../trunk-jpl/jenkins/ross-debian_linux-solid_earth
+===================================================================
+--- ../trunk-jpl/jenkins/ross-debian_linux-solid_earth	(revision 27190)
++++ ../trunk-jpl/jenkins/ross-debian_linux-solid_earth	(revision 27191)
+@@ -50,7 +50,7 @@
+ 	gdal			install-3-python.sh
+ 	gshhg			install.sh
+ 	gmt				install-6-linux.sh
+-	gmsh			install-4.sh
++	gmsh			install-4-linux.sh
+ 	triangle		install-linux.sh
+ 	chaco			install.sh
+ 	m1qn3			install.sh
Index: /issm/oecreview/Archive/27032-27229/ISSM-27191-27192.diff
===================================================================
--- /issm/oecreview/Archive/27032-27229/ISSM-27191-27192.diff	(revision 27230)
+++ /issm/oecreview/Archive/27032-27229/ISSM-27191-27192.diff	(revision 27230)
@@ -0,0 +1,59 @@
+Index: ../trunk-jpl/externalpackages/petsc/install-3.17-pleiades.sh
+===================================================================
+--- ../trunk-jpl/externalpackages/petsc/install-3.17-pleiades.sh	(nonexistent)
++++ ../trunk-jpl/externalpackages/petsc/install-3.17-pleiades.sh	(revision 27192)
+@@ -0,0 +1,47 @@
++#!/bin/bash
++set -eu
++
++## Constants
++VER="3.17.4"
++
++# Download source
++$ISSM_DIR/scripts/DownloadExternalPackage.sh "https://ftp.mcs.anl.gov/pub/petsc/release-snapshots/petsc-lite-${VER}.tar.gz" "petsc-${VER}.tar.gz"
++
++# Unpack source
++tar -zxvf petsc-${VER}.tar.gz
++
++# Cleanup
++rm -rf install src
++mkdir install src
++
++# Move source to 'src' directory
++mv petsc-${VER}/* src/
++rm -rf petsc-${VER}
++
++#options from cat /nasa/petsc/3.14.5_toss3/lib/petsc/conf/petscvariables | grep CONF
++cd src
++./configure \
++	--prefix="${ISSM_DIR}/externalpackages/petsc/install" \
++	--PETSC_DIR="${ISSM_DIR}/externalpackages/petsc/src" \
++	--with-blas-lapack-dir="/nasa/intel/Compiler/2018.3.222/compilers_and_libraries_2018.3.222/linux/mkl" \
++	--with-scalapack-include="/nasa/intel/Compiler/2018.3.222/mkl/include" \
++	--with-scalapack-lib="/nasa/intel/Compiler/2018.3.222/mkl/lib/intel64/libmkl_scalapack_lp64.so /nasa/intel/Compiler/2018.3.222/mkl/lib/intel64/libmkl_blacs_intelmpi_lp64.so" \
++	--CFLAGS="-g -O3" \
++	--CXXFLAGS="-g -O3" \
++	--FFLAGS="-g -O3" \
++	--with-make-np=10 \
++	--with-batch=1 \
++	--with-pic=1 \
++	--with-shared-libraries=1 \
++	--with-debugging=0 \
++	--with-valgrind=0 \
++	--with-x=0 \
++	--with-ssl=0 \
++	--download-make=1 \
++	--download-metis=1 \
++	--download-parmetis=1 \
++	--download-mumps=1 
++
++# Compile and install
++make
++make install
+
+Property changes on: ../trunk-jpl/externalpackages/petsc/install-3.17-pleiades.sh
+___________________________________________________________________
+Added: svn:executable
+## -0,0 +1 ##
++*
+\ No newline at end of property
Index: /issm/oecreview/Archive/27032-27229/ISSM-27192-27193.diff
===================================================================
--- /issm/oecreview/Archive/27032-27229/ISSM-27192-27193.diff	(revision 27230)
+++ /issm/oecreview/Archive/27032-27229/ISSM-27192-27193.diff	(revision 27230)
@@ -0,0 +1,54 @@
+Index: ../trunk-jpl/src/c/solutionsequences/solutionsequence_hydro_nonlinear.cpp
+===================================================================
+--- ../trunk-jpl/src/c/solutionsequences/solutionsequence_hydro_nonlinear.cpp	(revision 27192)
++++ ../trunk-jpl/src/c/solutionsequences/solutionsequence_hydro_nonlinear.cpp	(revision 27193)
+@@ -77,7 +77,6 @@
+ 		GetBasalSolutionFromInputsx(&ug_epl,femmodel);
+ 		inefanalysis->ElementizeEplMask(femmodel);
+ 		effanalysis->InitZigZagCounter(femmodel);
+-		Reducevectorgtofx(&uf_epl, ug_epl, femmodel->nodes,femmodel->parameters);
+ 		ug_epl_init=ug_epl->Duplicate();
+ 		ug_epl->Copy(ug_epl_init);
+ 	}
+@@ -144,7 +143,7 @@
+ 					}
+ 					if (sedcount>=hydro_maxiter){
+ 						delete ug_sed;delete uf_sed;delete inefanalysis; delete ug_sed_main_iter;
+-						if(isefficientlayer)delete ug_epl;delete uf_epl;delete effanalysis; delete ug_epl_main_iter;
++						if(isefficientlayer)delete ug_epl;delete effanalysis; delete ug_epl_main_iter;
+ 						_error_("   maximum number of Sediment iterations (" << hydro_maxiter << ") exceeded");
+ 
+ 					}
+@@ -196,6 +195,7 @@
+ 				femmodel->HydrologyEPLupdateDomainx(&ThickCount);
+ 				/*}}}*/
+ 				femmodel->profiler->Stop(EPLMasking);
++				Reducevectorgtofx(&uf_epl, ug_epl, femmodel->nodes,femmodel->parameters);
+ 				if(VerboseSolution()) _printf0_("Building EPL Matrix...\n");
+ 				uf_epl_sub_iter=uf_epl->Duplicate();_assert_(uf_epl_sub_iter);
+ 				uf_epl->Copy(uf_epl_sub_iter);
+@@ -219,7 +219,6 @@
+ 				if(epl_fsize-epl_sub_fsize==0){
+ 					convergence(&eplconverged,Kff,pf,uf_epl,uf_epl_sub_iter,eps_res,eps_rel,eps_abs);
+ 					delete Kff; delete pf;
+-					/* if (ndu_epl==0.0 && nu_epl==0.0) nu_epl=1.0e-6; /\*Hacking the case where the EPL is used but empty*\/ */
+ 				}
+ 				else{
+ 					delete Kff; delete pf;
+@@ -242,7 +241,7 @@
+ 
+ 				}
+ 				eplcount++;
+-				delete uf_epl_sub_iter;
++				delete uf_epl_sub_iter; delete uf_epl;
+ 				if(eplconverged){
+ 					if(VerboseSolution()) _printf0_("eplconverged...\n");
+ 					effanalysis->ResetCounter(femmodel);
+@@ -319,6 +318,6 @@
+ 	}
+ 	/*Free resources: */
+ 	delete ug_epl;delete ug_sed;
+-	delete uf_sed;	delete uf_epl;
++	delete uf_sed;
+ 	delete inefanalysis;	delete effanalysis;
+ }
Index: /issm/oecreview/Archive/27032-27229/ISSM-27193-27194.diff
===================================================================
--- /issm/oecreview/Archive/27032-27229/ISSM-27193-27194.diff	(revision 27230)
+++ /issm/oecreview/Archive/27032-27229/ISSM-27193-27194.diff	(revision 27230)
@@ -0,0 +1,124 @@
+Index: ../trunk-jpl/externalpackages/dakota/install-6.2-linux-static.sh
+===================================================================
+--- ../trunk-jpl/externalpackages/dakota/install-6.2-linux-static.sh	(revision 27193)
++++ ../trunk-jpl/externalpackages/dakota/install-6.2-linux-static.sh	(revision 27194)
+@@ -8,14 +8,22 @@
+ 
+ PREFIX="${ISSM_DIR}/externalpackages/dakota/install" # Set to location where external package should be installed
+ 
++# Find libgfortran and libgcc so we do not have to hardcode them
++#
++# TODO:
++# - Move this to etc/environment.sh
++#
++LIBGFORTRAN=$(find /usr -name libgfortran* | egrep -n libgfortran.a | sed "s/[0-9]*://g" | head -1)
++LIBGFORTRAN_ROOT=${LIBGFORTRAN%/*}
++LIBGCC=$(find ${LIBGFORTRAN_ROOT} -name libgcc* | egrep -n libgcc.a | sed "s/[0-9]*://g" | head -1
++
+ ## Environment
+ #
+-export BLAS_LIBS="-L${BLAS_ROOT}/lib -lfblas -L/usr/lib/x86_64-linux-gnu -lgfortran" # Need to export BLAS_LIBS *and* pass it as an option to CMake to ensure that external packages also find it
+-export CXXFLAGS='-std=c++98' # Setting CXXFLAGS to deal with C++11 incompatibility with MATLAB's Boost (absolutely necessary for this version)
++export BLAS_LIBS="-L${BLAS_ROOT}/lib -lfblas ${LIBGFORTRAN_ROOT}/libgfortran.a ${LIBGFORTRAN_ROOT}/libquadmath.a ${LIBGCC}" # Need to export BLAS_LIBS *and* pass it as an option to CMake to ensure that external packages also find it
+ export DAK_BUILD=${ISSM_DIR}/externalpackages/dakota/build # DO NOT CHANGE THIS
+ export DAK_INSTALL=${PREFIX} # DO NOT CHANGE THIS
+ export DAK_SRC=${ISSM_DIR}/externalpackages/dakota/src # DO NOT CHANGE THIS
+-export LAPACK_LIBS="-L${LAPACK_ROOT}/lib -lflapack -L/usr/lib/x86_64-linux-gnu -lgfortran" # Need to export LAPACK_LIBS *and* pass it as an option to CMake to ensure that external packages also find it
++export LAPACK_LIBS="-L${LAPACK_ROOT}/lib -lflapack -L/usr/lib/x86_64-linux-gnu ${LIBGFORTRAN_ROOT}/libgfortran.a ${LIBGFORTRAN_ROOT}/libquadmath.a ${LIBGCC}" # Need to export LAPACK_LIBS *and* pass it as an option to CMake to ensure that external packages also find it
+ 
+ # Cleanup
+ rm -rf ${DAK_BUILD} ${DAK_INSTALL} ${DAK_SRC}
+@@ -53,6 +61,7 @@
+ 	-DCMAKE_C_FLAGS="-fPIC -Wno-error=implicit-function-declaration" \
+ 	-DCMAKE_CXX_COMPILER=${MPI_HOME}/bin/mpicxx \
+ 	-DCMAKE_CXX_FLAGS="-fPIC" \
++	-DCMAKE_CXX_STANDARD="11" \
+ 	-DCMAKE_Fortran_COMPILER=${MPI_HOME}/bin/mpif77 \
+ 	-DBoost_NO_BOOST_CMAKE=TRUE \
+ 	-DHAVE_ACRO=OFF \
+Index: ../trunk-jpl/externalpackages/dakota/install-6.2-mac-static.sh
+===================================================================
+--- ../trunk-jpl/externalpackages/dakota/install-6.2-mac-static.sh	(revision 27193)
++++ ../trunk-jpl/externalpackages/dakota/install-6.2-mac-static.sh	(revision 27194)
+@@ -79,6 +79,7 @@
+ 	-DCMAKE_C_FLAGS="-fPIC -Wno-error=implicit-function-declaration" \
+ 	-DCMAKE_CXX_COMPILER=${MPI_HOME}/bin/mpicxx \
+ 	-DCMAKE_CXX_FLAGS="-fPIC -fdelayed-template-parsing" \
++	-DCMAKE_CXX_STANDARD="11" \
+ 	-DCMAKE_Fortran_COMPILER=${MPI_HOME}/bin/mpif77 \
+ 	-DCMAKE_Fortran_FLAGS="-fPIC -fallow-argument-mismatch" \
+ 	-DBoost_NO_BOOST_CMAKE=TRUE \
+Index: ../trunk-jpl/externalpackages/gmsh/install-4-linux-static.sh
+===================================================================
+--- ../trunk-jpl/externalpackages/gmsh/install-4-linux-static.sh	(revision 27193)
++++ ../trunk-jpl/externalpackages/gmsh/install-4-linux-static.sh	(revision 27194)
+@@ -16,16 +16,12 @@
+ 
+ # Find libgfortran and libgcc so we do not have to hardcode them
+ #
+-# NOTE: For now, paths are hardcoded.
+-#
+ # TODO:
+ # - Move this to etc/environment.sh
+-# - Figure out how to find and grep for single result like we do with mdfind 
+-#	under macOS.
+ #
+-LIBGFORTRAN="/usr/lib/gcc/x86_64-linux-gnu/8/libgfortran.a"
++LIBGFORTRAN=$(find /usr -name libgfortran* | egrep -n libgfortran.a | sed "s/[0-9]*://g" | head -1)
+ LIBGFORTRAN_ROOT=${LIBGFORTRAN%/*}
+-LIBGCC="/usr/lib/gcc/x86_64-linux-gnu/8/libgcc.a"
++LIBGCC=$(find ${LIBGFORTRAN_ROOT} -name libgcc* | egrep -n libgcc.a | sed "s/[0-9]*://g" | head -1)
+ 
+ PREFIX="${ISSM_DIR}/externalpackages/gmsh/install" # Set to location where external package should be installed
+ 
+Index: ../trunk-jpl/externalpackages/gmsh/install-4-linux.sh
+===================================================================
+--- ../trunk-jpl/externalpackages/gmsh/install-4-linux.sh	(revision 27193)
++++ ../trunk-jpl/externalpackages/gmsh/install-4-linux.sh	(revision 27194)
+@@ -16,6 +16,14 @@
+ 
+ PREFIX="${ISSM_DIR}/externalpackages/gmsh/install" # Set to location where external package should be installed
+ 
++# Find libgfortran so that we do not have to hardcode it.
++#
++# TODO:
++# - Move this to etc/environment.sh
++#
++LIBGFORTRAN=$(find /usr -name libgfortran* | egrep -n libgfortran.a | sed "s/[0-9]*://g" | head -1)
++LIBGFORTRAN_ROOT=${LIBGFORTRAN%/*}
++
+ # Cleanup
+ rm -rf ${PREFIX} src
+ mkdir -p ${PREFIX} src
+@@ -52,7 +60,7 @@
+ 	-DENABLE_MPI=1 \
+ 	-DENABLE_OCC=0 \
+ 	-DENABLE_TOUCHBAR=0 \
+-	-DBLAS_LAPACK_LIBRARIES="-L${LAPACK_ROOT}/lib -lflapack -L${BLAS_ROOT}/lib -lfblas" \
++	-DBLAS_LAPACK_LIBRARIES="-L${LAPACK_ROOT}/lib -lflapack -L${BLAS_ROOT}/lib -lfblas -L${LIBGFORTRAN_ROOT} -lgfortran" \
+ 	-DMETIS_ROOT="${METIS_ROOT}"
+ 
+ # Compile and install
+Index: ../trunk-jpl/externalpackages/gmt/install-6-linux-static.sh
+===================================================================
+--- ../trunk-jpl/externalpackages/gmt/install-6-linux-static.sh	(revision 27193)
++++ ../trunk-jpl/externalpackages/gmt/install-6-linux-static.sh	(revision 27194)
+@@ -8,16 +8,12 @@
+ 
+ # Find libgfortran and libgcc so we do not have to hardcode them
+ #
+-# NOTE: For now, paths are hardcoded.
+-#
+ # TODO:
+ # - Move this to etc/environment.sh
+-# - Figure out how to find and grep for single result like we do with mdfind 
+-#	under macOS.
+ #
+-LIBGFORTRAN="/usr/lib/gcc/x86_64-linux-gnu/8/libgfortran.a"
++LIBGFORTRAN=$(find /usr -name libgfortran* | egrep -n libgfortran.a | sed "s/[0-9]*://g" | head -1)
+ LIBGFORTRAN_ROOT=${LIBGFORTRAN%/*}
+-LIBGCC="/usr/lib/gcc/x86_64-linux-gnu/8/libgcc.a"
++LIBGCC=$(find ${LIBGFORTRAN_ROOT} -name libgcc* | egrep -n libgcc.a | sed "s/[0-9]*://g" | head -1)
+ 
+ GDAL_EXTRA_LIBS="-lstdc++" # Determined by running `$GDAL_ROOT/bin/gdal-config --dep-libs` then removing duplicate libs
+ NETCDF_EXTRA_LIBS="-lm -ldl -lz" # `$NETCDF_ROOT/bin/nc-config --libs` does not report certain dependencies of certain static libraries (see also customized configuration file ./configs/6.0/static/cmake/modules/FindNETCDF.cmake)
Index: /issm/oecreview/Archive/27032-27229/ISSM-27194-27195.diff
===================================================================
--- /issm/oecreview/Archive/27032-27229/ISSM-27194-27195.diff	(revision 27230)
+++ /issm/oecreview/Archive/27032-27229/ISSM-27194-27195.diff	(revision 27230)
@@ -0,0 +1,26 @@
+Index: ../trunk-jpl/externalpackages/gdal/install-3-python-static.sh
+===================================================================
+--- ../trunk-jpl/externalpackages/gdal/install-3-python-static.sh	(revision 27194)
++++ ../trunk-jpl/externalpackages/gdal/install-3-python-static.sh	(revision 27195)
+@@ -41,7 +41,7 @@
+ 	--without-ld-shared \
+ 	--enable-static \
+ 	--with-pic \
+-	--with-python \
++	--with-python=python3 \
+ 	--with-curl="${CURL_ROOT}/bin/curl-config" \
+ 	--with-hdf5="${HDF5_ROOT}" \
+ 	--with-jpeg=internal \
+Index: ../trunk-jpl/externalpackages/gdal/install-3-python.sh
+===================================================================
+--- ../trunk-jpl/externalpackages/gdal/install-3-python.sh	(revision 27194)
++++ ../trunk-jpl/externalpackages/gdal/install-3-python.sh	(revision 27195)
+@@ -33,7 +33,7 @@
+ ./configure \
+ 	--prefix="${PREFIX}" \
+ 	--enable-fast-install \
+-	--with-python \
++	--with-python=python3 \
+ 	--with-hdf5="${HDF5_ROOT}" \
+ 	--with-libz="${ZLIB_ROOT}" \
+ 	--with-netcdf="${NETCDF_ROOT}" \
Index: /issm/oecreview/Archive/27032-27229/ISSM-27195-27196.diff
===================================================================
--- /issm/oecreview/Archive/27032-27229/ISSM-27195-27196.diff	(revision 27230)
+++ /issm/oecreview/Archive/27032-27229/ISSM-27195-27196.diff	(revision 27230)
@@ -0,0 +1,134 @@
+Index: ../trunk-jpl/src/m/classes/SMBgemb.m
+===================================================================
+--- ../trunk-jpl/src/m/classes/SMBgemb.m	(revision 27195)
++++ ../trunk-jpl/src/m/classes/SMBgemb.m	(revision 27196)
+@@ -72,7 +72,7 @@
+ 		% 1: default value of 1, in areas with grain radius below teThresh
+ 		% 2: default value of 1, in areas with grain radius below teThresh and areas of dry snow (not bare ice or wet) at the surface
+ 
+-		swIdx  = NaN; % apply all SW to top grid cell (0) or allow SW to penetrate surface (1) (default 1, if aIdx=2 function of effective radius (Brun et al., 1992) or else dependent on snow density (taken from Bassford, 2002))
++		swIdx  = NaN; %apply all SW to top grid cell (0) or allow SW to penetrate surface (1) (default 0, if swIdx=1 and aIdx=2, function of effective radius (Brun et al., 1992) or else dependent on snow density (taken from Bassford, 2002))
+ 
+ 		denIdx = NaN; %densification model to use (default is 2):
+ 		% 1 = emperical model of Herron and Langway (1980)
+@@ -235,7 +235,7 @@
+ 					fielddisplay(self,'K','time scale temperature coef. (7) [d]');
+ 			end
+ 
+-			fielddisplay(self,'swIdx','apply all SW to top grid cell (0) or allow SW to penetrate surface (1) [default 1, if aIdx=2 function of effective radius (Brun et al., 1992) or else dependent on snow density (taken from Bassford, 2002)]');
++			fielddisplay(self,'swIdx','apply all SW to top grid cell (0) or allow SW to penetrate surface (1) [default 0, if swIdx=1 and aIdx=2 function of effective radius (Brun et al., 1992) or else dependent on snow density (taken from Bassford, 2002)]');
+ 			fielddisplay(self,'denIdx',{'densification model to use (default is 2):',...
+ 				'1 = emperical model of Herron and Langway (1980)',...
+ 				'2 = semi-emperical model of Anthern et al. (2010)',...
+@@ -342,7 +342,7 @@
+ 
+ 			self.aIdx = 1;
+ 			self.eIdx = 1;
+-			self.swIdx = 1;
++			self.swIdx = 0;
+ 			self.denIdx = 2;
+ 			self.dsnowIdx = 1;
+ 			self.zTop=10*ones(mesh.numberofelements,1);
+Index: ../trunk-jpl/src/m/classes/SMBgemb.py
+===================================================================
+--- ../trunk-jpl/src/m/classes/SMBgemb.py	(revision 27195)
++++ ../trunk-jpl/src/m/classes/SMBgemb.py	(revision 27196)
+@@ -79,7 +79,7 @@
+         # 1: default value of 1, in areas with grain radius below teThresh
+         # 2: default value of 1, in areas with grain radius below teThresh and areas of dry snow (not bare ice or wet) at the surface
+ 
+-        self.swIdx                  = np.nan    # apply all SW to top grid cell (0) or allow SW to penetrate surface (1) (default 1, if aIdx=2 function of effective radius (Brun et al., 1992) or else dependent on snow density (taken from Bassford, 2002))
++        self.swIdx                  = np.nan    # apply all SW to top grid cell (0) or allow SW to penetrate surface (1) (default 0, if swIdx=1 and aIdx=2, function of effective radius (Brun et al., 1992) or else dependent on snow density (taken from Bassford, 2002)) 
+ 
+         self.denIdx                 = np.nan    # densification model to use (default is 2):
+         # 1 = emperical model of Herron and Langway (1980)
+@@ -237,7 +237,7 @@
+             s += '{}\n'.format(fielddisplay(self, 't0dry', 'warm snow timescale (30) [d]'))
+             s += '{}\n'.format(fielddisplay(self, 'K', 'time scale temperature coef. (7) [d]'))
+ 
+-        s += '{}\n'.format(fielddisplay(self, 'swIdx', 'apply all SW to top grid cell (0) or allow SW to penetrate surface (1) [default 1, if aIdx=2 function of effective radius (Brun et al., 1992) or else dependent on snow density (taken from Bassford, 2002)]'))
++        s += '{}\n'.format(fielddisplay(self, 'swIdx', 'apply all SW to top grid cell (0) or allow SW to penetrate surface (1) [default 0, if swIdx=1 and aIdx=2 function of effective radius (Brun et al., 1992) or else dependent on snow density (taken from Bassford, 2002)]'))
+         s += '{}\n'.format(fielddisplay(self, 'denIdx', ['densification model to use (default is 2):',
+             '1 = emperical model of Herron and Langway (1980)',
+             '2 = semi-emperical model of Anthern et al. (2010)',
+@@ -329,7 +329,7 @@
+ 
+         self.aIdx = 1
+         self.eIdx = 1
+-        self.swIdx = 1
++        self.swIdx = 0 
+         self.denIdx = 2
+         self.dsnowIdx = 1
+         self.zTop = 10 * np.ones((mesh.numberofelements,))
+Index: ../trunk-jpl/test/NightlyRun/test243.m
+===================================================================
+--- ../trunk-jpl/test/NightlyRun/test243.m	(revision 27195)
++++ ../trunk-jpl/test/NightlyRun/test243.m	(revision 27196)
+@@ -9,6 +9,7 @@
+ % Use of Gemb method for SMB computation
+ md.smb = SMBgemb(md.mesh,md.geometry);
+ md.smb.dsnowIdx = 1;
++md.smb.swIdx = 1;
+ 
+ %load hourly surface forcing date from 1979 to 2009:
+ inputs=load('../Data/gemb_input.mat');
+Index: ../trunk-jpl/test/NightlyRun/test243.py
+===================================================================
+--- ../trunk-jpl/test/NightlyRun/test243.py	(revision 27195)
++++ ../trunk-jpl/test/NightlyRun/test243.py	(revision 27196)
+@@ -20,6 +20,7 @@
+ #Use of Gemb method for SMB computation
+ md.smb = SMBgemb(md.mesh, md.geometry)
+ md.smb.dsnowIdx = 1
++md.smb.swIdx = 1
+ 
+ #load hourly surface forcing date from 1979 to 2009:
+ if sys.version_info.major == 2:
+Index: ../trunk-jpl/test/NightlyRun/test244.m
+===================================================================
+--- ../trunk-jpl/test/NightlyRun/test244.m	(revision 27195)
++++ ../trunk-jpl/test/NightlyRun/test244.m	(revision 27196)
+@@ -10,6 +10,7 @@
+ % Use of Gemb method for SMB computation
+ md.smb = SMBgemb(md.mesh,md.geometry);
+ md.smb.dsnowIdx = 0;
++md.smb.swIdx = 1;
+ 
+ %load hourly surface forcing date from 1979 to 2009:
+ inputs=load('../Data/gemb_input.mat');
+Index: ../trunk-jpl/test/NightlyRun/test244.py
+===================================================================
+--- ../trunk-jpl/test/NightlyRun/test244.py	(revision 27195)
++++ ../trunk-jpl/test/NightlyRun/test244.py	(revision 27196)
+@@ -29,6 +29,7 @@
+ # Use of Gemb method for SMB computation
+ md.smb = SMBgemb(md.mesh, md.geometry)
+ md.smb.dsnowIdx = 0
++md.smb.swIdx = 1
+ 
+ #load hourly surface forcing date from 1979 to 2009:
+ inputs = spio.loadmat('../Data/gemb_input.mat', squeeze_me=True)
+Index: ../trunk-jpl/test/NightlyRun/test252.m
+===================================================================
+--- ../trunk-jpl/test/NightlyRun/test252.m	(revision 27195)
++++ ../trunk-jpl/test/NightlyRun/test252.m	(revision 27196)
+@@ -9,6 +9,7 @@
+ % Use of Gemb method for SMB computation
+ md.smb = SMBgemb(md.mesh,md.geometry);
+ md.smb.dsnowIdx = 4;
++md.smb.swIdx = 1;
+ 
+ %load hourly surface forcing date from 1979 to 2009:
+ inputs=load('../Data/gemb_input.mat');
+Index: ../trunk-jpl/test/NightlyRun/test252.py
+===================================================================
+--- ../trunk-jpl/test/NightlyRun/test252.py	(revision 27195)
++++ ../trunk-jpl/test/NightlyRun/test252.py	(revision 27196)
+@@ -22,6 +22,7 @@
+ #Use of Gemb method for SMB computation
+ md.smb = SMBgemb(md.mesh, md.geometry)
+ md.smb.dsnowIdx = 4
++md.smb.swIdx = 1
+ 
+ #load hourly surface forcing date from 1979 to 2009:
+ if sys.version_info.major == 2:
Index: /issm/oecreview/Archive/27032-27229/ISSM-27196-27197.diff
===================================================================
--- /issm/oecreview/Archive/27032-27229/ISSM-27196-27197.diff	(revision 27230)
+++ /issm/oecreview/Archive/27032-27229/ISSM-27196-27197.diff	(revision 27230)
@@ -0,0 +1,44 @@
+Index: ../trunk-jpl/examples/Greenland/runme.m
+===================================================================
+--- ../trunk-jpl/examples/Greenland/runme.m	(revision 27196)
++++ ../trunk-jpl/examples/Greenland/runme.m	(revision 27197)
+@@ -20,7 +20,7 @@
+ 	vel  = sqrt(vx.^2+vy.^2);
+ 
+ 	%Mesh Greenland
+-	md=bamg(md,'hmax',400000,'hmin',5000,'gradation',1.7,'field',vel,'err',8);
++	md=bamg(md,'hmax',400000,'hmin',5000,'gradation',1.4,'field',vel,'err',8);
+ 
+ 	%convert x,y coordinates (Polar stereo) to lat/lon
+ 	[md.mesh.lat,md.mesh.long]=xy2ll(md.mesh.x,md.mesh.y,+1,39,71);
+@@ -55,7 +55,7 @@
+ 	md.inversion.cost_functions=[101 103 501];
+ 	md.inversion.cost_functions_coefficients=ones(md.mesh.numberofvertices,3);
+ 	md.inversion.cost_functions_coefficients(:,1)=350;
+-	md.inversion.cost_functions_coefficients(:,2)=0.6;
++	md.inversion.cost_functions_coefficients(:,2)=0.2;
+ 	md.inversion.cost_functions_coefficients(:,3)=2e-6;
+ 
+ 	%Controls
+Index: ../trunk-jpl/examples/Greenland/runme.py
+===================================================================
+--- ../trunk-jpl/examples/Greenland/runme.py	(revision 27196)
++++ ../trunk-jpl/examples/Greenland/runme.py	(revision 27197)
+@@ -41,7 +41,7 @@
+     vel = np.sqrt(vx**2 + vy**2)
+ 
+     #Mesh Greenland
+-    md = bamg(md, 'hmax', 400000, 'hmin', 5000, 'gradation', 1.7, 'field', vel, 'err', 8)
++    md = bamg(md, 'hmax', 400000, 'hmin', 5000, 'gradation', 1.4, 'field', vel, 'err', 8)
+ 
+     #convert x, y coordinates (Polar stereo) to lat / lon
+     [md.mesh.lat, md.mesh.long] = xy2ll(md.mesh.x, md.mesh.y, + 1, 39, 71)
+@@ -76,7 +76,7 @@
+     md.inversion.cost_functions = [101, 103, 501]
+     md.inversion.cost_functions_coefficients = np.ones((md.mesh.numberofvertices, 3))
+     md.inversion.cost_functions_coefficients[:, 0] = 350
+-    md.inversion.cost_functions_coefficients[:, 1] = 0.6
++    md.inversion.cost_functions_coefficients[:, 1] = 0.2
+     md.inversion.cost_functions_coefficients[:, 2] = 2e-6
+ 
+     #Controls
Index: /issm/oecreview/Archive/27032-27229/ISSM-27197-27198.diff
===================================================================
--- /issm/oecreview/Archive/27032-27229/ISSM-27197-27198.diff	(revision 27230)
+++ /issm/oecreview/Archive/27032-27229/ISSM-27197-27198.diff	(revision 27230)
@@ -0,0 +1,592 @@
+Index: ../trunk-jpl/src/m/plot/applyoptions.py
+===================================================================
+--- ../trunk-jpl/src/m/plot/applyoptions.py	(revision 27197)
++++ ../trunk-jpl/src/m/plot/applyoptions.py	(revision 27198)
+@@ -33,7 +33,7 @@
+     # {{{ font
+     fontsize = options.getfieldvalue('fontsize', 8)
+     fontweight = options.getfieldvalue('fontweight', 'normal')
+-    fontfamily = options.getfieldvalue('fontfamily', 'sans - serif')
++    fontfamily = options.getfieldvalue('fontfamily', 'sans-serif')
+     font = {
+         'fontsize': fontsize,
+         'fontweight': fontweight,
+@@ -185,7 +185,22 @@
+         cbar_extend += 1
+     if options.exist('cmap_set_under'):
+         cbar_extend += 2
++
+     # }}}
++    # {{{ colorbar extension
++    if options.exist('cbar_extend'):
++        extend = options.getfieldvalue('cbar_extend', 'neither')
++    else:
++        if cbar_extend == 0:
++            extend = 'neither'
++        elif cbar_extend == 1:
++            extend = 'max'
++        elif cbar_extend == 2:
++            extend = 'min'
++        elif cbar_extend == 3:
++            extend = 'both'
++        options.addfielddefault('cbar_extend', extend)
++    # }}}
+     # {{{ contours
+     if options.exist('contourlevels'):
+         plot_contour(md, data, options, ax)
+@@ -199,15 +214,6 @@
+     # }}}
+     # {{{ colorbar
+     if options.getfieldvalue('colorbar', 1) == 1:
+-        if cbar_extend == 0:
+-            extend = 'neither'
+-        elif cbar_extend == 1:
+-            extend = 'max'
+-        elif cbar_extend == 2:
+-            extend = 'min'
+-        elif cbar_extend == 3:
+-            extend = 'both'
+-
+         cb = mpl.colorbar.ColorbarBase(ax.cax, cmap=cmap, norm=norm, extend=extend)
+         if options.exist('alpha'):
+             cb.set_alpha(options.getfieldvalue('alpha'))
+Index: ../trunk-jpl/src/m/plot/plot_edgeoverlay.py
+===================================================================
+--- ../trunk-jpl/src/m/plot/plot_edgeoverlay.py	(revision 27197)
++++ ../trunk-jpl/src/m/plot/plot_edgeoverlay.py	(revision 27198)
+@@ -2,6 +2,8 @@
+ import matplotlib as mpl
+ import matplotlib.pyplot as plt
+ from processmesh import processmesh
++from matplotlib import collections
++from scipy.stats import percentileofscore
+ 
+ 
+ def plot_edgeoverlay(md, datain, options, ax):
+@@ -12,33 +14,120 @@
+ 
+     See also: PLOTMODEL'''
+ 
++    # if md.mesh.numberofedges not in np.shape(datain):
++    #     raise ValueError('Data must be defined on edges to be ploted as an edge overlay')
++
+     x, y, z, elements, is2d, isplanet = processmesh(md, [], options)
++    Edges = md.mesh.edges - 1
+ 
+-    flags = datain > 6.7e-5  # this is appropriate for channel Area (perhaps)
+-    hide = np.invert(flags)
++    #First we mask values under a given value define by quantiles
++    if options.exist('edgemin'):
++        minval = options.getfieldvalue('edgemin', 0)
++        minquant = percentileofscore(datain, minval, kind='weak')
++        minquant = minquant / 100
++    else:
++        minquant = 0.7
++        minval = np.quantile(datain, minquant)
++    print("For the overlay we plot values above {:.4g} wich corresponds to the {}% percentile".format(minval, minquant * 100))
+ 
+-    NodeMask = np.zeros(np.shape(md.mesh.x), dtype=bool)
+-    HideElt = md.mesh.edges[np.where(hide), 0] - 1
+-    NodeMask[HideElt] = True
+-    MaskX = np.ma.array(x, mask=NodeMask)
+-    MaskY = np.ma.array(y, mask=NodeMask)
++    flags = datain > minval  #6.7e-5  # this is appropriate for channel Area (perhaps)
+ 
+-    EdgeEnd = md.mesh.edges[:, 1] - 1
+-    EdgeStart = md.mesh.edges[:, 0] - 1
+-    quiverU = MaskX[EdgeEnd] - MaskX[EdgeStart]
+-    quiverV = MaskY[EdgeEnd] - MaskY[EdgeStart]
++    edgetype = options.getfieldvalue('edgetype', 'thickness')
+ 
+-    Masked = np.ma.masked_array(datain, mask=hide)
+-    if options.exist('cedgelim'):
+-        lims = options.getfieldvalue('cedgelim', [Masked.min(), Masked.max()])
+-        edgenorm = mpl.colors.Normalize(vmin=lims[0], vmax=lims[1])
+-    else:
+-        edgenorm = mpl.colors.Normalize(vmin=Masked.min(), vmax=Masked.max())
+-    edgemap = plt.cm.get_cmap('inferno')
++    if edgetype == "color":
++        #create an nodewise dataset from edges
++        NodeMask = np.ones(np.shape(md.mesh.x), dtype=bool)
++        #We grab all the starts from the unmasked edges
++        Starters = Edges[np.where(flags), 0]
++        NodeMask[Starters] = False
++        Xstart = np.ma.array(x, mask=NodeMask)
++        Ystart = np.ma.array(y, mask=NodeMask)
+ 
+-    ax.quiver(MaskX[EdgeStart], MaskY[EdgeStart], quiverU, quiverV, datain,
+-              units="xy", angles="xy", scale_units="xy", scale=1,
+-              headwidth=0, headlength=0, width=100, headaxislength=0,
+-              norm=edgenorm, cmap=edgemap)
++        NodeMask = np.ones(np.shape(md.mesh.x), dtype=bool)
++        Enders = Edges[np.where(flags), 1]
++        NodeMask[Enders] = False
++        Xend = np.ma.array(x, mask=NodeMask)
++        Yend = np.ma.array(y, mask=NodeMask)
+ 
+-    plt.colorbar(plt.cm.ScalarMappable(norm=edgenorm, cmap=edgemap), ax=ax)
++        #define vectors from the start and end point of the unmasked edges
++        EdgeEnd = Edges[:, 1]
++        EdgeStart = Edges[:, 0]
++        quiverU = np.ma.array(Xend[EdgeEnd] - Xstart[EdgeStart], mask=np.invert(flags))
++        quiverV = np.ma.array(Yend[EdgeEnd] - Ystart[EdgeStart], mask=np.invert(flags))
++
++        #mask out the values from the data and create colorscale
++        Masked = np.ma.masked_array(datain, mask=np.invert(flags))
++        cbar_extend = 0
++        edgemap = plt.cm.get_cmap('inferno')
++        if options.exist('cedgeaxis'):
++            lims = options.getfieldvalue('cedgeaxis', [Masked.min(), Masked.max()])
++            edgenorm = mpl.colors.Normalize(vmin=lims[0], vmax=lims[1])
++            if lims[0] > Masked.min():
++                edgemap.set_under('r')
++                cbar_extend += 2
++            if lims[1] < Masked.max():
++                edgemap.set_over('k')
++                cbar_extend += 1
++        else:
++            edgenorm = mpl.colors.Normalize(vmin=Masked.min(), vmax=Masked.max())
++
++        if cbar_extend == 0:
++            extend = 'neither'
++        elif cbar_extend == 1:
++            extend = 'max'
++        elif cbar_extend == 2:
++            extend = 'min'
++        elif cbar_extend == 3:
++            extend = 'both'
++
++        ax.quiver(Xstart[EdgeStart], Ystart[EdgeStart], quiverU, quiverV, datain,
++                  units="xy", angles="xy", scale_units="xy", scale=1,
++                  headwidth=0, headlength=0, width=100, headaxislength=0,
++                  norm=edgenorm, cmap=edgemap)
++
++        #plt.colorbar(plt.cm.ScalarMappable(norm=edgenorm, cmap=edgemap), ax=ax, extend=extend, orientation='horizontal', anchor=(1, 0))
++        cbarax = ax.inset_axes([0.02, 0.02, 0.96, 0.05])
++        #inset_axes(ax, width="100%", height="5%", loc='lower center', borderpad=-5)
++        mpl.colorbar.ColorbarBase(cbarax, norm=edgenorm, cmap=edgemap, extend=extend, orientation='horizontal', ticklocation='top')
++
++    elif edgetype == 'thickness':
++        #First we classify a range
++        if options.exist('edgeranges'):
++            edgeranges = options.getfieldvalue('edgeranges', 2)
++        else:
++            edgeranges = 2
++
++        quantrange = np.linspace(minquant, 1, edgeranges + 1)[:-1]
++        flags = []
++        legtext = []
++        for Qindex, quantile in enumerate(quantrange):
++            if quantile < quantrange[-1]:
++                lowquant = np.quantile(datain, quantile)
++                highquant = np.quantile(datain, quantrange[Qindex + 1])
++                flags.append(np.logical_and(datain >= lowquant, datain <= highquant))
++                legtext.append('From  {:.2g} to {:.2g}'. format(lowquant, highquant))
++            else:
++                lowquant = np.quantile(datain, quantile)
++                flags.append((datain > lowquant))
++                legtext.append('More than {:.2g}'.format(lowquant))
++
++        flags = np.asarray(np.squeeze(flags))
++        EdgeEnd = Edges[:, 1]
++        EdgeStart = Edges[:, 0]
++
++        for index in range(edgeranges):
++            linecol = []
++            #We loop on the result and aonly add to a linecollection the flaged edges.
++            for datindex, datval in enumerate(datain):
++                if flags[index, datindex]:
++                    linecol.append([(x[EdgeStart[datindex]], y[EdgeStart[datindex]]),
++                                    (x[EdgeEnd[datindex]], y[EdgeEnd[datindex]])])
++
++            lc = collections.LineCollection(linecol, color='k', linewidth=0.5 + index,
++                                            label=legtext[index])
++            ax.add_collection(lc)
++
++        ax.legend(title='Overlay')
++
++    else:
++        print("Only 'color', and 'thickness' are accepted as edgeoverlay types")
+Index: ../trunk-jpl/src/m/plot/plot_manager.py
+===================================================================
+--- ../trunk-jpl/src/m/plot/plot_manager.py	(revision 27197)
++++ ../trunk-jpl/src/m/plot/plot_manager.py	(revision 27198)
+@@ -26,7 +26,7 @@
+     'axgrid' is a handle to the axes instance created by plotmodel. This is
+     currently generated using matplotlib's AxesGrid toolkit.
+ 
+-    'gridindex' is passed through to specialized plot* functions and 
++    'gridindex' is passed through to specialized plot* functions and
+     applyoptions.
+ 
+     Usage:
+@@ -88,7 +88,6 @@
+     # {{{ Profile plot TODO
+     # }}}
+ 
+-    #process data and model
+     x, y, z, elements, is2d, isplanet = processmesh(md, data, options)
+     data2, datatype = processdata(md, data, options)
+     #plot unit
+Index: ../trunk-jpl/src/m/plot/plot_unit.py
+===================================================================
+--- ../trunk-jpl/src/m/plot/plot_unit.py	(revision 27197)
++++ ../trunk-jpl/src/m/plot/plot_unit.py	(revision 27198)
+@@ -32,15 +32,11 @@
+     edgecolor = options.getfieldvalue('edgecolor', 'None')
+ 
+     # colormap
+-    # {{{ give number of colorlevels and transparency
++    # give number of colorlevels and transparency {{{
+     colorlevels = options.getfieldvalue('colorlevels', 128)
+     alpha = options.getfieldvalue('alpha', 1)
+-    if alpha < 1:
+-        antialiased = True
+-    else:
+-        antialiased = False
+     # }}}
+-    # {{{ define wich colormap to use
++    # define wich colormap to use {{{
+     try:
+         defaultmap = plt.cm.get_cmap('viridis', colorlevels)
+     except AttributeError:
+@@ -50,15 +46,9 @@
+         cmap = defaultmap
+     else:
+         cmap = getcolormap(options)
+-    if options.exist('cmap_set_over'):
+-        over = options.getfieldvalue('cmap_set_over', 'k')
+-        cmap.set_over(over)
+-    if options.exist('cmap_set_under'):
+-        under = options.getfieldvalue('cmap_set_under', 'k')
+-        cmap.set_under(under)
+     options.addfield('colormap', cmap)
+     # }}}
+-    # {{{ if plotting only one of several layers reduce dataset, same for surface
++    # if plotting only one of several layers reduce dataset, same for surface {{{
+     if options.getfieldvalue('layer', 0) >= 1:
+         plotlayer = options.getfieldvalue('layer', 0)
+         if datatype == 1:
+@@ -67,7 +57,7 @@
+             slicesize = len(x)
+         data = data[(plotlayer - 1) * slicesize:plotlayer * slicesize]
+     # }}}
+-    # {{{ Get the colormap limits
++    # Get the colormap limits {{{
+     dataspread = np.nanmax(data) - np.nanmin(data)
+     if dataspread != 0.:
+         limextent = np.abs(dataspread / np.nanmean(data))
+@@ -76,6 +66,10 @@
+ 
+     if options.exist('caxis'):
+         lims = options.getfieldvalue('caxis', [np.nanmin(data), np.nanmax(data)])
++        if lims[0] > np.nanmin(data):
++            options.addfielddefault('cmap_set_under', 'r')
++        if lims[1] < np.nanmax(data):
++            options.addfielddefault('cmap_set_over', 'k')
+     else:
+         if limextent == 0.:
+             delta = abs(0.1 * np.nanmin(data))
+@@ -84,8 +78,30 @@
+             lims = [np.nanmin(data) - 2 * dataspread, np.nanmax(data) + 2 * dataspread]
+         else:
+             lims = [np.nanmin(data), np.nanmax(data)]
++
++    cbar_extend = 0
++    if options.exist('cmap_set_over'):
++        over = options.getfieldvalue('cmap_set_over', 'k')
++        cmap.set_over(over)
++        cbar_extend += 1
++    if options.exist('cmap_set_under'):
++        under = options.getfieldvalue('cmap_set_under', 'r')
++        cmap.set_under(under)
++        cbar_extend += 2
+     # }}}
+-    # {{{ Set the spread of the colormap (default is normal
++
++    # colorbar extension {{{
++    if cbar_extend == 0:
++        extend = 'neither'
++    elif cbar_extend == 1:
++        extend = 'max'
++    elif cbar_extend == 2:
++        extend = 'min'
++    elif cbar_extend == 3:
++        extend = 'both'
++    options.addfielddefault('cbar_extend', extend)
++    # }}}
++    # Set the spread of the colormap (default is normal) {{{
+     if options.exist('log'):
+         norm = mpl.colors.LogNorm(vmin=lims[0], vmax=lims[1])
+     else:
+@@ -94,7 +110,7 @@
+     # }}}
+ 
+     # Plot depending on the datatype
+-    # {{{ data are on elements
++    # data are on elements {{{
+     if datatype == 1:
+         if is2d:
+             if options.exist('mask'):
+@@ -101,6 +117,7 @@
+                 triangles = mpl.tri.Triangulation(x, y, elements, data.mask)
+             else:
+                 triangles = mpl.tri.Triangulation(x, y, elements)
++
+             tri = ax.tripcolor(triangles, data, colorlevels, cmap=cmap, norm=norm, alpha=alpha, edgecolors=edgecolor)
+         else:
+             #first deal with colormap
+@@ -152,8 +169,7 @@
+         return
+ 
+     # }}}
+-    # {{{ data are on nodes
+-
++    # data are on nodes {{{
+     elif datatype == 2:
+         if is2d:
+             if np.ma.is_masked(data):
+@@ -161,23 +177,15 @@
+                 triangles = mpl.tri.Triangulation(x, y, elements, EltMask)
+             else:
+                 triangles = mpl.tri.Triangulation(x, y, elements)
+-    #tri = ax.tricontourf(triangles, data, colorlevels, cmap = cmap, norm=norm, alpha = alpha)
+-            if options.exist('log'):
+-                if alpha < 1:  #help with antialiasing
+-                    tri = ax.tricontour(triangles, data, colorlevels, cmap=cmap, norm=norm, alpha=0.1, antialiased=antialiased)
+-                tri = ax.tricontourf(triangles, data, colorlevels, cmap=cmap, norm=norm, alpha=alpha, antialiased=antialiased)
++            if edgecolor == 'None':
++                tri = ax.tripcolor(triangles, data, cmap=cmap, norm=norm, alpha=alpha, shading='gouraud')
+             else:
+-                if alpha < 1:  #help with antialiasing
+-                    tri = ax.tricontour(triangles, data, colorlevels, cmap=cmap, norm=norm, alpha=0.1, antialiased=antialiased)
+-                tri = ax.tricontourf(triangles, data, colorlevels, cmap=cmap, norm=norm, alpha=alpha, extend='both', antialiased=antialiased)
+-            if edgecolor != 'None':
+-                ax.triplot(x, y, elements, color=edgecolor)
++                tri = ax.tripcolor(triangles, data, cmap=cmap, norm=norm, alpha=alpha, edgecolors=edgecolor)
+         else:
+             #first deal with the colormap
+             loccmap = plt.cm.ScalarMappable(cmap=cmap)
+             loccmap.set_array(lims)
+             loccmap.set_clim(vmin=lims[0], vmax=lims[1])
+-
+     #deal with prism sides
+             recface = np.vstack((elements[:, 0], elements[:, 1], elements[:, 4], elements[:, 3])).T
+             recface = np.vstack((recface, np.vstack((elements[:, 1], elements[:, 2], elements[:, 5], elements[:, 4])).T))
+@@ -214,7 +222,7 @@
+         return
+ 
+     # }}}
+-    # {{{ plotting quiver
++    # plotting quiver {{{
+     elif datatype == 3:
+         if is2d:
+             Q = plot_quiver(x, y, data, options, ax)
+@@ -222,15 +230,25 @@
+             raise ValueError('plot_unit error: 3D node plot not supported yet')
+         return
+     # }}}
+-    # {{{ plotting P1 Patch (TODO)
++    # plotting P1 Patch (TODO) {{{
+     elif datatype == 4:
+         print('plot_unit message: P1 patch plot not implemented yet')
+         return
+     # }}}
+-    # {{{ plotting P0 Patch (TODO)
++    # plotting P0 Patch (TODO) {{{
+     elif datatype == 5:
+         print('plot_unit message: P0 patch plot not implemented yet')
+         return
+     # }}}
++    # plotting edges  {{{
++    elif datatype == 6:
++        if is2d:
++            triangles = mpl.tri.Triangulation(x, y, elements)
++            tri = ax.tripcolor(triangles, data, cmap=cmap, norm=norm, alpha=alpha, edgecolors=edgecolor)
++
++        else:
++            print("edge plotting is not implemented for 3D")
++        return
++    # }}}
+     else:
+         raise ValueError('datatype = %d not supported' % datatype)
+Index: ../trunk-jpl/src/m/plot/plotmodel.py
+===================================================================
+--- ../trunk-jpl/src/m/plot/plotmodel.py	(revision 27197)
++++ ../trunk-jpl/src/m/plot/plotmodel.py	(revision 27198)
+@@ -27,36 +27,30 @@
+     figurenumber = options.figurenumber
+     numberofplots = options.numberofplots
+ 
+-    #get number of subplots
+-    subplotwidth = ceil(sqrt(numberofplots))
++    #get the "optimal" number of subfigures in a row/col
++    if (np.nanmax(md.mesh.x) - np.nanmin(md.mesh.x)) > (np.nanmax(md.mesh.y) - np.nanmin(md.mesh.y)):
++        maxrow = ceil(sqrt(numberofplots))
++        maxcol = ceil(numberofplots / maxrow)
++    else:
++        maxcol = ceil(sqrt(numberofplots))
++        maxrow = ceil(numberofplots / maxcol)
+ 
+-    # TODO: Check that commenting this out is correct; we do not need a hold
+-    # under matplotlib, right?
+-    #
+-    # #get hold
+-    # hold = options.list[0].getfieldvalue('hold', False)
+-
+-    #if nrows and ncols specified, then bypass
++    #If any  of nrows or ncols are given we use that
+     if options.list[0].exist('nrows'):
+         nrows = options.list[0].getfieldvalue('nrows')
+-        nr = True
+-    else:
+-        nrows = np.ceil(numberofplots / subplotwidth)
+-        nr = False
+-
+-    if options.list[0].exist('ncols'):
++        if options.list[0].exist('ncols'):
++            ncols = options.list[0].getfieldvalue('ncols')
++        else:
++            ncols = ceil(numberofplots / nrows)
++    elif options.list[0].exist('ncols'):
+         ncols = options.list[0].getfieldvalue('ncols')
+-        nc = True
++        nrows = ceil(numberofplots / ncols)
+     else:
+-        ncols = int(subplotwidth)
+-        nc = False
++        nrows = maxrow
++        ncols = maxcol
+     ncols = int(ncols)
+     nrows = int(nrows)
+ 
+-    #check that nrows and ncols were given at the same time!
+-    if nr != nc:
+-        raise Exception('plotmodel error message: nrows and ncols need to be specified together, or not at all')
+-
+     # Go through plots
+     #
+     # NOTE: The following is where Python + matplolib differs substantially in
+Index: ../trunk-jpl/src/m/plot/processdata.py
+===================================================================
+--- ../trunk-jpl/src/m/plot/processdata.py	(revision 27197)
++++ ../trunk-jpl/src/m/plot/processdata.py	(revision 27198)
+@@ -7,7 +7,9 @@
+     datatype = 1 -> elements
+     datatype = 2 -> nodes
+     datatype = 3 -> node quivers
+-    datatype = 4 -> patch
++    datatype = 4 -> P1 patch
++    datatype = 5 -> P0 patch
++    datatype = 6 -> edges
+ 
+     Usage:
+     data, datatype = processdata(md, data, options)
+@@ -24,6 +26,11 @@
+     else:
+         numberofvertices2d = np.nan
+ 
++    try:
++        numberofedges = md.mesh.numberofedges
++    except AttributeError:
++        numberofedges = np.nan
++
+     if options.exist('amr'):
+         step = options.getfieldvalue('amr', 0)
+         numberofvertices = len(md.results.TransientSolution[step].MeshX)
+@@ -51,13 +58,13 @@
+         raise ValueError('data passed to plotmodel has bad dimensions; check that column vectors are rank - 1')
+     # }}}
+ 
+-    #  log {{{
++    # log {{{
+     if options.exist('log'):
+         cutoff = options.getfieldvalue('log', 1)
+         procdata[np.where(procdata < cutoff)] = cutoff
+     # }}}
+ 
+-    #  quiver plot {{{
++    # quiver plot {{{
+     if datasize[1] > 1 and datasize[0] != numberofvertices + 1:
+         if datasize[0] == numberofvertices and datasize[1] in [2, 3]:
+             datatype = 3
+@@ -79,7 +86,7 @@
+ 
+     # }}}
+ 
+-    #  element data{{{
++    # element data{{{
+     if datasize[0] == numberofelements and datasize[1] == 1:
+         #initialize datatype if non patch
+         if datatype != 4 and datatype != 5:
+@@ -106,8 +113,8 @@
+ 
+     # }}}
+ 
+-    #  node data {{{
+-    if datasize[0] in [numberofvertices, numberofvertices2d] and datasize[1] == 1:
++    # node data {{{
++    elif datasize[0] in [numberofvertices, numberofvertices2d] and datasize[1] == 1:
+         datatype = 2
+         # AMR {{{
+         if options.exist('amr'):
+@@ -114,7 +121,7 @@
+             nonan = np.nonzero(~np.isnan(md.results.TransientSolution[step].MeshX))
+             procdata = procdata[nonan]
+         # }}}
+-        #  Mask {{{
++        # Mask {{{
+         if options.exist('mask'):
+             flags = options.getfieldvalue('mask')
+             hide = np.invert(flags)
+@@ -132,8 +139,21 @@
+         # }}}
+     # }}}
+ 
+-    #  spc time series {{{
+-    if datasize[0] == numberofvertices + 1:
++    # edge data {{{
++    elif datasize[0] in [numberofedges] and datasize[1] == 1:
++        datatype = 6
++        procdata = np.zeros((md.mesh.numberofelements))
++        repeat = np.zeros((md.mesh.numberofelements))
++        for index, edge in enumerate(md.mesh.edges[:, -2:]):
++            procdata[edge - 1] += data[index] * np.asarray(edge - 1 > -1, dtype=int)
++            repeat[edge - 1] += np.asarray(edge - 1 > -1, dtype=int)
++        procdata = procdata / repeat
++
++        # }}}
++    # }}}
++
++    # spc time series {{{
++    elif datasize[0] == numberofvertices + 1:
+         datatype = 2
+         spccol = options.getfieldvalue('spccol', 0)
+         print('multiple-column spc field; specify column to plot using option "spccol"')
+@@ -140,14 +160,9 @@
+         print(('column ', spccol, ' plotted for time: ', procdata[-1, spccol]))
+         procdata = procdata[0:-1, spccol]
+ 
+-        #mask?
+-
+-        #layer projection?
+-
+-        #control arrow density if quiver plot
+     # }}}
+ 
+-    # convert rank - 2 array to rank - 1 {{{
++    # convert rank -2 array to rank -1 {{{
+     if np.ndim(procdata) == 2 and np.shape(procdata)[1] == 1:
+         procdata = procdata.reshape(-1, )
+     # }}}
+@@ -168,9 +183,8 @@
+ 
+         procdata[np.isnan(procdata)] = nanfill
+         procdata = np.ma.array(procdata, mask=np.isnan(procdata))
+-        print('from nan processing {} and {}'.format(lb, ub))
+         if nanfill < lb:
+-            options.addfielddefault('cmap_set_under', 'k')
++            options.addfielddefault('cmap_set_under', 'r')
+         elif nanfill > ub:
+             options.addfielddefault('cmap_set_over', 'k')
+         if nanfill < ub and nanfill > lb:
Index: /issm/oecreview/Archive/27032-27229/ISSM-27198-27199.diff
===================================================================
--- /issm/oecreview/Archive/27032-27229/ISSM-27198-27199.diff	(revision 27230)
+++ /issm/oecreview/Archive/27032-27229/ISSM-27198-27199.diff	(revision 27230)
@@ -0,0 +1,38 @@
+Index: ../trunk-jpl/src/m/contrib/defleurian/paraview/exportVTU.py
+===================================================================
+--- ../trunk-jpl/src/m/contrib/defleurian/paraview/exportVTU.py	(revision 27198)
++++ ../trunk-jpl/src/m/contrib/defleurian/paraview/exportVTU.py	(revision 27199)
+@@ -389,6 +389,7 @@
+             # }}}
+             # loop on arguments, if something other than result is asked, do it now {{{
+             for other in args:
++                treated_res = []
+                 if verbose > 3:
+                     print("Now treating {}".format(other))
+                 other_struct = md.__dict__[other]
+@@ -444,7 +445,6 @@
+             if np.size(list(saved_cells.keys())) > 0 or np.size(list(saved_edges.keys())) > 0:
+                 cellkeys = list(saved_cells.keys())
+                 edgekeys = list(saved_edges.keys())
+-                print(cellkeys, edgekeys)
+                 if len(cellkeys) > 0 and len(edgekeys) > 0:
+                     savekeys = list(saved_cells.keys())
+                     savekeys.extend(edgekeys)
+@@ -456,7 +456,7 @@
+                     print("Saving cell for {}".format(savekeys))
+                 fid.write('      <CellData Scalars="{}">\n'.format(savekeys))
+ 
+-            if len(cellkeys) > 0:
++            if np.size(list(saved_cells.keys())) > 0:
+                 for key in cellkeys:
+                     outval = saved_cells[key]
+                     if num_of_edges > 0:
+@@ -492,7 +492,7 @@
+                 fid.write('      <FieldData>\n')
+                 for key in list(saved_const.keys()):
+                     fid.write('        <DataArray type="Float32" Name="{}" format="{}">\n'.format(key, fmtout))
+-                    WriteIt(current_time, fid, fmtout)
++                    WriteIt(saved_const[key], fid, fmtout)
+                     fid.write('        </DataArray>\n')
+                 fid.write('      </FieldData>\n')
+             # }}}
Index: /issm/oecreview/Archive/27032-27229/ISSM-27199-27200.diff
===================================================================
--- /issm/oecreview/Archive/27032-27229/ISSM-27199-27200.diff	(revision 27230)
+++ /issm/oecreview/Archive/27032-27229/ISSM-27199-27200.diff	(revision 27230)
@@ -0,0 +1,32 @@
+Index: ../trunk-jpl/src/m/mesh/planet/gmsh/gmshplanet.m
+===================================================================
+--- ../trunk-jpl/src/m/mesh/planet/gmsh/gmshplanet.m	(revision 27199)
++++ ../trunk-jpl/src/m/mesh/planet/gmsh/gmshplanet.m	(revision 27200)
+@@ -15,10 +15,14 @@
+ %      md.mesh=gmshplanet('radius',6000,'resolution',100);
+ 
+ 	%Find path to gmsh
+-	paths = {[issmdir() 'bin/gmsh'],...
+-		 [issmdir() 'externalpackages/gmsh/install/gmsh'],...
+-		 ['/usr/bin/gmsh']...
+-		};
++	paths = {
++		[getenv('ISSM_EXT_DIR') '/shared/gmsh/install/bin/gmsh'],...
++		[getenv('ISSM_EXT_DIR') '/static/gmsh/install/bin/gmsh'],...
++		[getenv('ISSM_EXT_DIR') '/gmsh/install/bin/gmsh'],...
++		[issmdir() 'externalpackages/gmsh/install/bin/gmsh'],...
++		[issmdir() 'bin/gmsh'],...
++		['/usr/bin/gmsh']...
++	};
+ 	gmshpath = '';
+ 	for i=paths
+ 		if exist(i{1},'file'),
+@@ -27,7 +31,7 @@
+ 		end
+ 	end
+ 	if isempty(gmshpath),
+-		error('gmsh not found, make sure it is properly installed');
++		error('Gmsh not found, make sure it is properly installed');
+ 	end
+ 
+ 	% Get Gmsh version
Index: /issm/oecreview/Archive/27032-27229/ISSM-27200-27201.diff
===================================================================
--- /issm/oecreview/Archive/27032-27229/ISSM-27200-27201.diff	(revision 27230)
+++ /issm/oecreview/Archive/27032-27229/ISSM-27200-27201.diff	(revision 27230)
@@ -0,0 +1,39 @@
+Index: ../trunk-jpl/src/m/coordsystems/gmtmask.m
+===================================================================
+--- ../trunk-jpl/src/m/coordsystems/gmtmask.m	(revision 27200)
++++ ../trunk-jpl/src/m/coordsystems/gmtmask.m	(revision 27201)
+@@ -35,7 +35,7 @@
+ 	dlmwrite(filename_all,[long lat (1:nv)'],'delimiter','\t','precision',10);
+ 
+ 	%figure out which vertices are on the ocean, which one on the continent:
+-	[status,result] = system(['gmtselect ./' filename_all ' -h0 -Df -R0/360/-90/90  -A0 -JQ180/200 -Nk/s/s/k/s > ./' filename_oce]);
++	[status,result] = system(['gmt select ./' filename_all ' -h0 -Df -R0/360/-90/90  -A0 -JQ180/200 -Nk/s/s/k/s > ./' filename_oce]);
+ 	if status~=0,
+ 		error(result);
+ 	end
+Index: ../trunk-jpl/src/m/coordsystems/gmtmask.py
+===================================================================
+--- ../trunk-jpl/src/m/coordsystems/gmtmask.py	(revision 27200)
++++ ../trunk-jpl/src/m/coordsystems/gmtmask.py	(revision 27201)
+@@ -44,7 +44,7 @@
+     np.savetxt('./all_vertices.txt', np.transpose([long, lat, np.arange(1, nv + 1)]), delimiter='\t', fmt='%.10f')
+ 
+     #figure out which vertices are on the ocean, which one on the continent:
+-    subprocess.call('gmtselect ./ all_vertices.txt -h0 -Df -R0/360/-90/90 -A0 -JQ180/200 -Nk/s/s/k/s > ./oce_vertices.txt', shell=True)
++    subprocess.call('gmt select ./ all_vertices.txt -h0 -Df -R0/360/-90/90 -A0 -JQ180/200 -Nk/s/s/k/s > ./oce_vertices.txt', shell=True)
+ 
+     #read the con_vertices.txt file and flag our mesh vertices on the continent
+     fid = open('./oce_vertices.txt', 'r')
+Index: ../trunk-jpl/src/m/coordsystems/gmtmaskparallel.m
+===================================================================
+--- ../trunk-jpl/src/m/coordsystems/gmtmaskparallel.m	(revision 27200)
++++ ../trunk-jpl/src/m/coordsystems/gmtmaskparallel.m	(revision 27201)
+@@ -41,7 +41,7 @@
+ 	%Build xjobs script:
+ 	fid=fopen('xjobs.script','w');
+ 	for i=1:length(nnv)-1,
+-		fprintf(fid,'%s gmtselect ./all_vertices%i.txt -h0 -Df -R0/360/-90/90  -A0 -JQ180/200 -Nk/s/s/k/s > ./oce_vertices%i.txt\n',gmtpath,i,i);
++		fprintf(fid,'%s gmt select ./all_vertices%i.txt -h0 -Df -R0/360/-90/90  -A0 -JQ180/200 -Nk/s/s/k/s > ./oce_vertices%i.txt\n',gmtpath,i,i);
+ 	end
+ 	fclose(fid);
+ 
Index: /issm/oecreview/Archive/27032-27229/ISSM-27201-27202.diff
===================================================================
--- /issm/oecreview/Archive/27032-27229/ISSM-27201-27202.diff	(revision 27230)
+++ /issm/oecreview/Archive/27032-27229/ISSM-27201-27202.diff	(revision 27230)
@@ -0,0 +1,1580 @@
+Index: ../trunk-jpl/externalpackages/petsc/install-3.14-mac.sh
+===================================================================
+--- ../trunk-jpl/externalpackages/petsc/install-3.14-mac.sh	(revision 27201)
++++ ../trunk-jpl/externalpackages/petsc/install-3.14-mac.sh	(revision 27202)
+@@ -17,7 +17,7 @@
+ 
+ # Cleanup
+ rm -rf ${PREFIX} ${PETSC_DIR}
+-mkdir ${PETSC_DIR}
++mkdir -p ${PETSC_DIR}
+ 
+ # Move source to $PETSC_DIR
+ mv petsc-${VER}/* ${PETSC_DIR}
+Index: ../trunk-jpl/externalpackages/petsc/install-3.14-tetralith.sh
+===================================================================
+--- ../trunk-jpl/externalpackages/petsc/install-3.14-tetralith.sh	(revision 27201)
++++ ../trunk-jpl/externalpackages/petsc/install-3.14-tetralith.sh	(revision 27202)
+@@ -2,15 +2,13 @@
+ set -eu
+ 
+ 
+-# NOTE: There is a single difference between the Linux and macOS 
+-#		configurations, which is the addition of the -static-libgfortran 
+-#		option to FFLAGS on the macOS static configurations. For the sake of 
+-#		consistency, we maintain separate files for each, respective Linux and 
+-#		macOS configuration.
+-
+-# Constants
++## Constants
++#
+ VER="3.14.6"
+ 
++PETSC_DIR="${ISSM_DIR}/externalpackages/petsc/src" # DO NOT CHANGE THIS
++PREFIX="${ISSM_DIR}/externalpackages/petsc/install" # Set to location where external package should be installed
++
+ # Download source
+ $ISSM_DIR/scripts/DownloadExternalPackage.sh "https://ftp.mcs.anl.gov/pub/petsc/release-snapshots/petsc-lite-${VER}.tar.gz" "petsc-${VER}.tar.gz"
+ 
+@@ -18,19 +16,19 @@
+ tar -zxvf petsc-${VER}.tar.gz
+ 
+ # Cleanup
+-rm -rf install src
+-mkdir install src
++rm -rf ${PREFIX} ${PETSC_DIR}
++mkdir -p ${PETSC_DIR}
+ 
+-# Move source to 'src' directory
+-mv petsc-${VER}/* src/
++# Move source to $PETSC_DIR
++mv petsc-${VER}/* ${PETSC_DIR}
+ rm -rf petsc-${VER}
+ 
+ # Configure
+-cd src
++cd ${PETSC_DIR}
+ ./config/configure.py \
+ 	COPTFLAGS="-g -O2" CXXOPTFLAGS="-g -O2" FOPTFLAGS="-g -O2" \
+-	--prefix="${ISSM_DIR}/externalpackages/petsc/install" \
+-	--PETSC_DIR="${ISSM_DIR}/externalpackages/petsc/src" \
++	--prefix="${PREFIX}" \
++	--PETSC_DIR="${PETSC_DIR}" \
+ 	--with-debugging=0 \
+ 	--with-valgrind=0 \
+ 	--with-x=0 \
+Index: ../trunk-jpl/externalpackages/petsc/install-3.15-babylon.sh
+===================================================================
+--- ../trunk-jpl/externalpackages/petsc/install-3.15-babylon.sh	(revision 27201)
++++ ../trunk-jpl/externalpackages/petsc/install-3.15-babylon.sh	(revision 27202)
+@@ -10,7 +10,7 @@
+ PREFIX="${ISSM_DIR}/externalpackages/petsc/install" # Set to location where external package should be installed
+ 
+ # Download source
+-$ISSM_DIR/scripts/DownloadExternalPackage.sh "https://ftp.mcs.anl.gov/pub/petsc/release-snapshots/petsc-lite-${VER}.tar.gz" "petsc-${VER}.tar.gz"
++$ISSM_DIR/scripts/DownloadExternalPackage.sh "https://issm.ess.uci.edu/files/externalpackages/petsc-lite-${VER}.tar.gz" "petsc-${VER}.tar.gz"
+ 
+ # Unpack source
+ tar -zxvf petsc-${VER}.tar.gz
+@@ -17,7 +17,7 @@
+ 
+ # Cleanup
+ rm -rf ${PREFIX} ${PETSC_DIR}
+-mkdir ${PETSC_DIR}
++mkdir -p ${PETSC_DIR}
+ 
+ # Move source to $PETSC_DIR
+ mv petsc-${VER}/* ${PETSC_DIR}
+Index: ../trunk-jpl/externalpackages/petsc/install-3.15-pleiades.sh
+===================================================================
+--- ../trunk-jpl/externalpackages/petsc/install-3.15-pleiades.sh	(revision 27201)
++++ ../trunk-jpl/externalpackages/petsc/install-3.15-pleiades.sh	(revision 27202)
+@@ -13,22 +13,23 @@
+ $ISSM_DIR/scripts/DownloadExternalPackage.sh "https://issm.ess.uci.edu/files/externalpackages/petsc-lite-${VER}.tar.gz" "petsc-${VER}.tar.gz"
+ 
+ # Unpack source
+-tar -zxvf petsc-3.15.0.tar.gz
++tar -zxvf petsc-${VER}.tar.gz
+ 
+ # Cleanup
+-rm -rf install src
+-mkdir install src
++rm -rf ${PREFIX} ${PETSC_DIR}
++mkdir -p ${PETSC_DIR}
+ 
+ # Move source to $PETSC_DIR
+-mv petsc-3.15.0/* src/
+-rm -rf petsc-3.15.0
++mv petsc-${VER}/* ${PETSC_DIR}
++rm -rf petsc-${VER}
+ 
+-
+ # Configure
+ #
+-# NOTE: Based on /nasa/petsc/3.7.5/intel_mpt/lib/petsc/conf/petscvariables; look for CONFIGURE_OPTIONS
++# NOTE:
++# - Based on /nasa/petsc/3.7.5/intel_mpt/lib/petsc/conf/petscvariables (look 
++#	for CONFIGURE_OPTIONS)
+ #
+-cd src
++cd ${PETSC_DIR}
+ ./config/configure.py \
+ 	--prefix="${PREFIX}" \
+ 	--PETSC_DIR="${PETSC_DIR}" \
+Index: ../trunk-jpl/externalpackages/petsc/install-3.16-mac.sh
+===================================================================
+--- ../trunk-jpl/externalpackages/petsc/install-3.16-mac.sh	(nonexistent)
++++ ../trunk-jpl/externalpackages/petsc/install-3.16-mac.sh	(revision 27202)
+@@ -0,0 +1,60 @@
++#!/bin/bash
++set -eu
++
++
++## Constants
++#
++VER="3.16.6"
++
++PETSC_DIR="${ISSM_DIR}/externalpackages/petsc/src" # DO NOT CHANGE THIS
++PREFIX="${ISSM_DIR}/externalpackages/petsc/install" # Set to location where external package should be installed
++
++# Download source
++$ISSM_DIR/scripts/DownloadExternalPackage.sh "https://issm.ess.uci.edu/files/externalpackages/petsc-lite-${VER}.tar.gz" "petsc-${VER}.tar.gz"
++
++# Unpack source
++tar -zxvf petsc-${VER}.tar.gz
++
++# Cleanup
++rm -rf ${PREFIX} ${PETSC_DIR}
++mkdir -p ${PETSC_DIR}
++
++# Move source to $PETSC_DIR
++mv petsc-${VER}/* ${PETSC_DIR}
++rm -rf petsc-${VER}
++
++# Configure
++#
++# NOTE:
++# - Added -Wno-error=implicit-function-declaration to CFLAGS for Clang >= 12. 
++#	(may need to remove it for earlier versions not using the C99 standard).
++# - Added -fallow-argument-mismatch to FFLAGS in order to clear,
++#
++#		error: The Fortran compiler gfortran will not compile files that call 
++#		the same routine with arguments of different types.
++#
++#	for gfortran 10 or later (may need to remove it for earlier versions).
++#
++cd ${PETSC_DIR}
++./config/configure.py \
++	--prefix="${PREFIX}" \
++	--PETSC_DIR="${PETSC_DIR}" \
++	--CFLAGS="-Wno-error=implicit-function-declaration" \
++	--FFLAGS="-fallow-argument-mismatch" \
++	--with-debugging=0 \
++	--with-valgrind=0 \
++	--with-x=0 \
++	--with-ssl=0 \
++	--with-pic=1 \
++	--download-fblaslapack=1 \
++	--download-mpich=1 \
++	--download-metis=1 \
++	--download-parmetis=1 \
++	--download-scalapack=1 \
++	--download-mumps=1 \
++	--download-zlib=1 \
++	--download-hdf5=1
++
++# Compile and install
++make
++make install
+
+Property changes on: ../trunk-jpl/externalpackages/petsc/install-3.16-mac.sh
+___________________________________________________________________
+Added: svn:executable
+## -0,0 +1 ##
++*
+\ No newline at end of property
+Index: ../trunk-jpl/externalpackages/petsc/install-3.17-mac-m1-static.sh
+===================================================================
+--- ../trunk-jpl/externalpackages/petsc/install-3.17-mac-m1-static.sh	(revision 27201)
++++ ../trunk-jpl/externalpackages/petsc/install-3.17-mac-m1-static.sh	(revision 27202)
+@@ -1,21 +1,26 @@
+ #!/bin/bash
+ set -eu
+ 
++
+ ## Constants
+-VER="3.17.1"
++#
++VER="3.17.4"
+ 
++PETSC_DIR="${ISSM_DIR}/externalpackages/petsc/src" # DO NOT CHANGE THIS
++PREFIX="${ISSM_DIR}/externalpackages/petsc/install" # Set to location where external package should be installed
++
+ # Download source
+-$ISSM_DIR/scripts/DownloadExternalPackage.sh "https://ftp.mcs.anl.gov/pub/petsc/release-snapshots/petsc-lite-${VER}.tar.gz" "petsc-${VER}.tar.gz"
++$ISSM_DIR/scripts/DownloadExternalPackage.sh "https://issm.ess.uci.edu/files/externalpackages/petsc-lite-${VER}.tar.gz" "petsc-${VER}.tar.gz"
+ 
+ # Unpack source
+ tar -zxvf petsc-${VER}.tar.gz
+ 
+ # Cleanup
+-rm -rf install src
+-mkdir install src
++rm -rf ${PREFIX} ${PETSC_DIR}
++mkdir -p ${PETSC_DIR}
+ 
+-# Move source to 'src' directory
+-mv petsc-${VER}/* src/
++# Move source to $PETSC_DIR
++mv petsc-${VER}/* ${PETSC_DIR}
+ rm -rf petsc-${VER}
+ 
+ # Configure
+@@ -33,10 +38,10 @@
+ #		the same routine with arguments of different types.
+ #
+ #	for gfortran 10 or later (may need to remove it for earlier versions).
+-cd src
+-./configure \
+-	--prefix="${ISSM_DIR}/externalpackages/petsc/install" \
+-	--PETSC_DIR="${ISSM_DIR}/externalpackages/petsc/src" \
++cd ${PETSC_DIR}
++./config/configure.py \
++	--prefix="${PREFIX}" \
++	--PETSC_DIR="${PETSC_DIR}" \
+ 	--LDFLAGS="-Wl,-no_compact_unwind" \
+ 	--with-shared-libraries=0 \
+ 	--CFLAGS="-fPIC" \
+Index: ../trunk-jpl/jenkins/examples_tests.sh
+===================================================================
+--- ../trunk-jpl/jenkins/examples_tests.sh	(revision 27201)
++++ ../trunk-jpl/jenkins/examples_tests.sh	(revision 27202)
+@@ -39,12 +39,17 @@
+ 
+ for dir in ./* ; do
+ 	if [ -d "${dir}" ]; then
++		# # Temporary short circuit to check single example
++		# example="./AMR"
++		# if [ "${dir}" != "${example}" ]; then
++		# 	continue
++		# fi
++
+ 		# Some of the examples are incomplete (on purpose). As such, we will 
+ 		# have to populate the missing steps in order to make sure that 
+ 		# everything is working.
+ 
+ 		cd ${dir}
+-
+ 		if [ "${dir}" == "./AMR" ]; then
+ 			sed -i.bak -e '1 s|^.*$|try\n\n&|' $RUNME_FILE
+ 			RUN_EXAMPLE=1
+Index: ../trunk-jpl/m4/issm_options.m4
+===================================================================
+--- ../trunk-jpl/m4/issm_options.m4	(revision 27201)
++++ ../trunk-jpl/m4/issm_options.m4	(revision 27202)
+@@ -647,6 +647,7 @@
+ 		dnl
+ 		dnl TODO:
+ 		dnl - Should we also be checking if HAVE_BOOST before adding boost libs?
++		dnl - Clean up the following conditionals
+ 		dnl
+ 		case "${host_os}" in
+ 			*cygwin*)
+@@ -671,7 +672,7 @@
+ 					AC_DEFINE([DAKOTA_HAVE_MPI], [1], [enabling Dakota with MPI])
+ 				elif test "${DAKOTA_VERSION}" == "6.1" || test "${DAKOTA_VERSION}" == "6.2"; then
+ 					if test "${BOOST_VERSION_MAJOR}" == "1"; then
+-						DAKOTAFLAGS="-DHAVE_CONFIG_H -DHAVE_CONFIG_H -DDISABLE_DAKOTA_CONFIG_H -DBOOST_DISABLE_ASSERTS -DHAVE_UNISTD_H -DHAVE_SYSTEM -DHAVE_WORKING_FORK -DHAVE_WORKING_VFORK -DHAVE_SYS_WAIT_H -DHAVE_USLEEP -DDAKOTA_F90 -DDAKOTA_HAVE_MPI -DHAVE_PECOS -DHAVE_SURFPACK -DHAVE_ADAPTIVE_SAMPLING -DHAVE_ESM -DHAVE_QUESO -DHAVE_QUESO_GPMSA -DHAVE_CONMIN -DHAVE_DDACE -DHAVE_DREAM -DHAVE_FSUDACE -DDAKOTA_HOPS -DHAVE_NCSU -DHAVE_NL2SOL -DHAVE_NOMAD -DHAVE_OPTPP -DDAKOTA_OPTPP -DHAVE_PSUADE -DHAVE_AMPL"
++						DAKOTAFLAGS="-DHAVE_CONFIG_H -DDISABLE_DAKOTA_CONFIG_H -DBOOST_DISABLE_ASSERTS -DHAVE_UNISTD_H -DHAVE_SYSTEM -DHAVE_WORKING_FORK -DHAVE_WORKING_VFORK -DHAVE_SYS_WAIT_H -DHAVE_USLEEP -DDAKOTA_F90 -DDAKOTA_HAVE_MPI -DHAVE_PECOS -DHAVE_SURFPACK -DHAVE_ADAPTIVE_SAMPLING -DHAVE_ESM -DHAVE_QUESO -DHAVE_QUESO_GPMSA -DHAVE_CONMIN -DHAVE_DDACE -DHAVE_DREAM -DHAVE_FSUDACE -DDAKOTA_HOPS -DHAVE_NCSU -DHAVE_NL2SOL -DHAVE_NOMAD -DHAVE_OPTPP -DDAKOTA_OPTPP -DHAVE_PSUADE -DHAVE_AMPL"
+ 						DAKOTALIB="-L${DAKOTA_ROOT}/lib -ldakota_src -ldakota_src_fortran -lnidr -lteuchos -lpecos -lpecos_src -llhs -llhs_mods -llhs_mod -ldfftpack -lsparsegrid -lsurfpack -lsurfpack -lsurfpack_fortran -lqueso -lconmin -lddace -ldream -lfsudace -lhopspack -lncsuopt -lcport -lnomad -loptpp -lpsuade -lamplsolver"
+ 						DAKOTALIB+=" -L${BOOST_ROOT}/lib -lboost_filesystem -lboost_program_options -lboost_regex -lboost_serialization -lboost_system"
+ 						DAKOTALIB+=" ${BLASLAPACKLIB}"
+@@ -684,7 +685,7 @@
+ 							DAKOTAFLAGS="-DDISABLE_DAKOTA_CONFIG_H -DBOOST_MULTI_INDEX_DISABLE_SERIALIZATION -DDAKOTA_PLUGIN -DBOOST_DISABLE_ASSERTS -DDAKOTA_HAVE_BOOST_FS -DHAVE_UNISTD_H -DHAVE_SYSTEM -DHAVE_WORKING_FORK -DHAVE_WORKING_VFORK -DHAVE_SYS_WAIT_H -DHAVE_USLEEP -DDAKOTA_F90 -DDAKOTA_HAVE_MPI -DHAVE_PECOS -DHAVE_SURFPACK -DDAKOTA_UTILIB -DHAVE_ADAPTIVE_SAMPLING -DHAVE_CONMIN -DDAKOTA_DDACE -DHAVE_FSUDACE -DDAKOTA_HOPS -DHAVE_NCSU -DHAVE_NL2SOL -DHAVE_OPTPP -DDAKOTA_OPTPP -DHAVE_PSUADE -DHAVE_AMPL"
+ 							DAKOTALIB="-L${DAKOTA_ROOT}/lib -ldakota_src -ldream -lfsudace -lddace -lnomad -lpecos_src -llhs -llhs_mods -loptpp -lsurfpack -lconmin -ldakota_src_fortran -llhs_mod -lncsuopt -lsurfpack_fortran -lteuchos -lamplsolver -lcport -ldfftpack -lfsudace -lhopspack -lnidr -lpecos -lpsuade -lsparsegrid -L$BOOST_ROOT/lib -lboost_serialization -lboost_signals -lboost_regex -lboost_filesystem -lboost_system ${BLASLAPACKLIB}"
+ 						elif test "${BOOST_VERSION_MINOR}" == "72"; then
+-							DAKOTAFLAGS="-DHAVE_CONFIG_H -DHAVE_CONFIG_H -DDISABLE_DAKOTA_CONFIG_H -DBOOST_DISABLE_ASSERTS -DHAVE_UNISTD_H -DHAVE_SYSTEM -DHAVE_WORKING_FORK -DHAVE_WORKING_VFORK -DHAVE_SYS_WAIT_H -DHAVE_USLEEP -DDAKOTA_F90 -DDAKOTA_HAVE_MPI -DHAVE_PECOS -DHAVE_SURFPACK -DHAVE_ADAPTIVE_SAMPLING -DHAVE_ESM -DHAVE_CONMIN -DHAVE_DDACE -DHAVE_DREAM -DHAVE_FSUDACE -DDAKOTA_HOPS -DHAVE_NCSU -DHAVE_NL2SOL -DHAVE_NOMAD -DHAVE_OPTPP -DDAKOTA_OPTPP -DHAVE_PSUADE -DHAVE_AMPL"
++							DAKOTAFLAGS="-DHAVE_CONFIG_H -DDISABLE_DAKOTA_CONFIG_H -DBOOST_DISABLE_ASSERTS -DHAVE_UNISTD_H -DHAVE_SYSTEM -DHAVE_WORKING_FORK -DHAVE_WORKING_VFORK -DHAVE_SYS_WAIT_H -DHAVE_USLEEP -DDAKOTA_F90 -DDAKOTA_HAVE_MPI -DHAVE_PECOS -DHAVE_SURFPACK -DHAVE_ADAPTIVE_SAMPLING -DHAVE_ESM -DHAVE_CONMIN -DHAVE_DDACE -DHAVE_DREAM -DHAVE_FSUDACE -DDAKOTA_HOPS -DHAVE_NCSU -DHAVE_NL2SOL -DHAVE_NOMAD -DHAVE_OPTPP -DDAKOTA_OPTPP -DHAVE_PSUADE -DHAVE_AMPL"
+ 							DAKOTALIB="-L${DAKOTA_ROOT}/lib -ldakota_src -ldakota_src_fortran -lnidr -lteuchosremainder -lteuchosnumerics -lteuchoscomm -lteuchosparameterlist -lteuchosparser -lteuchoscore -lpecos_util -lpecos_src -llhs -llhs_mods -llhs_mod -ldfftpack -lsparsegrid -lsurfpack -lsurfpack -lsurfpack_fortran -lapproxnn -lconmin -lddace -ldream -lfsudace -lhopspack -lncsuopt -lcport -lnomad -loptpp -lpsuade -lamplsolver -L${BOOST_ROOT}/lib -lboost_filesystem -lboost_program_options -lboost_regex -lboost_serialization -lboost_system ${BLASLAPACKLIB}"
+ 						fi
+ 					fi
+@@ -704,7 +705,7 @@
+ 					AC_DEFINE([DAKOTA_HAVE_MPI], [1], [enabling Dakota with MPI])
+ 				elif test "${DAKOTA_VERSION}" == "6.1" || test "${DAKOTA_VERSION}" == "6.2"; then
+ 					if test "${BOOST_VERSION_MAJOR}" == "1"; then
+-						DAKOTAFLAGS="-DHAVE_CONFIG_H -DHAVE_CONFIG_H -DDISABLE_DAKOTA_CONFIG_H -DBOOST_DISABLE_ASSERTS -DHAVE_UNISTD_H -DHAVE_SYSTEM -DHAVE_WORKING_FORK -DHAVE_WORKING_VFORK -DHAVE_SYS_WAIT_H -DHAVE_USLEEP -DDAKOTA_F90 -DDAKOTA_HAVE_MPI -DHAVE_PECOS -DHAVE_SURFPACK -DHAVE_ADAPTIVE_SAMPLING -DHAVE_ESM -DHAVE_QUESO -DHAVE_QUESO_GPMSA -DHAVE_CONMIN -DHAVE_DDACE -DHAVE_DREAM -DHAVE_FSUDACE -DDAKOTA_HOPS -DHAVE_NCSU -DHAVE_NL2SOL -DHAVE_NOMAD -DHAVE_OPTPP -DDAKOTA_OPTPP -DHAVE_PSUADE -DHAVE_AMPL"
++						DAKOTAFLAGS="-DHAVE_CONFIG_H -DDISABLE_DAKOTA_CONFIG_H -DBOOST_DISABLE_ASSERTS -DHAVE_UNISTD_H -DHAVE_SYSTEM -DHAVE_WORKING_FORK -DHAVE_WORKING_VFORK -DHAVE_SYS_WAIT_H -DHAVE_USLEEP -DDAKOTA_F90 -DDAKOTA_HAVE_MPI -DHAVE_PECOS -DHAVE_SURFPACK -DHAVE_ADAPTIVE_SAMPLING -DHAVE_ESM -DHAVE_QUESO -DHAVE_QUESO_GPMSA -DHAVE_CONMIN -DHAVE_DDACE -DHAVE_DREAM -DHAVE_FSUDACE -DDAKOTA_HOPS -DHAVE_NCSU -DHAVE_NL2SOL -DHAVE_NOMAD -DHAVE_OPTPP -DDAKOTA_OPTPP -DHAVE_PSUADE -DHAVE_AMPL"
+ 						DAKOTALIB="-L${DAKOTA_ROOT}/lib -ldakota_src -ldakota_src_fortran -lnidr -lteuchos -lpecos -lpecos_src -llhs -llhs_mods -llhs_mod -ldfftpack -lsparsegrid -lsurfpack -lsurfpack -lsurfpack_fortran -lqueso -lconmin -lddace -ldream -lfsudace -lhopspack -lncsuopt -lcport -lnomad -loptpp -lpsuade -lamplsolver"
+ 						DAKOTALIB+=" -L${BOOST_ROOT}/lib -lboost_filesystem -lboost_program_options -lboost_regex -lboost_serialization -lboost_system"
+ 						DAKOTALIB+=" ${BLASLAPACKLIB}"
+Index: ../trunk-jpl/externalpackages/petsc/install-3.16-pleiades.sh
+===================================================================
+--- ../trunk-jpl/externalpackages/petsc/install-3.16-pleiades.sh	(revision 27201)
++++ ../trunk-jpl/externalpackages/petsc/install-3.16-pleiades.sh	(revision 27202)
+@@ -16,19 +16,21 @@
+ tar -zxvf petsc-${VER}.tar.gz
+ 
+ # Cleanup
+-rm -rf install src
+-mkdir install src
++rm -rf ${PREFIX} ${PETSC_DIR}
++mkdir -p ${PETSC_DIR}
+ 
+ # Move source to $PETSC_DIR
+-mv petsc-${VER}/* src/
++mv petsc-${VER}/* ${PETSC_DIR}
+ rm -rf petsc-${VER}
+ 
+ 
+ # Configure
+ #
+-# NOTE: Based on /nasa/petsc/3.7.5/intel_mpt/lib/petsc/conf/petscvariables; look for CONFIGURE_OPTIONS
++# NOTE:
++# - Based on /nasa/petsc/3.7.5/intel_mpt/lib/petsc/conf/petscvariables (look 
++#	for CONFIGURE_OPTIONS)
+ #
+-cd src
++cd ${PETSC_DIR}
+ ./config/configure.py \
+ 	--prefix="${PREFIX}" \
+ 	--PETSC_DIR="${PETSC_DIR}" \
+Index: ../trunk-jpl/externalpackages/petsc/install-3.17-mac-m1.sh
+===================================================================
+--- ../trunk-jpl/externalpackages/petsc/install-3.17-mac-m1.sh	(revision 27201)
++++ ../trunk-jpl/externalpackages/petsc/install-3.17-mac-m1.sh	(revision 27202)
+@@ -3,26 +3,31 @@
+ 
+ 
+ ## Constants
+-VER="3.17.0"
++#
++VER="3.17.4"
+ 
++PETSC_DIR="${ISSM_DIR}/externalpackages/petsc/src" # DO NOT CHANGE THIS
++PREFIX="${ISSM_DIR}/externalpackages/petsc/install" # Set to location where external package should be installed
++
+ # Download source
+-$ISSM_DIR/scripts/DownloadExternalPackage.sh "https://ftp.mcs.anl.gov/pub/petsc/release-snapshots/petsc-lite-${VER}.tar.gz" "petsc-${VER}.tar.gz"
++$ISSM_DIR/scripts/DownloadExternalPackage.sh "https://issm.ess.uci.edu/files/externalpackages/petsc-lite-${VER}.tar.gz" "petsc-${VER}.tar.gz"
+ 
+ # Unpack source
+ tar -zxvf petsc-${VER}.tar.gz
+ 
+ # Cleanup
+-rm -rf install src
+-mkdir install src
++rm -rf ${PREFIX} ${PETSC_DIR}
++mkdir -p ${PETSC_DIR}
+ 
+-# Move source to 'src' directory
+-mv petsc-${VER}/* src/
++# Move source to $PETSC_DIR
++mv petsc-${VER}/* ${PETSC_DIR}
+ rm -rf petsc-${VER}
+ 
+-cd src
+-./configure \
+-	--prefix="${ISSM_DIR}/externalpackages/petsc/install" \
+-	--PETSC_DIR="${ISSM_DIR}/externalpackages/petsc/src" \
++# Configure
++cd ${PETSC_DIR}
++./config/configure.py \
++	--prefix="${PREFIX}" \
++	--PETSC_DIR="${PETSC_DIR}" \
+ 	--LDFLAGS="-Wl,-no_compact_unwind" \
+ 	--with-debugging=0 \
+ 	--with-valgrind=0 \
+Index: ../trunk-jpl/jenkins/jenkins.sh
+===================================================================
+--- ../trunk-jpl/jenkins/jenkins.sh	(revision 27201)
++++ ../trunk-jpl/jenkins/jenkins.sh	(revision 27202)
+@@ -177,30 +177,42 @@
+ 	if [ "${ISSM_EXTERNALPACKAGES}" == "yes" ]; then # NOTE: Removed check on if 'install' directory exist
+ 		cd ${ISSM_DIR}/externalpackages/$PACKAGENAME
+ 
+-		echo "======================================================";
+-		echo "       Installing $PACKAGENAME                        ";
+-		echo "======================================================";
++		# Do not install package if it already exists
++		#
++		# NOTE: Assumes PREFIX is defined in package installation script
++		#
++		PREFIX=$(egrep "PREFIX=" ./$PACKAGEINST | cut -d'"' -f 2 | envsubst)
++		if [ ! -d "${PREFIX}" ]; then
++			echo "======================================================";
++			echo "       Installing $PACKAGENAME                        ";
++			echo "======================================================";
+ 
+-		./$PACKAGEINST $NUMCPUS_INSTALL &> compil.log
+-		if [ $? -ne 0 ] && [ "${PACKAGENAME}" != "boost" ]; then
+-			cat compil.log
++			./$PACKAGEINST $NUMCPUS_INSTALL &> compil.log
++			if [ $? -ne 0 ] && [ "${PACKAGENAME}" != "boost" ]; then
++				cat compil.log
++				echo "======================================================";
++				echo "    ERROR: installation of $PACKAGENAME failed        ";
++				echo "======================================================";
++				echo "<testcase classname=\"externalpackages\" name=\"$PACKAGENAME\">" >> $EXTERNAL_TEST_FILE
++				echo '<failure message="failure">External packages did not install right. Check it.' >> $EXTERNAL_TEST_FILE
++				cat compil.log >> $EXTERNAL_TEST_FILE
++				echo '</failure>' >> $EXTERNAL_TEST_FILE
++				echo '</testcase>' >> $EXTERNAL_TEST_FILE
++				EXTERNALPACKAGES_FAILED=1;
++			else
++				echo "<testcase classname=\"externalpackages\" name=\"$PACKAGENAME\"/>" >> $EXTERNAL_TEST_FILE
++			fi
++			source ${ISSM_DIR}/etc/environment.sh
++
++			#If external package is rebuilt, we also need to recompile
++			ISSM_RECONFIGURE="yes"
++			ISSM_COMPILATION="yes"
++		else
+ 			echo "======================================================";
+-			echo "    ERROR: installation of $PACKAGENAME failed        ";
++			echo "       Skipping $PACKAGENAME                          ";
+ 			echo "======================================================";
+-			echo "<testcase classname=\"externalpackages\" name=\"$PACKAGENAME\">" >> $EXTERNAL_TEST_FILE
+-			echo '<failure message="failure">External packages did not install right. Check it.' >> $EXTERNAL_TEST_FILE
+-			cat compil.log >> $EXTERNAL_TEST_FILE
+-			echo '</failure>' >> $EXTERNAL_TEST_FILE
+-			echo '</testcase>' >> $EXTERNAL_TEST_FILE
+-			EXTERNALPACKAGES_FAILED=1;
+-		else
+ 			echo "<testcase classname=\"externalpackages\" name=\"$PACKAGENAME\"/>" >> $EXTERNAL_TEST_FILE
+ 		fi
+-		source ${ISSM_DIR}/etc/environment.sh
+-
+-		#If external package is rebuilt, we also need to recompile
+-		ISSM_RECONFIGURE="yes"
+-		ISSM_COMPILATION="yes"
+ 	else
+ 		echo "======================================================";
+ 		echo "       Skipping $PACKAGENAME                          ";
+Index: ../trunk-jpl/src/c/Makefile.am
+===================================================================
+--- ../trunk-jpl/src/c/Makefile.am	(revision 27201)
++++ ../trunk-jpl/src/c/Makefile.am	(revision 27202)
+@@ -828,7 +828,7 @@
+ endif
+ 
+ # External packages
+-LDADD += $(CHACOLIB) $(DAKOTALIB) $(PETSCLIB) $(MUMPSLIB) $(SCALAPACKLIB) $(BLASLAPACKLIB) $(PARMETISLIB) $(METISLIB) $(NEOPZLIB) $(TAOLIB) $(M1QN3LIB) $(SEMICLIB) $(PLAPACKLIB) $(MPLAPACKLIB) $(SUPERLULIB) $(SPOOLESLIB) $(BLACSLIB) $(HDF5LIB) $(HYPRELIB) $(SPAILIB) $(PROMETHEUSLIB) $(PASTIXLIB) $(MLLIB) $(SCOTCHLIB) $(MKLLIB) $(MPILIB) $(MATHLIB) $(GRAPHICSLIB) $(MULTITHREADINGLIB) $(GSLLIB) $(AMPILIB) $(ADJOINTMPILIB) $(ADOLCLIB) $(MPILIB) $(METEOIOLIB) $(SNOWPACKLIB) $(PROJLIB) $(ESMFLIB) $(OSLIBS)
++LDADD += $(SEMICLIB) $(M1QN3LIB) $(CHACOLIB) $(PETSCLIB) $(MUMPSLIB) $(SCALAPACKLIB) $(BLASLAPACKLIB) $(PARMETISLIB) $(METISLIB) $(NEOPZLIB) $(TAOLIB) $(PLAPACKLIB) $(MPLAPACKLIB) $(SUPERLULIB) $(SPOOLESLIB) $(BLACSLIB) $(HDF5LIB) $(HYPRELIB) $(SPAILIB) $(PROMETHEUSLIB) $(PASTIXLIB) $(MLLIB) $(SCOTCHLIB) $(MKLLIB) $(MATHLIB) $(GRAPHICSLIB) $(MULTITHREADINGLIB) $(GSLLIB) $(AMPILIB) $(ADJOINTMPILIB) $(ADOLCLIB) $(MPILIB) $(METEOIOLIB) $(SNOWPACKLIB) $(PROJLIB) $(ESMFLIB) $(OSLIBS)
+ 
+ if FORTRAN
+ LDADD += $(FLIBS) $(FORTRANLIB)
+@@ -839,6 +839,7 @@
+ 
+ issm_slc_SOURCES = main/issm_slc.cpp
+ issm_slc_CXXFLAGS= $(CXXFLAGS) $(CXXOPTFLAGS)
++issm_slc_LDADD = $(DAKOTALIB) $(LDADD)
+ 
+ if OCEAN
+ bin_PROGRAMS += issm_ocean
+@@ -856,7 +857,7 @@
+ bin_PROGRAMS += issm_dakota
+ issm_dakota_SOURCES = main/issm_dakota.cpp
+ issm_dakota_CXXFLAGS= $(CXXFLAGS) $(CXXOPTFLAGS) $(COPTFLAGS)
+-issm_dakota_LDADD= $(LDADD)
++issm_dakota_LDADD = $(DAKOTALIB) $(LDADD)
+ bin_PROGRAMS += issm_post
+ issm_post_SOURCES = main/issm_post.cpp
+ issm_post_CXXFLAGS= $(CXXFLAGS) $(CXXOPTFLAGS)
+Index: ../trunk-jpl/etc/environment.sh
+===================================================================
+--- ../trunk-jpl/etc/environment.sh	(revision 27201)
++++ ../trunk-jpl/etc/environment.sh	(revision 27202)
+@@ -354,6 +354,13 @@
+ 	fi
+ fi
+ 
++QD_ROOT="${ISSM_EXT_DIR}/qd/install"
++if [ -d "${QD_ROOT}" ]; then
++	export QD_ROOT # Used in installation of MPLAPACK
++	library_path_prepend "${QD_ROOT}/lib"
++	ld_library_path_prepend "${QD_ROOT}/lib"
++fi
++
+ SCALAPACK_ROOT="${ISSM_EXT_DIR}/scalapack/install"
+ if [ -d "${SCALAPACK_ROOT}" ]; then
+ 	export SCALAPACK_ROOT # Used in installation of MUMPS, PETSc
+@@ -442,10 +449,21 @@
+ TAO_ROOT="${ISSM_EXT_DIR}/tao/install"
+ ld_library_path_append "${TAO_ROOT}/lib"
+ 
++BOOST_ROOT="${ISSM_EXT_DIR}/boost/install"
++if [ -d "${BOOST_ROOT}" ]; then
++	export BOOST_ROOT # Used in installation of Dakota
++	export BOOST_DIR=${BOOST_ROOT}
++	export BOOSTROOT=${BOOST_ROOT}
++	path_append "${BOOST_ROOT}/bin"
++	library_path_prepend "${BOOST_ROOT}/lib"
++	ld_library_path_prepend "${BOOST_ROOT}/lib"
++	dyld_library_path_prepend "${BOOST_ROOT}/lib"
++fi
++
+ DAKOTA_ROOT="${ISSM_EXT_DIR}/dakota/install"
+ if [ -d "${DAKOTA_ROOT}" ]; then
+ 	path_append "${DAKOTA_ROOT}/bin"
+-	ld_library_path_append "${DAKOTA_ROOT}/lib"
++	ld_library_path_prepend "${DAKOTA_ROOT}/lib"
+ 	dyld_library_path_prepend "${DAKOTA_ROOT}/lib"
+ fi
+ 
+@@ -461,17 +479,6 @@
+ 	path_append "${MERCURIAL_ROOT}"
+ fi
+ 
+-BOOST_ROOT="${ISSM_EXT_DIR}/boost/install"
+-if [ -d "${BOOST_ROOT}" ]; then
+-	export BOOST_ROOT # Used in installation of Dakota
+-	export BOOST_DIR=${BOOST_ROOT}
+-	export BOOSTROOT=${BOOST_ROOT}
+-	library_path_append "${BOOST_ROOT}/lib"
+-	ld_library_path_append "${BOOST_ROOT}/lib"
+-	dyld_library_path_append "${BOOST_ROOT}/lib"
+-	path_append "${BOOST_ROOT}/bin"
+-fi
+-
+ GSL_ROOT="${ISSM_EXT_DIR}/gsl/install"
+ if [ -d "${GSL_ROOT}" ]; then
+ 	export GSL_HOME="${GSL_ROOT}" # Used in installation of Dakota
+Index: ../trunk-jpl/externalpackages/autotools/install-linux.sh
+===================================================================
+--- ../trunk-jpl/externalpackages/autotools/install-linux.sh	(revision 27201)
++++ ../trunk-jpl/externalpackages/autotools/install-linux.sh	(revision 27202)
+@@ -59,6 +59,7 @@
+ 	make -j $1 install
+ fi
+ cd ..
++
+ # Install Automake
+ echo " === INSTALLING AUTOMAKE ==="
+ rm -rf src
+Index: ../trunk-jpl/externalpackages/boost/install-1.7-mac.sh
+===================================================================
+--- ../trunk-jpl/externalpackages/boost/install-1.7-mac.sh	(revision 27201)
++++ ../trunk-jpl/externalpackages/boost/install-1.7-mac.sh	(revision 27202)
+@@ -53,3 +53,11 @@
+ for name in *.dylib; do
+ 	install_name_tool -id ${PREFIX}/lib/${name} ${name} 2>/dev/null
+ done
++
++if [ "${VER}" == "1_79_0" ]; then
++	## Patch install names for certain libraries
++	#
++	# TODO: Figure out how to reconfigure source to apply these install names at compile time
++	#
++	install_name_tool -change @rpath/libboost_atomic.dylib ${PREFIX}/lib/libboost_atomic.dylib libboost_filesystem.dylib
++fi
+Index: ../trunk-jpl/externalpackages/chaco/install.sh
+===================================================================
+--- ../trunk-jpl/externalpackages/chaco/install.sh	(revision 27201)
++++ ../trunk-jpl/externalpackages/chaco/install.sh	(revision 27202)
+@@ -8,6 +8,10 @@
+ 
+ PREFIX="${ISSM_DIR}/externalpackages/chaco/install" # Set to location where external package should be installed
+ 
++## Environment
++#
++export CFLAGS="-Wno-error=implicit-function-declaration"
++
+ # Cleanup
+ rm -rf ${PREFIX} src
+ mkdir -p ${PREFIX} src
+Index: ../trunk-jpl/externalpackages/dakota/install-6.2-linux-static.sh
+===================================================================
+--- ../trunk-jpl/externalpackages/dakota/install-6.2-linux-static.sh	(revision 27201)
++++ ../trunk-jpl/externalpackages/dakota/install-6.2-linux-static.sh	(revision 27202)
+@@ -52,6 +52,9 @@
+ cp configs/${VER}/linux/cmake/BuildDakotaCustom.cmake ${DAK_SRC}/cmake
+ cp configs/${VER}/linux/cmake/DakotaDev.cmake ${DAK_SRC}/cmake
+ 
++# Disable requirement of Python 2 for TriBITS
++sed -i'' -e 's|SET(PythonInterp_FIND_VERSION|#SET(PythonInterp_FIND_VERSION|' ${DAK_SRC}/packages/teuchos/cmake/tribits/package_arch/TribitsFindPythonInterp.cmake
++
+ # Configure
+ cd ${DAK_BUILD}
+ cmake \
+Index: ../trunk-jpl/externalpackages/dakota/install-6.2-linux.sh
+===================================================================
+--- ../trunk-jpl/externalpackages/dakota/install-6.2-linux.sh	(revision 27201)
++++ ../trunk-jpl/externalpackages/dakota/install-6.2-linux.sh	(revision 27202)
+@@ -43,6 +43,9 @@
+ cp configs/${VER}/linux/cmake/BuildDakotaCustom.cmake ${DAK_SRC}/cmake
+ cp configs/${VER}/linux/cmake/DakotaDev.cmake ${DAK_SRC}/cmake
+ 
++# Disable requirement of Python 2 for TriBITS
++sed -i'' -e 's|SET(PythonInterp_FIND_VERSION|#SET(PythonInterp_FIND_VERSION|' ${DAK_SRC}/packages/teuchos/cmake/tribits/package_arch/TribitsFindPythonInterp.cmake
++
+ # Configure
+ cd ${DAK_BUILD}
+ cmake \
+Index: ../trunk-jpl/externalpackages/dakota/install-6.2-mac-static.sh
+===================================================================
+--- ../trunk-jpl/externalpackages/dakota/install-6.2-mac-static.sh	(revision 27201)
++++ ../trunk-jpl/externalpackages/dakota/install-6.2-mac-static.sh	(revision 27202)
+@@ -70,6 +70,9 @@
+ # cp configs/${VER}/mac/static/packages/nidr/nidr.c ${DAK_SRC}/packages/nidr
+ # cp configs/${VER}/mac/static/packages/nidr/nidr-scanner.c ${DAK_SRC}/packages/nidr
+ 
++# Disable requirement of Python 2 for TriBITS
++sed -i'' -e 's|SET(PythonInterp_FIND_VERSION|#SET(PythonInterp_FIND_VERSION|' ${DAK_SRC}/packages/teuchos/cmake/tribits/package_arch/TribitsFindPythonInterp.cmake
++
+ # Configure
+ cd ${DAK_BUILD}
+ cmake \
+Index: ../trunk-jpl/externalpackages/gmsh/install-4-linux-static.sh
+===================================================================
+--- ../trunk-jpl/externalpackages/gmsh/install-4-linux-static.sh	(revision 27201)
++++ ../trunk-jpl/externalpackages/gmsh/install-4-linux-static.sh	(revision 27202)
+@@ -4,16 +4,20 @@
+ 
+ # TODO:
+ # - Add support for,
+-#	- BLAS_LAPACK
+ #	- MUMPS
+-#	- PETSC
+-# (see configs/4/static/CMakeLists.txt)
++#	- PETSc
++# 
++# See Also:
++# - configs/4/static/CMakeLists.txt
++# - http://gmsh.info/doc/texinfo/gmsh.html#Compiling-the-source-code
+ #
+ 
+ ## Constants
+ #
+-VER="4.5.6"
++VER="4.10.5"
+ 
++PREFIX="${ISSM_DIR}/externalpackages/gmsh/install" # Set to location where external package should be installed
++
+ # Find libgfortran and libgcc so we do not have to hardcode them
+ #
+ # TODO:
+@@ -23,8 +27,6 @@
+ LIBGFORTRAN_ROOT=${LIBGFORTRAN%/*}
+ LIBGCC=$(find ${LIBGFORTRAN_ROOT} -name libgcc* | egrep -n libgcc.a | sed "s/[0-9]*://g" | head -1)
+ 
+-PREFIX="${ISSM_DIR}/externalpackages/gmsh/install" # Set to location where external package should be installed
+-
+ # Cleanup
+ rm -rf ${PREFIX} src
+ mkdir -p ${PREFIX} src
+@@ -39,9 +41,6 @@
+ mv gmsh-${VER}-source/* src
+ rm -rf gmsh-${VER}-source
+ 
+-# Copy customized source and config files to 'src' directory
+-cp configs/${VER}/static/CMakeLists.txt src
+-
+ # Configure
+ #
+ # NOTE:
+@@ -58,12 +57,14 @@
+ cmake \
+ 	-DCMAKE_INSTALL_PREFIX="${PREFIX}" \
+ 	-DENABLE_BUILD_LIB=1 \
++	-DBLAS_LAPACK_LIBRARIES="-L${LAPACK_ROOT}/lib -lflapack -L${BLAS_ROOT}/lib -lfblas ${LIBGFORTRAN_ROOT}/libgfortran.a ${LIBGFORTRAN_ROOT}/libquadmath.a ${LIBGCC}" \
++	-DENABLE_BLAS_LAPACK=1 \
++	-DENABLE_EIGEN=0 \
+ 	-DENABLE_FLTK=0 \
+ 	-DENABLE_MPEG_ENCODE=0 \
+ 	-DENABLE_MPI=1 \
+ 	-DENABLE_OCC=0 \
+ 	-DENABLE_TOUCHBAR=0 \
+-	-DBLAS_LAPACK_LIBRARIES="-L${LAPACK_ROOT}/lib -lflapack -L${BLAS_ROOT}/lib -lfblas ${LIBGFORTRAN_ROOT}/libgfortran.a ${LIBGFORTRAN_ROOT}/libquadmath.a ${LIBGCC}" \
+ 	-DMETIS_ROOT="${METIS_ROOT}"
+ 
+ # Compile and install
+Index: ../trunk-jpl/externalpackages/gmsh/install-4-linux.sh
+===================================================================
+--- ../trunk-jpl/externalpackages/gmsh/install-4-linux.sh	(revision 27201)
++++ ../trunk-jpl/externalpackages/gmsh/install-4-linux.sh	(revision 27202)
+@@ -4,15 +4,17 @@
+ 
+ # TODO:
+ # - Add support for,
+-#	- BLAS_LAPACK
+ #	- MUMPS
+-#	- PETSC
+-# (see configs/4/static/CMakeLists.txt)
++#	- PETSc
++# 
++# See Also:
++# - configs/4/static/CMakeLists.txt
++# - http://gmsh.info/doc/texinfo/gmsh.html#Compiling-the-source-code
+ #
+ 
+ ## Constants
+ #
+-VER="4.5.6"
++VER="4.10.5"
+ 
+ PREFIX="${ISSM_DIR}/externalpackages/gmsh/install" # Set to location where external package should be installed
+ 
+@@ -55,12 +57,14 @@
+ 	-DCMAKE_INSTALL_PREFIX="${PREFIX}" \
+ 	-DENABLE_BUILD_DYNAMIC=1 \
+ 	-DENABLE_BUILD_SHARED=1 \
++	-DBLAS_LAPACK_LIBRARIES="-L${LAPACK_ROOT}/lib -lflapack -L${BLAS_ROOT}/lib -lfblas -L${LIBGFORTRAN_ROOT} -lgfortran" \
++	-DENABLE_BLAS_LAPACK=1 \
++	-DENABLE_EIGEN=0 \
+ 	-DENABLE_FLTK=0 \
+ 	-DENABLE_MPEG_ENCODE=0 \
+ 	-DENABLE_MPI=1 \
+ 	-DENABLE_OCC=0 \
+ 	-DENABLE_TOUCHBAR=0 \
+-	-DBLAS_LAPACK_LIBRARIES="-L${LAPACK_ROOT}/lib -lflapack -L${BLAS_ROOT}/lib -lfblas -L${LIBGFORTRAN_ROOT} -lgfortran" \
+ 	-DMETIS_ROOT="${METIS_ROOT}"
+ 
+ # Compile and install
+Index: ../trunk-jpl/externalpackages/gmsh/install-4-mac-static.sh
+===================================================================
+--- ../trunk-jpl/externalpackages/gmsh/install-4-mac-static.sh	(revision 27201)
++++ ../trunk-jpl/externalpackages/gmsh/install-4-mac-static.sh	(revision 27202)
+@@ -4,16 +4,21 @@
+ 
+ # TODO:
+ # - Add support for,
+-#	- BLAS_LAPACK
+ #	- MUMPS
+-#	- PETSC
+-# (see configs/4/static/CMakeLists.txt)
++#	- PETSc
++# 
++# See Also:
++# - configs/4/static/CMakeLists.txt
++# - http://gmsh.info/doc/texinfo/gmsh.html#Compiling-the-source-code
+ #
+ 
+ ## Constants
+ #
+-VER="4.5.6"
++VER="4.10.5"
+ 
++PREFIX="${ISSM_DIR}/externalpackages/gmsh/install" # Set to location where external package should be installed
++
++
+ # Find libgfortran and libgcc so we do not have to hardcode them
+ #
+ # Should retrieve a copy of gfortran that is compiled from source before returning one that is installed via package manager
+@@ -27,8 +32,6 @@
+ LIBGFORTRAN_ROOT=${LIBGFORTRAN%/*}
+ LIBGCC=$(mdfind -onlyin ${LIBGFORTRAN_ROOT} -name libgcc | egrep -n libgcc.a | egrep -v i386 | sed "s/[0-9]*://g" | head -1)
+ 
+-PREFIX="${ISSM_DIR}/externalpackages/gmsh/install" # Set to location where external package should be installed
+-
+ # Cleanup
+ rm -rf ${PREFIX} src
+ mkdir -p ${PREFIX} src
+@@ -62,12 +65,14 @@
+ cmake \
+ 	-DCMAKE_INSTALL_PREFIX="${PREFIX}" \
+ 	-DENABLE_BUILD_LIB=1 \
++	-DBLAS_LAPACK_LIBRARIES="-L${LAPACK_ROOT}/lib -lflapack -L${BLAS_ROOT}/lib -lfblas ${LIBGFORTRAN_ROOT}/libgfortran.a ${LIBGFORTRAN_ROOT}/libquadmath.a ${LIBGCC}" \
++	-DENABLE_BLAS_LAPACK=1 \
++	-DENABLE_EIGEN=0 \
+ 	-DENABLE_FLTK=0 \
+ 	-DENABLE_MPEG_ENCODE=0 \
+ 	-DENABLE_MPI=1 \
+ 	-DENABLE_OCC=0 \
+ 	-DENABLE_TOUCHBAR=0 \
+-	-DBLAS_LAPACK_LIBRARIES="-L${LAPACK_ROOT}/lib -lflapack -L${BLAS_ROOT}/lib -lfblas ${LIBGFORTRAN_ROOT}/libgfortran.a ${LIBGFORTRAN_ROOT}/libquadmath.a ${LIBGCC}" \
+ 	-DMETIS_ROOT="${METIS_ROOT}"
+ 
+ # Compile and install
+Index: ../trunk-jpl/externalpackages/gmsh/install-4-mac.sh
+===================================================================
+--- ../trunk-jpl/externalpackages/gmsh/install-4-mac.sh	(revision 27201)
++++ ../trunk-jpl/externalpackages/gmsh/install-4-mac.sh	(revision 27202)
+@@ -4,15 +4,17 @@
+ 
+ # TODO:
+ # - Add support for,
+-#	- BLAS_LAPACK
+ #	- MUMPS
+-#	- PETSC
+-# (see configs/4/static/CMakeLists.txt)
++#	- PETSc
++# 
++# See Also:
++# - configs/4/static/CMakeLists.txt
++# - http://gmsh.info/doc/texinfo/gmsh.html#Compiling-the-source-code
+ #
+ 
+ ## Constants
+ #
+-VER="4.5.6"
++VER="4.10.5"
+ 
+ PREFIX="${ISSM_DIR}/externalpackages/gmsh/install" # Set to location where external package should be installed
+ 
+@@ -58,12 +60,14 @@
+ 	-DCMAKE_INSTALL_PREFIX="${PREFIX}" \
+ 	-DENABLE_BUILD_DYNAMIC=1 \
+ 	-DENABLE_BUILD_SHARED=1 \
++	-DBLAS_LAPACK_LIBRARIES="-L${LAPACK_ROOT}/lib -lflapack -L${BLAS_ROOT}/lib -lfblas -L${LIBGFORTRAN_ROOT} -lgfortran" \
++	-DENABLE_BLAS_LAPACK=1 \
++	-DENABLE_EIGEN=0 \
+ 	-DENABLE_FLTK=0 \
+ 	-DENABLE_MPEG_ENCODE=0 \
+ 	-DENABLE_MPI=1 \
+ 	-DENABLE_OCC=0 \
+ 	-DENABLE_TOUCHBAR=0 \
+-	-DBLAS_LAPACK_LIBRARIES="-L${LAPACK_ROOT}/lib -lflapack -L${BLAS_ROOT}/lib -lfblas -L${LIBGFORTRAN_ROOT} -lgfortran" \
+ 	-DMETIS_ROOT="${METIS_ROOT}"
+ 
+ # Compile and install
+Index: ../trunk-jpl/externalpackages/gmt/install-6-linux-static.sh
+===================================================================
+--- ../trunk-jpl/externalpackages/gmt/install-6-linux-static.sh	(revision 27201)
++++ ../trunk-jpl/externalpackages/gmt/install-6-linux-static.sh	(revision 27202)
+@@ -4,7 +4,7 @@
+ 
+ ## Constants
+ #
+-VER="6.0.0"
++VER="6.4.0"
+ 
+ # Find libgfortran and libgcc so we do not have to hardcode them
+ #
+@@ -60,6 +60,8 @@
+ #
+ cmake \
+ 	-DBLAS_LIBRARIES="${BLAS_ROOT}/lib/libfblas.a;${LIBGFORTRAN_ROOT}/libgfortran.a;${LIBGFORTRAN_ROOT}/libquadmath.a;${LIBGCC}" \
++	-DCURL_INCLUDE_DIR="${CURL_ROOT}/include" \
++	-DCURL_LIBRARY="${CURL_ROOT}/lib/libcurl.a" \
+ 	-DGDAL_EXTRA_LIBS="${GDAL_EXTRA_LIBS}" \
+ 	-DHDF5_ROOT="${HDF5_ROOT}" \
+ 	-DLAPACK_LIBRARIES="${LAPACK_ROOT}/lib/libflapack.a;${LIBGFORTRAN_ROOT}/libgfortran.a;${LIBGFORTRAN_ROOT}/libquadmath.a;${LIBGCC}" \
+Index: ../trunk-jpl/externalpackages/gmt/install-6-linux.sh
+===================================================================
+--- ../trunk-jpl/externalpackages/gmt/install-6-linux.sh	(revision 27201)
++++ ../trunk-jpl/externalpackages/gmt/install-6-linux.sh	(revision 27202)
+@@ -4,8 +4,16 @@
+ 
+ ## Constants
+ #
+-VER="6.0.0"
++VER="6.4.0"
+ 
++# Find libgfortran so that we do not have to hardcode it.
++#
++# TODO:
++# - Move this to etc/environment.sh
++#
++LIBGFORTRAN=$(find /usr -name libgfortran* | egrep -n libgfortran.a | sed "s/[0-9]*://g" | head -1)
++LIBGFORTRAN_ROOT=${LIBGFORTRAN%/*}
++
+ # Environment
+ #
+ export CC=mpicc
+@@ -41,8 +49,10 @@
+ #	below overrides this behavior.
+ #
+ cmake \
+-	-DCURL_LIBRARY="${CURL_ROOT}/lib" \
++	-DBLAS_LIBRARIES="-L${BLAS_ROOT}/lib;-lfblas;-L${LIBGFORTRAN_ROOT};-lgfortran" \
+ 	-DCURL_INCLUDE_DIR="${CURL_ROOT}/include" \
++	-DCURL_LIBRARY="-L${CURL_ROOT}/lib;-lcurl" \
++	-DLAPACK_LIBRARIES="-L${LAPACK_ROOT}/lib;-lflapack;-L${LIBGFORTRAN_ROOT};-lgfortran" \
+ 	..
+ 
+ # Compile and install
+Index: ../trunk-jpl/externalpackages/gmt/install-6-mac-static.sh
+===================================================================
+--- ../trunk-jpl/externalpackages/gmt/install-6-mac-static.sh	(revision 27201)
++++ ../trunk-jpl/externalpackages/gmt/install-6-mac-static.sh	(revision 27202)
+@@ -4,7 +4,7 @@
+ 
+ ## Constants
+ #
+-VER="6.0.0"
++VER="6.4.0"
+ 
+ # Find libgfortran and libgcc so we do not have to hardcode them
+ #
+@@ -64,6 +64,8 @@
+ #
+ cmake \
+ 	-DBLAS_LIBRARIES="${BLAS_ROOT}/lib/libfblas.a;${LIBGFORTRAN_ROOT}/libgfortran.a;${LIBGFORTRAN_ROOT}/libquadmath.a;${LIBGCC}" \
++	-DCURL_INCLUDE_DIR="${CURL_ROOT}/include" \
++	-DCURL_LIBRARY="${CURL_ROOT}/lib/libcurl.a" \
+ 	-DGDAL_EXTRA_LIBS="${GDAL_EXTRA_LIBS}" \
+ 	-DHDF5_ROOT="${HDF5_ROOT}" \
+ 	-DLAPACK_LIBRARIES="${LAPACK_ROOT}/lib/libflapack.a;${LIBGFORTRAN_ROOT}/libgfortran.a;${LIBGFORTRAN_ROOT}/libquadmath.a;${LIBGCC}" \
+Index: ../trunk-jpl/externalpackages/gmt/install-6-mac.sh
+===================================================================
+--- ../trunk-jpl/externalpackages/gmt/install-6-mac.sh	(revision 27201)
++++ ../trunk-jpl/externalpackages/gmt/install-6-mac.sh	(revision 27202)
+@@ -4,8 +4,19 @@
+ 
+ ## Constants
+ #
+-VER="6.0.0"
++VER="6.4.0"
+ 
++# Find libgfortran so that we do not have to hardcode it.
++#
++# Should retrieve a copy of gfortran that is compiled from source before 
++# returning one that is installed via package manager.
++#
++# TODO:
++# - Move this to etc/environment.sh
++#
++LIBGFORTRAN=$(mdfind -onlyin /usr -name libgfortran | egrep -n libgfortran.a | egrep -v i386 | sed "s/[0-9]*://g" | head -1)
++LIBGFORTRAN_ROOT=${LIBGFORTRAN%/*}
++
+ # Environment
+ #
+ export CC=mpicc
+@@ -41,8 +52,10 @@
+ #	below overrides this behavior.
+ #
+ cmake \
+-	-DCURL_LIBRARY="${CURL_ROOT}/lib" \
++	-DBLAS_LIBRARIES="-L${BLAS_ROOT}/lib;-lfblas;-L${LIBGFORTRAN_ROOT};-lgfortran" \
+ 	-DCURL_INCLUDE_DIR="${CURL_ROOT}/include" \
++	-DCURL_LIBRARY="-L${CURL_ROOT}/lib;-lcurl" \
++	-DLAPACK_LIBRARIES="-L${LAPACK_ROOT}/lib;-lflapack;-L${LIBGFORTRAN_ROOT};-lgfortran" \
+ 	..
+ 
+ # Compile and install
+Index: ../trunk-jpl/externalpackages/gsl/install.sh
+===================================================================
+--- ../trunk-jpl/externalpackages/gsl/install.sh	(revision 27201)
++++ ../trunk-jpl/externalpackages/gsl/install.sh	(revision 27202)
+@@ -2,7 +2,7 @@
+ set -eu
+ 
+ 
+-# Constants
++## Constants
+ #
+ VER="2.7"
+ 
+Index: ../trunk-jpl/externalpackages/petsc/install-3.12-linux.sh
+===================================================================
+--- ../trunk-jpl/externalpackages/petsc/install-3.12-linux.sh	(revision 27201)
++++ ../trunk-jpl/externalpackages/petsc/install-3.12-linux.sh	(revision 27202)
+@@ -17,7 +17,7 @@
+ 
+ # Cleanup
+ rm -rf ${PREFIX} ${PETSC_DIR}
+-mkdir ${PETSC_DIR}
++mkdir -p ${PETSC_DIR}
+ 
+ # Move source to $PETSC_DIR
+ mv petsc-${VER}/* ${PETSC_DIR}
+Index: ../trunk-jpl/externalpackages/petsc/install-3.12-lonestar.sh
+===================================================================
+--- ../trunk-jpl/externalpackages/petsc/install-3.12-lonestar.sh	(revision 27201)
++++ ../trunk-jpl/externalpackages/petsc/install-3.12-lonestar.sh	(revision 27202)
+@@ -1,10 +1,14 @@
+ #!/bin/bash
+ set -eu
+ 
++
+ ## Constants
+ #
+ VER="3.12.3"
+ 
++PETSC_DIR="${ISSM_DIR}/externalpackages/petsc/src" # DO NOT CHANGE THIS
++PREFIX="${ISSM_DIR}/externalpackages/petsc/install" # Set to location where external package should be installed
++
+ # Download source
+ $ISSM_DIR/scripts/DownloadExternalPackage.sh "https://issm.ess.uci.edu/files/externalpackages/petsc-lite-${VER}.tar.gz" "petsc-${VER}.tar.gz"
+ 
+@@ -12,18 +16,18 @@
+ tar -zxvf petsc-${VER}.tar.gz
+ 
+ # Cleanup
+-rm -rf install src
+-mkdir install src
++rm -rf ${PREFIX} ${PETSC_DIR}
++mkdir -p ${PETSC_DIR}
+ 
+-# Move source to 'src' directory
+-mv petsc-${VER}/* src/
++# Move source to $PETSC_DIR
++mv petsc-${VER}/* ${PETSC_DIR}
+ rm -rf petsc-${VER}
+ 
+-#configure
+-cd src
++# Configure
++cd ${PETSC_DIR}
+ ./config/configure.py \
+-	--prefix="$ISSM_DIR/externalpackages/petsc/install" \
+-	--PETSC_DIR="$ISSM_DIR/externalpackages/petsc/src" \
++	--prefix="${PREFIX}" \
++	--PETSC_DIR="${PETSC_DIR}" \
+ 	--with-mpi-dir="/opt/cray/pe/mpt/7.7.3/gni/mpich-intel/16.0/" \
+ 	--with-blas-lapack-dir="$TACC_MKL_LIB" \
+ 	--with-scalapack-include="$TACC_MKL_INC" \
+Index: ../trunk-jpl/externalpackages/petsc/install-3.12-mac.sh
+===================================================================
+--- ../trunk-jpl/externalpackages/petsc/install-3.12-mac.sh	(revision 27201)
++++ ../trunk-jpl/externalpackages/petsc/install-3.12-mac.sh	(revision 27202)
+@@ -17,7 +17,7 @@
+ 
+ # Cleanup
+ rm -rf ${PREFIX} ${PETSC_DIR}
+-mkdir ${PETSC_DIR}
++mkdir -p ${PETSC_DIR}
+ 
+ # Move source to $PETSC_DIR
+ mv petsc-${VER}/* ${PETSC_DIR}
+Index: ../trunk-jpl/externalpackages/petsc/install-3.12-win-msys2-gcc-msmpi.sh
+===================================================================
+--- ../trunk-jpl/externalpackages/petsc/install-3.12-win-msys2-gcc-msmpi.sh	(revision 27201)
++++ ../trunk-jpl/externalpackages/petsc/install-3.12-win-msys2-gcc-msmpi.sh	(revision 27202)
+@@ -17,7 +17,7 @@
+ 
+ # Cleanup
+ rm -rf ${PREFIX} ${PETSC_DIR}
+-mkdir ${PETSC_DIR}
++mkdir -p ${PETSC_DIR}
+ 
+ # Move source to $PETSC_DIR
+ mv petsc-${VER}/* ${PETSC_DIR}
+Index: ../trunk-jpl/externalpackages/petsc/install-3.13-pleiades.sh
+===================================================================
+--- ../trunk-jpl/externalpackages/petsc/install-3.13-pleiades.sh	(revision 27201)
++++ ../trunk-jpl/externalpackages/petsc/install-3.13-pleiades.sh	(revision 27202)
+@@ -19,7 +19,7 @@
+ 
+ # Cleanup
+ rm -rf ${PREFIX} ${PETSC_DIR}
+-mkdir ${PETSC_DIR}
++mkdir -p ${PETSC_DIR}
+ 
+ # Move source to $PETSC_DIR
+ mv petsc-${VER}/* ${PETSC_DIR}
+Index: ../trunk-jpl/externalpackages/petsc/install-3.14-discover.sh
+===================================================================
+--- ../trunk-jpl/externalpackages/petsc/install-3.14-discover.sh	(revision 27201)
++++ ../trunk-jpl/externalpackages/petsc/install-3.14-discover.sh	(revision 27202)
+@@ -2,35 +2,33 @@
+ set -eu
+ 
+ 
+-# NOTE: There is a single difference between the Linux and macOS 
+-#		configurations, which is the addition of the -static-libgfortran 
+-#		option to FFLAGS on the macOS static configurations. For the sake of 
+-#		consistency, we maintain separate files for each, respective Linux and 
+-#		macOS configuration.
+-
+-# Constants
++## Constants
++#
+ VER="3.14.6"
+ 
++PETSC_DIR="${ISSM_DIR}/externalpackages/petsc/src" # DO NOT CHANGE THIS
++PREFIX="${ISSM_DIR}/externalpackages/petsc/install" # Set to location where external package should be installed
++
+ # Download source
+-$ISSM_DIR/scripts/DownloadExternalPackage.sh "https://ftp.mcs.anl.gov/pub/petsc/release-snapshots/petsc-lite-${VER}.tar.gz" "petsc-${VER}.tar.gz"
++$ISSM_DIR/scripts/DownloadExternalPackage.sh "https://issm.ess.uci.edu/files/externalpackages/petsc-lite-${VER}.tar.gz" "petsc-${VER}.tar.gz"
+ 
+ # Unpack source
+ tar -zxvf petsc-${VER}.tar.gz
+ 
+ # Cleanup
+-rm -rf install src
+-mkdir install src
++rm -rf ${PREFIX} ${PETSC_DIR}
++mkdir -p ${PETSC_DIR}
+ 
+-# Move source to 'src' directory
+-mv petsc-${VER}/* src/
++# Move source to $PETSC_DIR
++mv petsc-${VER}/* ${PETSC_DIR}
+ rm -rf petsc-${VER}
+ 
+ # Configure
+-cd src
++cd ${PETSC_DIR}
+ ./config/configure.py \
+ 	COPTFLAGS="-g -O3" CXXOPTFLAGS="-g -O3" FOPTFLAGS="-g -O3" \
+-	--prefix="${ISSM_DIR}/externalpackages/petsc/install" \
+-	--PETSC_DIR="${ISSM_DIR}/externalpackages/petsc/src" \
++	--prefix="${PREFIX}" \
++	--PETSC_DIR="${PETSC_DIR}" \
+ 	--with-debugging=0 \
+ 	--with-valgrind=0 \
+ 	--with-x=0 \
+Index: ../trunk-jpl/externalpackages/petsc/install-3.14-greenplanet.sh
+===================================================================
+--- ../trunk-jpl/externalpackages/petsc/install-3.14-greenplanet.sh	(revision 27201)
++++ ../trunk-jpl/externalpackages/petsc/install-3.14-greenplanet.sh	(revision 27202)
+@@ -1,26 +1,36 @@
+ #!/bin/bash
+ set -eu
+ 
+-#WARNING: make sure you have the right mpi
+ 
+-#Some cleanup
+-rm -rf install petsc-3.14.0 src
+-mkdir install src
++# WARNING: Make sure you have the right MPI
+ 
+-#Download from ISSM server
+-$ISSM_DIR/scripts/DownloadExternalPackage.sh 'https://ftp.mcs.anl.gov/pub/petsc/release-snapshots/petsc-lite-3.14.0.tar.gz' 'petsc-3.14.0.tar.gz'
++## Constants
++#
++VER="3.14.0"
+ 
+-#Untar and move petsc to install directory
+-tar -zxvf  petsc-3.14.0.tar.gz
+-mv petsc-3.14.0/* src/
+-rm -rf petsc-3.14.0
++PETSC_DIR="${ISSM_DIR}/externalpackages/petsc/src" # DO NOT CHANGE THIS
++PREFIX="${ISSM_DIR}/externalpackages/petsc/install" # Set to location where external package should be installed
+ 
++# Download source
++$ISSM_DIR/scripts/DownloadExternalPackage.sh "https://issm.ess.uci.edu/files/externalpackages/petsc-lite-${VER}.tar.gz" "petsc-${VER}.tar.gz"
++
++# Unpack source
++tar -zxvf petsc-${VER}.tar.gz
++
++# Cleanup
++rm -rf ${PREFIX} ${PETSC_DIR}
++mkdir -p ${PETSC_DIR}
++
++# Move source to $PETSC_DIR
++mv petsc-${VER}/* ${PETSC_DIR}
++rm -rf petsc-${VER}
++
+ #configure
+-cd src
++cd ${PETSC_DIR}
+ ./config/configure.py \
+ 	COPTFLAGS="-g -O3" CXXOPTFLAGS="-g -O3" FOPTFLAGS="-g -O3" \
+-	--prefix="$ISSM_DIR/externalpackages/petsc/install" \
+-	--PETSC_DIR="$ISSM_DIR/externalpackages/petsc/src" \
++	--prefix="${PREFIX}" \
++	--PETSC_DIR="${PETSC_DIR}" \
+ 	--with-blas-lapack-dir="/sopt/INTEL/compilers_and_libraries_2018.3.222/linux/mkl/" \
+ 	--with-mpi-dir="/sopt/OpenMPI/3.1.2/intel-2018.3-slim/" \
+ 	--known-mpi-shared-libraries=1 \
+Index: ../trunk-jpl/externalpackages/petsc/install-3.14-linux.sh
+===================================================================
+--- ../trunk-jpl/externalpackages/petsc/install-3.14-linux.sh	(revision 27201)
++++ ../trunk-jpl/externalpackages/petsc/install-3.14-linux.sh	(revision 27202)
+@@ -17,7 +17,7 @@
+ 
+ # Cleanup
+ rm -rf ${PREFIX} ${PETSC_DIR}
+-mkdir ${PETSC_DIR}
++mkdir -p ${PETSC_DIR}
+ 
+ # Move source to $PETSC_DIR
+ mv petsc-${VER}/* ${PETSC_DIR}
+Index: ../trunk-jpl/externalpackages/petsc/install-3.14-mac-nohdf5.sh
+===================================================================
+--- ../trunk-jpl/externalpackages/petsc/install-3.14-mac-nohdf5.sh	(revision 27201)
++++ ../trunk-jpl/externalpackages/petsc/install-3.14-mac-nohdf5.sh	(revision 27202)
+@@ -17,7 +17,7 @@
+ 
+ # Cleanup
+ rm -rf ${PREFIX} ${PETSC_DIR}
+-mkdir ${PETSC_DIR}
++mkdir -p ${PETSC_DIR}
+ 
+ # Move source to $PETSC_DIR
+ mv petsc-${VER}/* ${PETSC_DIR}
+Index: ../trunk-jpl/externalpackages/petsc/install-3.14-pleiades.sh
+===================================================================
+--- ../trunk-jpl/externalpackages/petsc/install-3.14-pleiades.sh	(revision 27201)
++++ ../trunk-jpl/externalpackages/petsc/install-3.14-pleiades.sh	(revision 27202)
+@@ -17,7 +17,7 @@
+ 
+ # Cleanup
+ rm -rf ${PREFIX} ${PETSC_DIR}
+-mkdir ${PETSC_DIR}
++mkdir -p ${PETSC_DIR}
+ 
+ # Move source to $PETSC_DIR
+ mv petsc-${VER}/* ${PETSC_DIR}
+Index: ../trunk-jpl/externalpackages/petsc/install-3.14-win-msys2-mingw-msmpi.sh
+===================================================================
+--- ../trunk-jpl/externalpackages/petsc/install-3.14-win-msys2-mingw-msmpi.sh	(revision 27201)
++++ ../trunk-jpl/externalpackages/petsc/install-3.14-win-msys2-mingw-msmpi.sh	(revision 27202)
+@@ -31,7 +31,7 @@
+ 
+ # Cleanup
+ rm -rf ${PREFIX} ${PETSC_DIR}
+-mkdir ${PETSC_DIR}
++mkdir -p ${PETSC_DIR}
+ 
+ # Move source to $PETSC_DIR
+ mv petsc-${VER}/* ${PETSC_DIR}
+Index: ../trunk-jpl/externalpackages/petsc/install-3.15-discovery.sh
+===================================================================
+--- ../trunk-jpl/externalpackages/petsc/install-3.15-discovery.sh	(revision 27201)
++++ ../trunk-jpl/externalpackages/petsc/install-3.15-discovery.sh	(revision 27202)
+@@ -2,27 +2,32 @@
+ set -eu
+ 
+ ## Constants
++#
+ VER="3.15.3"
+ 
++PETSC_DIR="${ISSM_DIR}/externalpackages/petsc/src" # DO NOT CHANGE THIS
++PREFIX="${ISSM_DIR}/externalpackages/petsc/install" # Set to location where external package should be installed
++
+ # Download source
+-$ISSM_DIR/scripts/DownloadExternalPackage.sh "https://ftp.mcs.anl.gov/pub/petsc/release-snapshots/petsc-lite-${VER}.tar.gz" "petsc-${VER}.tar.gz"
++$ISSM_DIR/scripts/DownloadExternalPackage.sh "https://issm.ess.uci.edu/files/externalpackages/petsc-lite-${VER}.tar.gz" "petsc-${VER}.tar.gz"
+ 
+ # Unpack source
+ tar -zxvf petsc-${VER}.tar.gz
+ 
+ # Cleanup
+-rm -rf install src
+-mkdir install src
++rm -rf ${PREFIX} ${PETSC_DIR}
++mkdir -p ${PETSC_DIR}
+ 
+-# Move source to 'src' directory
+-mv petsc-${VER}/* src/
++# Move source to $PETSC_DIR
++mv petsc-${VER}/* ${PETSC_DIR}
+ rm -rf petsc-${VER}
+ 
+-cd src
++# Configure
++cd ${PETSC_DIR}
+ ./config/configure.py \
+ 	COPTFLAGS="-g -O3" CXXOPTFLAGS="-g -O3" FOPTFLAGS="-g -O3" \
+-	--prefix="${ISSM_DIR}/externalpackages/petsc/install" \
+-	--PETSC_DIR="${ISSM_DIR}/externalpackages/petsc/src" \
++	--prefix="${PREFIX}" \
++	--PETSC_DIR="${PETSC_DIR}" \
+ 	--with-make-np=20 \
+ 	--with-blas-lapack-dir=$MKL_ROOT \
+ 	--with-mpi-dir="/optnfs/el7/mpich/3.3-intel19.3/" \
+Index: ../trunk-jpl/externalpackages/petsc/install-3.16-linux.sh
+===================================================================
+--- ../trunk-jpl/externalpackages/petsc/install-3.16-linux.sh	(revision 27201)
++++ ../trunk-jpl/externalpackages/petsc/install-3.16-linux.sh	(revision 27202)
+@@ -2,6 +2,7 @@
+ set -eu
+ 
+ ## Constants
++#
+ VER="3.16.0"
+ 
+ PETSC_DIR="${ISSM_DIR}/externalpackages/petsc/src" # DO NOT CHANGE THIS
+@@ -8,24 +9,24 @@
+ PREFIX="${ISSM_DIR}/externalpackages/petsc/install" # Set to location where external package should be installed
+ 
+ # Download source
+-$ISSM_DIR/scripts/DownloadExternalPackage.sh "https://ftp.mcs.anl.gov/pub/petsc/release-snapshots/petsc-lite-${VER}.tar.gz" "petsc-${VER}.tar.gz"
++$ISSM_DIR/scripts/DownloadExternalPackage.sh "https://issm.ess.uci.edu/files/externalpackages/petsc-lite-${VER}.tar.gz" "petsc-${VER}.tar.gz"
+ 
+ # Unpack source
+ tar -zxvf petsc-${VER}.tar.gz
+ 
+ # Cleanup
+-rm -rf install src
+-mkdir install src
++rm -rf ${PREFIX} ${PETSC_DIR}
++mkdir -p ${PETSC_DIR}
+ 
+ # Move source to $PETSC_DIR
+-mv petsc-${VER}/* src/
++mv petsc-${VER}/* ${PETSC_DIR}
+ rm -rf petsc-${VER}
+ 
+ # Configure
+-cd src
++cd ${PETSC_DIR}
+ ./config/configure.py \
+-	--prefix="${ISSM_DIR}/externalpackages/petsc/install" \
+-	--PETSC_DIR="${ISSM_DIR}/externalpackages/petsc/src" \
++	--prefix="${PREFIX}" \
++	--PETSC_DIR="${PETSC_DIR}" \
+ 	-COPTFLAGS="-g -O2" -CXXOPTFLAGS="-g -O2" -FOPTFLAGS="-g -O2" \
+ 	--with-debugging=0 \
+ 	--with-valgrind=0 \
+Index: ../trunk-jpl/externalpackages/petsc/install-3.17-mac-intel.sh
+===================================================================
+--- ../trunk-jpl/externalpackages/petsc/install-3.17-mac-intel.sh	(revision 27201)
++++ ../trunk-jpl/externalpackages/petsc/install-3.17-mac-intel.sh	(revision 27202)
+@@ -1,27 +1,33 @@
+ #!/bin/bash
+ set -eu
+ 
++
+ ## Constants
+-VER="3.17.1"
++#
++VER="3.17.4"
+ 
++PETSC_DIR="${ISSM_DIR}/externalpackages/petsc/src" # DO NOT CHANGE THIS
++PREFIX="${ISSM_DIR}/externalpackages/petsc/install" # Set to location where external package should be installed
++
+ # Download source
+-$ISSM_DIR/scripts/DownloadExternalPackage.sh "https://ftp.mcs.anl.gov/pub/petsc/release-snapshots/petsc-lite-${VER}.tar.gz" "petsc-${VER}.tar.gz"
++$ISSM_DIR/scripts/DownloadExternalPackage.sh "https://issm.ess.uci.edu/files/externalpackages/petsc-lite-${VER}.tar.gz" "petsc-${VER}.tar.gz"
+ 
+ # Unpack source
+ tar -zxvf petsc-${VER}.tar.gz
+ 
+ # Cleanup
+-rm -rf install src
+-mkdir install src
++rm -rf ${PREFIX} ${PETSC_DIR}
++mkdir -p ${PETSC_DIR}
+ 
+-# Move source to 'src' directory
+-mv petsc-${VER}/* src/
++# Move source to $PETSC_DIR
++mv petsc-${VER}/* ${PETSC_DIR}
+ rm -rf petsc-${VER}
+ 
+-cd src
++# Configure
++cd ${PETSC_DIR}
+ ./configure \
+-	--prefix="${ISSM_DIR}/externalpackages/petsc/install" \
+-	--PETSC_DIR="${ISSM_DIR}/externalpackages/petsc/src" \
++	--prefix="${PREFIX}" \
++	--PETSC_DIR="${PETSC_DIR}" \
+ 	--with-debugging=0 \
+ 	--with-valgrind=0 \
+ 	--with-x=0 \
+@@ -33,8 +39,10 @@
+ 	--download-parmetis=1 \
+ 	--download-scalapack=1 \
+ 	--download-mumps=1 \
+-	--download-zlib=1 
++	--download-zlib=1 \
++	--download-hdf5=1
+ 
+ # Compile and install
+ make
+ make install
++
+Index: ../trunk-jpl/externalpackages/petsc/install-3.17-pleiades.sh
+===================================================================
+--- ../trunk-jpl/externalpackages/petsc/install-3.17-pleiades.sh	(revision 27201)
++++ ../trunk-jpl/externalpackages/petsc/install-3.17-pleiades.sh	(revision 27202)
+@@ -1,28 +1,39 @@
+ #!/bin/bash
+ set -eu
+ 
++
+ ## Constants
++#
+ VER="3.17.4"
+ 
++PETSC_DIR="${ISSM_DIR}/externalpackages/petsc/src" # DO NOT CHANGE THIS
++PREFIX="${ISSM_DIR}/externalpackages/petsc/install" # Set to location where external package should be installed
++
+ # Download source
+-$ISSM_DIR/scripts/DownloadExternalPackage.sh "https://ftp.mcs.anl.gov/pub/petsc/release-snapshots/petsc-lite-${VER}.tar.gz" "petsc-${VER}.tar.gz"
++$ISSM_DIR/scripts/DownloadExternalPackage.sh "https://issm.ess.uci.edu/files/externalpackages/petsc-lite-${VER}.tar.gz" "petsc-${VER}.tar.gz"
+ 
+ # Unpack source
+ tar -zxvf petsc-${VER}.tar.gz
+ 
+ # Cleanup
+-rm -rf install src
+-mkdir install src
++rm -rf ${PREFIX} ${PETSC_DIR}
++mkdir -p ${PETSC_DIR}
+ 
+-# Move source to 'src' directory
+-mv petsc-${VER}/* src/
++# Move source to $PETSC_DIR
++mv petsc-${VER}/* ${PETSC_DIR}
+ rm -rf petsc-${VER}
+ 
+-#options from cat /nasa/petsc/3.14.5_toss3/lib/petsc/conf/petscvariables | grep CONF
+-cd src
++# Configure
++#
++# NOTE:
++# - Options from,
++#
++# 		cat /nasa/petsc/3.14.5_toss3/lib/petsc/conf/petscvariables | grep CONF
++#
++cd ${PETSC_DIR}
+ ./configure \
+-	--prefix="${ISSM_DIR}/externalpackages/petsc/install" \
+-	--PETSC_DIR="${ISSM_DIR}/externalpackages/petsc/src" \
++	--prefix="${PREFIX}" \
++	--PETSC_DIR="${PETSC_DIR}" \
+ 	--with-blas-lapack-dir="/nasa/intel/Compiler/2018.3.222/compilers_and_libraries_2018.3.222/linux/mkl" \
+ 	--with-scalapack-include="/nasa/intel/Compiler/2018.3.222/mkl/include" \
+ 	--with-scalapack-lib="/nasa/intel/Compiler/2018.3.222/mkl/lib/intel64/libmkl_scalapack_lp64.so /nasa/intel/Compiler/2018.3.222/mkl/lib/intel64/libmkl_blacs_intelmpi_lp64.so" \
+Index: ../trunk-jpl/jenkins/pine_island-mac-full
+===================================================================
+--- ../trunk-jpl/jenkins/pine_island-mac-full	(revision 27201)
++++ ../trunk-jpl/jenkins/pine_island-mac-full	(revision 27202)
+@@ -43,7 +43,7 @@
+ EXTERNALPACKAGES="
+ 	autotools	install-mac.sh
+ 	cmake		install.sh
+-	petsc		install-3.16-mac.sh
++	petsc		install-3.17-mac-intel.sh
+ 	gsl			install.sh
+ 	boost		install-1.7-mac.sh
+ 	dakota		install-6.2-mac.sh
+Index: ../trunk-jpl/src/m/dev/devpath.py
+===================================================================
+--- ../trunk-jpl/src/m/dev/devpath.py	(revision 27201)
++++ ../trunk-jpl/src/m/dev/devpath.py	(revision 27202)
+@@ -36,7 +36,10 @@
+     else:
+         print('Warning: devpath.py: cluster settings should be in {}'.format(jpl_path))
+ 
+-from runme import runme  #first because plotmodel may fail
++try: # Avoid circular import
++    from runme import runme  # First, because plotmodel may fail
++except:
++    pass
+ from plotmodel import plotmodel
+ 
+ #c = get_ipython().config
+Index: ../trunk-jpl/test/NightlyRun/runme.py
+===================================================================
+--- ../trunk-jpl/test/NightlyRun/runme.py	(revision 27201)
++++ ../trunk-jpl/test/NightlyRun/runme.py	(revision 27202)
+@@ -7,9 +7,8 @@
+ # when making Python 3 default
+ #
+ import argparse
+-from glob import glob
+ import os
+-from re import search, split
++import re
+ from sys import float_info
+ from traceback import format_exc
+ 
+@@ -115,10 +114,9 @@
+         numprocs = 1
+     # }}}
+     #GET ids  {{{
+-    flist = glob('test*.py')  #File name must start with 'test' and must end by '.py' and must be different than 'test.py'
+-    list_ids = [int(search(r'\d+',file.split('.')[0]).group()) for file in flist if not file == 'test.py'] # Keep test id only (skip 'test' and '.py')
+-
+-    i1, i2 = parallelrange(rank, numprocs, len(list_ids))  #Get tests for this cpu only
++    flist = [f for f in os.listdir('.') if re.match('test[0-9]+.py', f)] # File name must follow the format "test<integer>.py"
++    list_ids = [int(re.search(r'\d+',file.split('.')[0]).group()) for file in flist] # Retrieve test IDs
++    i1, i2 = parallelrange(rank, numprocs, len(list_ids))  # Get tests for this CPU only
+     list_ids = list_ids[i1:i2 + 1]
+     if np.size(id) > 0 and id is not None:
+         test_ids = set(GetIds(id)).intersection(set(list_ids))
+@@ -171,6 +169,7 @@
+         test_ids = test_ids.intersection(set((218, 234, 235, 417, 418, 420)).union(set(range(412, 414))))
+     test_ids = list(test_ids)
+     test_ids.sort()
++    print(test_ids)
+     # }}}
+ 
+     #Loop over tests and launch sequence
+@@ -212,7 +211,7 @@
+                 mdl = loadmodel('test{}ma.nc'.format(id))
+                 for key in mdl.results.__dict__.keys():
+                     if 'Solution' in key:
+-                        solvetype = split('Solution', key)[0]
++                        solvetype = re.split('Solution', key)[0]
+ 
+                 #we save the results, scrap them and solve.
+                 loaded_res = mdl.results
+@@ -223,18 +222,18 @@
+                 for k, fieldname in enumerate(Tmod.field_names):
+                     try:
+                         #first look for indexing
+-                        if search(r'\d+$', fieldname):
+-                            index = int(search(r'\d+$', fieldname).group()) - 1
+-                            fieldname = fieldname[:search(r'\d+$', fieldname).start()]
++                        if re.search(r'\d+$', fieldname):
++                            index = int(re.search(r'\d+$', fieldname).group()) - 1
++                            fieldname = fieldname[:re.search(r'\d+$', fieldname).start()]
+                         elif 'FirstStep' in fieldname:
+                             index = 0
+-                            fieldname = fieldname[:search('FirstStep', fieldname).start()]
++                            fieldname = fieldname[:re.search('FirstStep', fieldname).start()]
+                         elif 'SecondStep' in fieldname:
+                             index = 1
+-                            fieldname = fieldname[:search('SecondStep', fieldname).start()]
++                            fieldname = fieldname[:re.search('SecondStep', fieldname).start()]
+                         elif 'ThirdStep' in fieldname:
+                             index = 2
+-                            fieldname = fieldname[:search('ThirdStep', fieldname).start()]
++                            fieldname = fieldname[:re.search('ThirdStep', fieldname).start()]
+                         else:
+                             index = 0
+ 
+@@ -269,7 +268,7 @@
+                                 except TypeError:
+                                     #probably severalmatches, we take the last one which should be the good one (Needs to be controled in the list above)
+                                     sufix = sufixes[np.squeeze(np.where([suf in fieldname for suf in sufixes]))[-1]]
+-                                fieldname = fieldname[:search(sufix, fieldname).start()]
++                                fieldname = fieldname[:re.search(sufix, fieldname).start()]
+                             elif fieldname.endswith("P") and index == 1:
+                                 #we are looking for P2 but 2 as been considered as an index and so shifted by -1
+                                 fieldname = fieldname[:-1]
+Index: ../trunk-jpl/test/NightlyRun/IdFromString.py
+===================================================================
+--- ../trunk-jpl/test/NightlyRun/IdFromString.py	(revision 27201)
++++ ../trunk-jpl/test/NightlyRun/IdFromString.py	(revision 27202)
+@@ -1,6 +1,7 @@
+ #!/usr/bin/env python
+ from IdToName import IdToName
+ import os
++import re
+ 
+ # use verbose = False to print output when this is called by command line
+ 
+@@ -26,14 +27,13 @@
+ 
+     ids = []
+     idnames = []
+-    for f in os.listdir('.'):
+-        if f.endswith('.py') and f.startswith('test'):
+-            # all tests look like: "testwxyz.py" so 5th to 3rd to last is always the full id
+-            s = int(f[4:-3])
+-            name = IdToName(s)
+-            if (string == ' * ') or (name is not None and string in name):
+-                ids.append(s)
+-                idnames.append(name)
++    flist = [f for f in os.listdir('.') if re.match('test[0-9]+.py', f)] # File name must follow the format "test<integer>.py"
++    list_ids = [int(re.search(r'\d+',file.split('.')[0]).group()) for file in flist] # Retrieve test IDs
++    for i in list_ids:
++        name = IdToName(i)
++        if (string == ' * ') or (name is not None and string in name):
++            ids.append(i)
++            idnames.append(name)
+ 
+ #Return if no test found
+     if not ids:
+Index: ../trunk-jpl/test/NightlyRun/runme.m
+===================================================================
+--- ../trunk-jpl/test/NightlyRun/runme.m	(revision 27201)
++++ ../trunk-jpl/test/NightlyRun/runme.m	(revision 27202)
+@@ -87,7 +87,7 @@
+ if (numprocs<rank), numprocs=1; end
+ % }}}
+ %GET ids  {{{
+-flist=dir;%use dir, as it seems to act OS independent
++flist=dir; %use dir, as it seems to act OS independent
+ list_ids=[];
+ for i=1:numel(flist),
+ 	fname=flist(i).name;
+@@ -100,7 +100,7 @@
+ 			if isempty(id),
+ 				disp(['WARNING: ignore file ' flist(i).name]);
+ 			else
+-				list_ids(end+1)=id;%Keep test id only (strip 'test' and '.m')
++				list_ids(end+1)=id; %Keep test id only (strip 'test' and '.m')
+ 			end
+ 		end
+ 	end
Index: /issm/oecreview/Archive/27032-27229/ISSM-27202-27203.diff
===================================================================
--- /issm/oecreview/Archive/27032-27229/ISSM-27202-27203.diff	(revision 27230)
+++ /issm/oecreview/Archive/27032-27229/ISSM-27202-27203.diff	(revision 27230)
@@ -0,0 +1,132 @@
+Index: ../trunk-jpl/src/c/analyses/LevelsetAnalysis.cpp
+===================================================================
+--- ../trunk-jpl/src/c/analyses/LevelsetAnalysis.cpp	(revision 27202)
++++ ../trunk-jpl/src/c/analyses/LevelsetAnalysis.cpp	(revision 27203)
+@@ -224,6 +224,7 @@
+ 			parameters->AddObject(iomodel->CopyConstantObject("md.calving.alpha",CalvingAlphaEnum));
+ 			parameters->AddObject(iomodel->CopyConstantObject("md.calving.xoffset",CalvingXoffsetEnum));
+ 			parameters->AddObject(iomodel->CopyConstantObject("md.calving.yoffset",CalvingYoffsetEnum));
++			parameters->AddObject(iomodel->CopyConstantObject("md.calving.vel_threshold",CalvingVelThresholdEnum));
+ 			break;
+ 		default:
+ 			_error_("Calving law "<<EnumToStringx(calvinglaw)<<" not supported yet");
+Index: ../trunk-jpl/src/c/classes/Elements/Tria.cpp
+===================================================================
+--- ../trunk-jpl/src/c/classes/Elements/Tria.cpp	(revision 27202)
++++ ../trunk-jpl/src/c/classes/Elements/Tria.cpp	(revision 27203)
+@@ -843,7 +843,7 @@
+ 	IssmDouble  epse_2,groundedice,bed,sealevel;
+ 	IssmDouble  arate, rho_ice, rho_water, thickness;
+ 	int			use_parameter=-1;
+-	IssmDouble  gamma, theta, alpha, xoffset, yoffset;
++	IssmDouble  gamma, theta, alpha, xoffset, yoffset, vel_threshold, vrate;
+ 
+ 	/* Get node coordinates and dof list: */
+ 	::GetVerticesCoordinates(&xyz_list[0][0],vertices,NUMVERTICES);
+@@ -869,6 +869,7 @@
+ 	this->FindParam(&alpha, CalvingAlphaEnum);
+ 	this->FindParam(&xoffset, CalvingXoffsetEnum);
+ 	this->FindParam(&yoffset, CalvingYoffsetEnum);
++	this->FindParam(&vel_threshold, CalvingVelThresholdEnum);
+ 
+ 	/* Start looping on the number of vertices: */
+ 	GaussTria* gauss=new GaussTria();
+@@ -882,9 +883,12 @@
+ 		vy_input->GetInputValue(&vy,gauss);
+ 		gr_input->GetInputValue(&groundedice,gauss);
+ 		bs_input->GetInputValue(&bed,gauss);
++		H_input->GetInputValue(&thickness,gauss);
+ 		vel=sqrt(vx*vx+vy*vy)+1.e-14;
+ 		sl_input->GetInputValue(&sealevel,gauss);
+ 		arate_input->GetInputValue(&arate,gauss);
++		vrate = 1.0;
++		if (vel < vel_threshold) vrate = vel / vel_threshold;
+ 
+ 		/*Compute strain rate and viscosity: */
+ 		this->StrainRateSSA(&epsilon[0],&xyz_list[0][0],gauss,vx_input,vy_input);
+@@ -911,6 +915,10 @@
+ 				/* 1 tanh: f(x)=y_{o}-\frac{\theta}{2}\tanh(\alpha(x+x_{o})) */
+ 				gamma = yoffset -  0.5*theta*tanh(alpha*(bed+xoffset));
+ 				break;
++			case 2:
++				/* 2 tanh(thicknes): f(x)=y_{o}-\frac{\theta}{2}\tanh(\alpha(x+x_{o})) */
++				gamma = yoffset -  0.5*theta*tanh(alpha*(-thickness+xoffset));
++				break;
+ 			case -1:
+ 				/* nothing, just the arate*/
+ 				gamma = 1;
+@@ -925,7 +933,7 @@
+ 		if (bed >= sealevel) gamma = 0.0;
+ 
+ 		/*-------------------------------------------*/
+-		calvingrate[iv] = arate*gamma;
++		calvingrate[iv] = arate*gamma*vrate;
+ 	}
+ 
+ 	/*Add input*/
+Index: ../trunk-jpl/src/c/shared/Enum/EnumDefinitions.h
+===================================================================
+--- ../trunk-jpl/src/c/shared/Enum/EnumDefinitions.h	(revision 27202)
++++ ../trunk-jpl/src/c/shared/Enum/EnumDefinitions.h	(revision 27203)
+@@ -115,6 +115,7 @@
+ 	CalvingAlphaEnum,
+ 	CalvingXoffsetEnum,
+ 	CalvingYoffsetEnum,
++	CalvingVelThresholdEnum,
+ 	ConfigurationTypeEnum,
+ 	ConstantsGEnum,
+ 	ConstantsNewtonGravityEnum,
+Index: ../trunk-jpl/src/m/classes/calvingparameterization.m
+===================================================================
+--- ../trunk-jpl/src/m/classes/calvingparameterization.m	(revision 27202)
++++ ../trunk-jpl/src/m/classes/calvingparameterization.m	(revision 27203)
+@@ -11,6 +11,7 @@
+ 		alpha = 0;
+ 		xoffset = 0;
+ 		yoffset = 0;
++		vel_threshold = 6000;
+ 	end
+ 	methods
+ 		function self = calvingparameterization(varargin) % {{{
+@@ -50,6 +51,8 @@
+ 			self.xoffset = 0;
+ 			% offset in y-axis 
+ 			self.yoffset = 0;
++			% velocity threshold to reduce calving rate
++			vel_threshold = 6000; % m/a
+ 		end % }}}
+ 		function md = checkconsistency(self,md,solution,analyses) % {{{
+ 			%Early return
+@@ -56,20 +59,22 @@
+ 			if (~strcmp(solution,'TransientSolution') | md.transient.ismovingfront==0), return; end
+ 
+ 			md = checkfield(md,'fieldname','calving.min_thickness','>=',0,'NaN',1,'Inf',1,'numel',1);
+-			md = checkfield(md,'fieldname','calving.use_param','values',[-1, 0, 1]);
++			md = checkfield(md,'fieldname','calving.use_param','values',[-1, 0, 1, 2]);
+ 			md = checkfield(md,'fieldname','calving.theta','NaN',1,'Inf',1,'numel',1);
+ 			md = checkfield(md,'fieldname','calving.alpha','NaN',1,'Inf',1,'numel',1);
+ 			md = checkfield(md,'fieldname','calving.xoffset','NaN',1,'Inf',1,'numel',1);
+ 			md = checkfield(md,'fieldname','calving.yoffset','NaN',1,'Inf',1,'numel',1);
++			md = checkfield(md,'fieldname','calving.vel_threshold','NaN',1,'Inf',1,'numel',1);
+ 		end % }}}
+ 		function disp(self) % {{{
+ 			disp(sprintf('   Calving test parameters:'));
+ 			fielddisplay(self,'min_thickness','minimum thickness below which no ice is allowed [m]');
+-			fielddisplay(self,'use_param','-1 - just use frontal ablation rate, 0 - f(x) = y_{o} + \alpha (x+x_{o}), 1 - f(x)=y_{o}-\frac{\theta}{2}\tanh(\alpha(x+x_{o}))');
++			fielddisplay(self,'use_param','-1 - just use frontal ablation rate, 0 - f(x) = y_{o} + \alpha (x+x_{o}), 1 - f(x)=y_{o}-\frac{\theta}{2}\tanh(\alpha(x+x_{o})), 2 - tanh(thickness)');
+ 			fielddisplay(self,'theta','the amplifier');
+ 			fielddisplay(self,'alpha','the slope');
+ 			fielddisplay(self,'xoffset','offset in x-axis');
+ 			fielddisplay(self,'yoffset','offset in y-axis');
++			fielddisplay(self,'vel_threshold','threshold of ice velocity to reduce the calving rate');
+ 		end % }}}
+ 		function marshall(self,prefix,md,fid) % {{{
+ 			yts=md.constants.yts;
+@@ -80,6 +85,7 @@
+ 			WriteData(fid,prefix,'object',self,'fieldname','alpha','format','Double');
+ 			WriteData(fid,prefix,'object',self,'fieldname','xoffset','format','Double');
+ 			WriteData(fid,prefix,'object',self,'fieldname','yoffset','format','Double');
++			WriteData(fid,prefix,'object',self,'fieldname','vel_threshold','format','Double','scale', 1./yts);
+ 		end % }}}
+ 	end
+ end
Index: /issm/oecreview/Archive/27032-27229/ISSM-27225-27226.diff
===================================================================
--- /issm/oecreview/Archive/27032-27229/ISSM-27225-27226.diff	(revision 27230)
+++ /issm/oecreview/Archive/27032-27229/ISSM-27225-27226.diff	(revision 27230)
@@ -0,0 +1,187 @@
+Index: ../trunk-jpl/src/c/analyses/LevelsetAnalysis.cpp
+===================================================================
+--- ../trunk-jpl/src/c/analyses/LevelsetAnalysis.cpp	(revision 27225)
++++ ../trunk-jpl/src/c/analyses/LevelsetAnalysis.cpp	(revision 27226)
+@@ -224,7 +224,8 @@
+ 			parameters->AddObject(iomodel->CopyConstantObject("md.calving.alpha",CalvingAlphaEnum));
+ 			parameters->AddObject(iomodel->CopyConstantObject("md.calving.xoffset",CalvingXoffsetEnum));
+ 			parameters->AddObject(iomodel->CopyConstantObject("md.calving.yoffset",CalvingYoffsetEnum));
+-			parameters->AddObject(iomodel->CopyConstantObject("md.calving.vel_threshold",CalvingVelThresholdEnum));
++			parameters->AddObject(iomodel->CopyConstantObject("md.calving.vel_lowerbound",CalvingVelLowerboundEnum));
++			parameters->AddObject(iomodel->CopyConstantObject("md.calving.vel_upperbound",CalvingVelUpperboundEnum));
+ 			break;
+ 		default:
+ 			_error_("Calving law "<<EnumToStringx(calvinglaw)<<" not supported yet");
+Index: ../trunk-jpl/src/c/classes/Elements/Tria.cpp
+===================================================================
+--- ../trunk-jpl/src/c/classes/Elements/Tria.cpp	(revision 27225)
++++ ../trunk-jpl/src/c/classes/Elements/Tria.cpp	(revision 27226)
+@@ -843,7 +843,8 @@
+ 	IssmDouble  epse_2,groundedice,bed,sealevel;
+ 	IssmDouble  arate, rho_ice, rho_water, thickness;
+ 	int			use_parameter=-1;
+-	IssmDouble  gamma, theta, alpha, xoffset, yoffset, vel_threshold, vrate;
++	IssmDouble  gamma, theta, alpha, xoffset, yoffset;
++	IssmDouble  vel_lower, vel_upper, vrate, truncateVrate;
+ 
+ 	/* Get node coordinates and dof list: */
+ 	::GetVerticesCoordinates(&xyz_list[0][0],vertices,NUMVERTICES);
+@@ -869,7 +870,8 @@
+ 	this->FindParam(&alpha, CalvingAlphaEnum);
+ 	this->FindParam(&xoffset, CalvingXoffsetEnum);
+ 	this->FindParam(&yoffset, CalvingYoffsetEnum);
+-	this->FindParam(&vel_threshold, CalvingVelThresholdEnum);
++	this->FindParam(&vel_lower, CalvingVelLowerboundEnum);
++	this->FindParam(&vel_upper, CalvingVelUpperboundEnum);
+ 
+ 	/* Start looping on the number of vertices: */
+ 	GaussTria* gauss=new GaussTria();
+@@ -888,7 +890,7 @@
+ 		sl_input->GetInputValue(&sealevel,gauss);
+ 		arate_input->GetInputValue(&arate,gauss);
+ 		vrate = 1.0;
+-		if (vel < vel_threshold) vrate = vel / vel_threshold;
++		if (vel < vel_upper) vrate = vel / vel_upper;
+ 
+ 		/*Compute strain rate and viscosity: */
+ 		this->StrainRateSSA(&epsilon[0],&xyz_list[0][0],gauss,vx_input,vy_input);
+@@ -919,6 +921,16 @@
+ 				/* 2 tanh(thicknes): f(x)=y_{o}-\frac{\theta}{2}\tanh(\alpha(x+x_{o})) */
+ 				gamma = yoffset -  0.5*theta*tanh(alpha*(-thickness+xoffset));
+ 				break;
++			case 3:
++				/* 3 tanh(normal vel): f(x)=y_{o}-\frac{\theta}{2}\tanh(\alpha(x+x_{o})) */
++				_error_("The normalized velocity is not supported yet!");
++				gamma = yoffset -  0.5*theta*tanh(alpha*(vel+xoffset));
++				break;
++			case 4:
++				/* 4 tanh(truncated vel): f(x)=y_{o}-\frac{\theta}{2}\tanh(\alpha(x+x_{o})) */
++				truncateVrate = (min(vel_upper, max(vel_lower, vel))-vel_lower) / vel_upper;
++				gamma = 0.5*theta*(tanh(alpha*xoffset) - tanh(alpha*(truncateVrate+xoffset)));
++				break;
+ 			case -1:
+ 				/* nothing, just the arate*/
+ 				gamma = 1;
+@@ -933,9 +945,13 @@
+ 		if (bed >= sealevel) gamma = 0.0;
+ 
+ 		/*-------------------------------------------*/
+-		calvingrate[iv] = arate*gamma*vrate;
++		if (use_parameter < 3) {
++			calvingrate[iv] = arate*gamma*vrate;
++		} 
++		else {
++			calvingrate[iv] = arate*gamma;
++		}
+ 	}
+-
+ 	/*Add input*/
+ 	this->AddInput(CalvingCalvingrateEnum,&calvingrate[0],P1DGEnum);
+ 	this->AddInput(SigmaVMEnum,&sigma_vm[0],P1DGEnum);
+Index: ../trunk-jpl/src/c/shared/Enum/EnumDefinitions.h
+===================================================================
+--- ../trunk-jpl/src/c/shared/Enum/EnumDefinitions.h	(revision 27225)
++++ ../trunk-jpl/src/c/shared/Enum/EnumDefinitions.h	(revision 27226)
+@@ -115,7 +115,8 @@
+ 	CalvingAlphaEnum,
+ 	CalvingXoffsetEnum,
+ 	CalvingYoffsetEnum,
+-	CalvingVelThresholdEnum,
++	CalvingVelLowerboundEnum,
++	CalvingVelUpperboundEnum,
+ 	ConfigurationTypeEnum,
+ 	ConstantsGEnum,
+ 	ConstantsNewtonGravityEnum,
+Index: ../trunk-jpl/src/m/classes/calvingparameterization.m
+===================================================================
+--- ../trunk-jpl/src/m/classes/calvingparameterization.m	(revision 27225)
++++ ../trunk-jpl/src/m/classes/calvingparameterization.m	(revision 27226)
+@@ -11,7 +11,8 @@
+ 		alpha = 0;
+ 		xoffset = 0;
+ 		yoffset = 0;
+-		vel_threshold = 6000;
++		vel_upperbound = 6000;
++		vel_lowerbound = 0;
+ 	end
+ 	methods
+ 		function self = calvingparameterization(varargin) % {{{
+@@ -51,8 +52,9 @@
+ 			self.xoffset = 0;
+ 			% offset in y-axis 
+ 			self.yoffset = 0;
+-			% velocity threshold to reduce calving rate
+-			vel_threshold = 6000; % m/a
++			% velocity thresholds to reduce calving rate
++			vel_upperbound = 6000; % m/a
++			vel_lowerbound = 0; % m/a
+ 		end % }}}
+ 		function md = checkconsistency(self,md,solution,analyses) % {{{
+ 			%Early return
+@@ -59,22 +61,24 @@
+ 			if (~strcmp(solution,'TransientSolution') | md.transient.ismovingfront==0), return; end
+ 
+ 			md = checkfield(md,'fieldname','calving.min_thickness','>=',0,'NaN',1,'Inf',1,'numel',1);
+-			md = checkfield(md,'fieldname','calving.use_param','values',[-1, 0, 1, 2]);
++			md = checkfield(md,'fieldname','calving.use_param','values',[-1, 0, 1, 2, 3, 4]);
+ 			md = checkfield(md,'fieldname','calving.theta','NaN',1,'Inf',1,'numel',1);
+ 			md = checkfield(md,'fieldname','calving.alpha','NaN',1,'Inf',1,'numel',1);
+ 			md = checkfield(md,'fieldname','calving.xoffset','NaN',1,'Inf',1,'numel',1);
+ 			md = checkfield(md,'fieldname','calving.yoffset','NaN',1,'Inf',1,'numel',1);
+-			md = checkfield(md,'fieldname','calving.vel_threshold','NaN',1,'Inf',1,'numel',1);
++			md = checkfield(md,'fieldname','calving.vel_lowerbound','NaN',1,'Inf',1,'numel',1);
++			md = checkfield(md,'fieldname','calving.vel_upperbound','NaN',1,'Inf',1,'numel',1);
+ 		end % }}}
+ 		function disp(self) % {{{
+ 			disp(sprintf('   Calving test parameters:'));
+ 			fielddisplay(self,'min_thickness','minimum thickness below which no ice is allowed [m]');
+-			fielddisplay(self,'use_param','-1 - just use frontal ablation rate, 0 - f(x) = y_{o} + \alpha (x+x_{o}), 1 - f(x)=y_{o}-\frac{\theta}{2}\tanh(\alpha(x+x_{o})), 2 - tanh(thickness)');
++			fielddisplay(self,'use_param','-1 - just use frontal ablation rate, 0 - f(x) = y_{o} + \alpha (x+x_{o}), 1 - f(x)=y_{o}-\frac{\theta}{2}\tanh(\alpha(x+x_{o})), 2 - tanh(thickness), 3 - tanh(normalized vel), 4 - tanh(truncated vel)');
+ 			fielddisplay(self,'theta','the amplifier');
+ 			fielddisplay(self,'alpha','the slope');
+ 			fielddisplay(self,'xoffset','offset in x-axis');
+ 			fielddisplay(self,'yoffset','offset in y-axis');
+-			fielddisplay(self,'vel_threshold','threshold of ice velocity to reduce the calving rate');
++			fielddisplay(self,'vel_lowerbound','lowerbound of ice velocity to reduce the calving rate [m/a]');
++			fielddisplay(self,'vel_upperbound','upperbound of ice velocity to reduce the calving rate [m/a]');
+ 		end % }}}
+ 		function marshall(self,prefix,md,fid) % {{{
+ 			yts=md.constants.yts;
+@@ -85,7 +89,8 @@
+ 			WriteData(fid,prefix,'object',self,'fieldname','alpha','format','Double');
+ 			WriteData(fid,prefix,'object',self,'fieldname','xoffset','format','Double');
+ 			WriteData(fid,prefix,'object',self,'fieldname','yoffset','format','Double');
+-			WriteData(fid,prefix,'object',self,'fieldname','vel_threshold','format','Double','scale', 1./yts);
++			WriteData(fid,prefix,'object',self,'fieldname','vel_lowerbound','format','Double','scale', 1./yts);
++			WriteData(fid,prefix,'object',self,'fieldname','vel_upperbound','format','Double','scale', 1./yts);
+ 		end % }}}
+ 	end
+ end
+Index: ../trunk-jpl/src/m/classes/initialization.m
+===================================================================
+--- ../trunk-jpl/src/m/classes/initialization.m	(revision 27225)
++++ ../trunk-jpl/src/m/classes/initialization.m	(revision 27226)
+@@ -149,8 +149,8 @@
+ 
+ 			yts=md.constants.yts;
+ 
+-			WriteData(fid,prefix,'object',self,'fieldname','vx','format','DoubleMat','mattype',1,'scale',1./yts);
+-			WriteData(fid,prefix,'object',self,'fieldname','vy','format','DoubleMat','mattype',1,'scale',1./yts);
++			WriteData(fid,prefix,'object',self,'fieldname','vx','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts);
++			WriteData(fid,prefix,'object',self,'fieldname','vy','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts);
+ 			WriteData(fid,prefix,'object',self,'fieldname','vz','format','DoubleMat','mattype',1,'scale',1./yts);
+ 			WriteData(fid,prefix,'object',self,'fieldname','pressure','format','DoubleMat','mattype',1);
+ 			WriteData(fid,prefix,'object',self,'fieldname','sealevel','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts);
+Index: ../trunk-jpl/src/m/parameterization/setflowequation.m
+===================================================================
+--- ../trunk-jpl/src/m/parameterization/setflowequation.m	(revision 27225)
++++ ../trunk-jpl/src/m/parameterization/setflowequation.m	(revision 27226)
+@@ -54,7 +54,7 @@
+ 
+ %check that each element has at least one flag
+ if any(SIAflag+SSAflag+HOflag+L1L2flag+MOLHOflag+FSflag==0),
+-	error('elements type not assigned, supported models are ''SIA'',''SSA'',''HO'' and ''FS''')
++	error('elements type not assigned, supported models are ''SIA'',''SSA'',''HO'',''MOLHO'' and ''FS''')
+ end
+ 
+ %check that each element has only one flag
Index: /issm/oecreview/Archive/27032-27229/ISSM-27226-27227.diff
===================================================================
--- /issm/oecreview/Archive/27032-27229/ISSM-27226-27227.diff	(revision 27230)
+++ /issm/oecreview/Archive/27032-27229/ISSM-27226-27227.diff	(revision 27230)
@@ -0,0 +1,197 @@
+Index: ../trunk-jpl/src/c/modules/SurfaceMassBalancex/Gembx.cpp
+===================================================================
+--- ../trunk-jpl/src/c/modules/SurfaceMassBalancex/Gembx.cpp	(revision 27226)
++++ ../trunk-jpl/src/c/modules/SurfaceMassBalancex/Gembx.cpp	(revision 27227)
+@@ -1827,6 +1827,112 @@
+ 	/*Free resources:*/
+ 	xDelete<IssmDouble>(F);
+ 
++	//Manage the layering to match the user defined requirements
++	managelayers(&mAdd, &dz_add, &addE, &m, &EI, &EW, &T, &d, &dz, &W, &a, &adiff, &re, &gdn, &gsp, &n, dzMin, zMax, zMin, zTop, zY);
++
++	//// CHECK FOR MASS AND ENERGY CONSERVATION
++
++	// calculate final mass [kg] and energy [J]
++	sumER = Rsum * (LF + CtoK * CI);
++	for(int i=0;i<n;i++)EI[i] = m[i] * T[i] * CI;
++	for(int i=0;i<n;i++)EW[i] = W[i] * (LF + CtoK * CI);
++
++	mSum1 = cellsum(W,n) + cellsum(m,n) + Rsum;
++	sumE1 = cellsum(EI,n) + cellsum(EW,n);
++
++	/*checks: */
++	for(int i=0;i<n;i++) if (W[i]<0.0-Wtol) _error_("negative pore water generated in melt equations\n");
++
++	/*only in forward mode! avoid round in AD mode as it is not differentiable: */
++	#ifndef _HAVE_AD_
++	dm = round((mSum0 - mSum1 + mAdd)*100.0)/100.0;
++	dE = round(sumE0 - sumE1 - sumER +  addE - surplusE);
++	if (dm !=0  || dE !=0) _error_("mass or energy are not conserved in melt equations\n"
++			<< "dm: " << dm << " dE: " << dE << "\n");
++	#endif
++
++	
++	/*Free resources:*/
++	if(m)xDelete<IssmDouble>(m);
++	if(EI)xDelete<IssmDouble>(EI);
++	if(EW)xDelete<IssmDouble>(EW);
++	if(maxF)xDelete<IssmDouble>(maxF);
++	if(dW)xDelete<IssmDouble>(dW);
++	if(exsW)xDelete<IssmDouble>(exsW);
++	if(exsT)xDelete<IssmDouble>(exsT);
++	if(surpT)xDelete<IssmDouble>(surpT);
++	if(surpE)xDelete<IssmDouble>(surpE);
++	if(flxDn)xDelete<IssmDouble>(flxDn);
++	if(D)xDelete<int>(D);
++	if(M)xDelete<IssmDouble>(M);
++
++	/*Assign output pointers:*/
++	*pMs=Msurf;
++	*pM=sumM;
++	*pR=Rsum;
++	*pF=Fsum;
++	*pmAdd=mAdd;
++	*pdz_add=dz_add;
++
++	*pT=T;
++	*pd=d;
++	*pdz=dz;
++	*pW=W;
++	*pa=a;
++	*padiff=adiff;
++	*pre=re;
++	*pgdn=gdn;
++	*pgsp=gsp;
++	*pn=n;
++
++} /*}}}*/ 
++void managelayers(IssmDouble* pmAdd, IssmDouble* pdz_add, IssmDouble* paddE, IssmDouble** pm, IssmDouble** pEI, IssmDouble** pEW, IssmDouble** pT, IssmDouble** pd, IssmDouble** pdz, IssmDouble** pW, IssmDouble** pa, IssmDouble** padiff, IssmDouble** pre, IssmDouble** pgdn, IssmDouble** pgsp, int* pn, IssmDouble dzMin, IssmDouble zMax, IssmDouble zMin, IssmDouble zTop, IssmDouble zY){ /*{{{*/
++
++	/*intermediary:*/
++	IssmDouble* Zcum=NULL;
++	IssmDouble* dzMin2=NULL;
++	IssmDouble* dzMax2=NULL;
++	int*        D=NULL;
++
++	IssmDouble zY2=zY;
++	IssmDouble X=0.0;
++	int X1=0;
++	int X2=0;
++	int D_size = 0;
++
++	IssmDouble Ztot=0.0;
++	IssmDouble T_bot=0.0;
++	IssmDouble m_bot=0.0;
++	IssmDouble dz_bot=0.0;
++	IssmDouble d_bot=0.0;
++	IssmDouble W_bot=0.0;
++	IssmDouble a_bot=0.0;
++	IssmDouble adiff_bot=0.0;
++	IssmDouble re_bot=0.0;
++	IssmDouble gdn_bot=0.0;
++	IssmDouble gsp_bot=0.0;
++	IssmDouble EI_bot=0.0;
++	IssmDouble EW_bot=0.0;
++	bool       top=false;
++
++	/*outputs:*/
++	IssmDouble  mAdd = 0.0;
++	IssmDouble  addE = 0.0;
++	IssmDouble  dz_add = 0.0;
++	IssmDouble* T=*pT;
++	IssmDouble* d=*pd;
++	IssmDouble* dz=*pdz;
++	IssmDouble* W=*pW;
++	IssmDouble* a=*pa;
++	IssmDouble* adiff=*padiff;
++	IssmDouble* re=*pre;
++	IssmDouble* gdn=*pgdn;
++	IssmDouble* gsp=*pgsp;
++	IssmDouble* m=*pm;
++	IssmDouble* EI=*pEI;
++	IssmDouble* EW=*pEW;
++	int         n=*pn;
++
+ 	//Merging of cells as they are burried under snow.
+ 	Zcum=xNew<IssmDouble>(n);
+ 	dzMin2=xNew<IssmDouble>(n);
+@@ -2018,52 +2124,12 @@
+ 		xDelete<int>(D);
+ 	}
+ 
+-	//// CHECK FOR MASS AND ENERGY CONSERVATION
+-
+-	// calculate final mass [kg] and energy [J]
+-	sumER = Rsum * (LF + CtoK * CI);
+-	for(int i=0;i<n;i++)EI[i] = m[i] * T[i] * CI;
+-	for(int i=0;i<n;i++)EW[i] = W[i] * (LF + CtoK * CI);
+-
+-	mSum1 = cellsum(W,n) + cellsum(m,n) + Rsum;
+-	sumE1 = cellsum(EI,n) + cellsum(EW,n);
+-
+-	/*checks: */
+-	for(int i=0;i<n;i++) if (W[i]<0.0-Wtol) _error_("negative pore water generated in melt equations\n");
+-
+-	/*only in forward mode! avoid round in AD mode as it is not differentiable: */
+-	#ifndef _HAVE_AD_
+-	dm = round((mSum0 - mSum1 + mAdd)*100.0)/100.0;
+-	dE = round(sumE0 - sumE1 - sumER +  addE - surplusE);
+-	if (dm !=0  || dE !=0) _error_("mass or energy are not conserved in melt equations\n"
+-			<< "dm: " << dm << " dE: " << dE << "\n");
+-	#endif
+-
+ 	/*Free resources:*/
+-	if(m)xDelete<IssmDouble>(m);
+-	if(EI)xDelete<IssmDouble>(EI);
+-	if(EW)xDelete<IssmDouble>(EW);
+-	if(maxF)xDelete<IssmDouble>(maxF);
+-	if(dW)xDelete<IssmDouble>(dW);
+-	if(exsW)xDelete<IssmDouble>(exsW);
+-	if(exsT)xDelete<IssmDouble>(exsT);
+-	if(surpT)xDelete<IssmDouble>(surpT);
+-	if(surpE)xDelete<IssmDouble>(surpE);
+-	if(flxDn)xDelete<IssmDouble>(flxDn);
+-	if(D)xDelete<int>(D);
+-	if(M)xDelete<IssmDouble>(M);
+  	xDelete<IssmDouble>(Zcum);
+ 	xDelete<IssmDouble>(dzMin2);
+ 	xDelete<IssmDouble>(dzMax2);
+ 
+ 	/*Assign output pointers:*/
+-	*pMs=Msurf;
+-	*pM=sumM;
+-	*pR=Rsum;
+-	*pF=Fsum;
+-	*pmAdd=mAdd;
+-	*pdz_add=dz_add;
+-
+ 	*pT=T;
+ 	*pd=d;
+ 	*pdz=dz;
+@@ -2074,7 +2140,14 @@
+ 	*pgdn=gdn;
+ 	*pgsp=gsp;
+ 	*pn=n;
++	*pm=m;
++	*pEI=EI;
++	*pEW=EW;
+ 
++	*pmAdd=mAdd;
++	*paddE=addE;
++	*pdz_add=dz_add;
++
+ } /*}}}*/ 
+ void densification(IssmDouble** pd,IssmDouble** pdz, IssmDouble* T, IssmDouble* re, int denIdx, int aIdx, int swIdx, IssmDouble adThresh, IssmDouble C, IssmDouble dt, IssmDouble Tmean, IssmDouble dIce, int m, int sid){ /*{{{*/
+ 
+Index: ../trunk-jpl/src/c/modules/SurfaceMassBalancex/SurfaceMassBalancex.h
+===================================================================
+--- ../trunk-jpl/src/c/modules/SurfaceMassBalancex/SurfaceMassBalancex.h	(revision 27226)
++++ ../trunk-jpl/src/c/modules/SurfaceMassBalancex/SurfaceMassBalancex.h	(revision 27227)
+@@ -36,6 +36,7 @@
+ void thermo(IssmDouble* pEC, IssmDouble** T, IssmDouble* pulwrf, IssmDouble* re, IssmDouble* dz, IssmDouble* d, IssmDouble* swf, IssmDouble dlw, IssmDouble Ta, IssmDouble V, IssmDouble eAir, IssmDouble pAir, IssmDouble eIdx, IssmDouble teValue, IssmDouble dulwrfValue, IssmDouble teThresh, IssmDouble Ws, IssmDouble dt0, int m, IssmDouble Vz, IssmDouble Tz, IssmDouble thermo_scaling, IssmDouble dIce, int sid, bool isconstrainsurfaceT, bool isdeltaLWup);
+ void accumulation(IssmDouble** pT, IssmDouble** pdz, IssmDouble** pd, IssmDouble** pW, IssmDouble** pa, IssmDouble** padiff, IssmDouble** pre, IssmDouble** pgdn, IssmDouble** pgsp, IssmDouble* pRa, int* pm, int aIdx, int dsnowIdx, IssmDouble Tmean, IssmDouble Ta, IssmDouble P, IssmDouble dzMin, IssmDouble aSnow, IssmDouble C, IssmDouble V, IssmDouble Vmean, IssmDouble dIce, int sid);
+ void melt(IssmDouble* pM, IssmDouble* pMs, IssmDouble* pR, IssmDouble* pF, IssmDouble* pmAdd, IssmDouble* pdz_add, IssmDouble** pT, IssmDouble** pd, IssmDouble** pdz, IssmDouble** pW, IssmDouble** pa, IssmDouble** padiff, IssmDouble** pre, IssmDouble** pgdn, IssmDouble** pgsp, int* pn, IssmDouble Ra, IssmDouble dzMin, IssmDouble zMax, IssmDouble zMin, IssmDouble zTop, IssmDouble zY, IssmDouble dIce, int sid);
++void managelayers(IssmDouble* pmAdd, IssmDouble* pdz_add, IssmDouble* paddE, IssmDouble** pm, IssmDouble** pEI, IssmDouble** pEW, IssmDouble** pT, IssmDouble** pd, IssmDouble** pdz, IssmDouble** pW, IssmDouble** pa, IssmDouble** padiff, IssmDouble** pre, IssmDouble** pgdn, IssmDouble** pgsp, int* pn, IssmDouble dzMin, IssmDouble zMax, IssmDouble zMin, IssmDouble zTop, IssmDouble zY);
+ void densification(IssmDouble** pd,IssmDouble** pdz, IssmDouble* T, IssmDouble* re, int denIdx, int aIdx, int swIdx, IssmDouble adThresh, IssmDouble C, IssmDouble dt, IssmDouble Tmean, IssmDouble dIce, int m, int sid);
+ void turbulentFlux(IssmDouble* pshf, IssmDouble* plhf, IssmDouble* pEC, IssmDouble Ta, IssmDouble Ts, IssmDouble V, IssmDouble eAir, IssmDouble pAir, IssmDouble ds, IssmDouble Ws, IssmDouble Vz, IssmDouble Tz, IssmDouble dIce, int sid);
+ #endif  /* _SurfaceMassBalancex_H*/
Index: /issm/oecreview/Archive/27032-27229/ISSM-DocReview-27032-27229.tex
===================================================================
--- /issm/oecreview/Archive/27032-27229/ISSM-DocReview-27032-27229.tex	(revision 27230)
+++ /issm/oecreview/Archive/27032-27229/ISSM-DocReview-27032-27229.tex	(revision 27230)
@@ -0,0 +1,67 @@
+\documentclass[]{report}   % list options between brackets
+\usepackage{graphicx}              % list packages between braces
+
+% type user-defined commands here
+
+\begin{document}
+
+\title{JPL EXPORT ADMINISTRATION \\ DOCUMENT REVIEW RECORD}   % type title between braces
+\author{Tom Scavo}         % type author(s) between braces
+\date{October 27, 1995}    % type date between braces
+%\maketitle
+
+
+\begin{center}
+\begin{tabular}{ |c|c| }
+\hline
+JPL EXPORT ADMINISTRATION \\
+\textit{ DOCUMENT REVIEW RECORD} \\
+\hline
+\end{tabular}
+\end{center}
+
+\hfill Log \#: \underline{\input{LogNumber}}
+
+\vspace{1cm}
+\noindent (Note: This form and process do not replace the procedures described in JPL Policy relating to review and approval of proposals and contractual 
+documents. This process is intended to document the review and coordination of requests to ascertain the export control ramifications relating to specific 
+documents. Export Administration signature does not convey authority to export or release the "Exporter of Record" from any export laws or regulations.)\\
+
+\noindent \textbf{Program:} \underline{ISSM: Ice Sheet System Model} \\ \\
+\noindent \textbf{Person Requesting or Initiating Export}: \underline{Dr. Eric Larour}\\ \\
+\noindent \textbf{Date Received}: \underline{\input{Date}}\\ \\
+\noindent \textbf{Document Title/Description}: ISSM changes from revision \input{r1} to revision \input{r2} \\ \\
+\noindent \textbf{Release to:} \underline{http://issm.ess.uci.edu/svn/issm/issm/trunk on ISSM svn repository}\\ \\
+\noindent \textbf{JPL Intranet:} \underline{murdo.jpl.nasa.gov/proj/ice/larour/issm-uci/trunk-jpl}\\ \\
+
+\noindent \textbf{Disposition: 6 } 
+Does not contain export-controlled information. May be released/disclosed as requested subject to 
+Company guidelines on protection of proprietary information (if applicable). \\
+
+\noindent \textbf{Comments:}  see table of changes below. \\ \\
+\noindent \textbf{Reviewed by ISSM Export Transfer Liaison:} Dr. Eric Larour \hfill \textbf{Date:} \input{Date} \\ 
+\includegraphics[scale=1]{signature}
+
+\noindent JPL Export Administration Form TBS – June 29, 2011
+
+\begin{center}
+\line(1,0){250}
+\end{center}
+
+\noindent \textbf{Disposition:} \\
+1:	  Public Domain Information (Ref ITAR Section 120.11) \\
+2:	  Qualifies for ITAR Exemption				 \\
+3:	  Covered by Department of State License/Agreement Number					  \\
+4:	  Covered by Department of Commerce validated license or exception				 \\
+5:	  New License Required \\
+6:	  Does not contain export-controlled information.  May be released/disclosed as requested subject
+   to Company guidelines on protection of proprietary information (if applicable). \\
+7:	 Other (specify)   
+\begin{center}
+\line(1,0){250}
+\end{center}
+
+
+\input{log}
+
+\end{document}
Index: /issm/oecreview/Archive/27032-27229/LogNumber.tex
===================================================================
--- /issm/oecreview/Archive/27032-27229/LogNumber.tex	(revision 27230)
+++ /issm/oecreview/Archive/27032-27229/LogNumber.tex	(revision 27230)
@@ -0,0 +1,1 @@
+27032-27229
Index: /issm/oecreview/Archive/27032-27229/Makefile
===================================================================
--- /issm/oecreview/Archive/27032-27229/Makefile	(revision 27230)
+++ /issm/oecreview/Archive/27032-27229/Makefile	(revision 27230)
@@ -0,0 +1,8 @@
+TARGET=ISSM-DocReview-27032-27229
+
+all: 
+	pdflatex -interaction=errorstopmode -file-line-error -halt-on-error $(TARGET).tex
+	rm -rf *.log *.aux 
+
+clean:
+	rm -rf *.log *.aux
Index: /issm/oecreview/Archive/27032-27229/log.tex
===================================================================
--- /issm/oecreview/Archive/27032-27229/log.tex	(revision 27230)
+++ /issm/oecreview/Archive/27032-27229/log.tex	(revision 27230)
@@ -0,0 +1,896 @@
+\noindent \textbf{Change \#1} with diff file ISSM-27034-27035.diff: \\
+Function name: \\
+M /issm/trunk-jpl\\
+Export determination: 6. \\
+Rationale: merged trunk and trunk-jpl\\
+\vspace{3em}
+
+\noindent \textbf{Change \#2} with diff file ISSM-27036-27037.diff: \\
+Function name: \\
+M /issm/trunk-jpl M /issm/trunk-jpl/src M /issm/trunk-jpl/test\\
+Export determination: 6. \\
+Rationale: Block revision 27035 from being merged into trunk-jpl\\
+\vspace{3em}
+
+\noindent \textbf{Change \#3} with diff file ISSM-27037-27038.diff: \\
+Function name: \\
+M /issm/trunk-jpl/configure.ac\\
+Export determination: 6. \\
+Rationale: CHG: changing ISSM version\\
+\vspace{3em}
+
+\noindent \textbf{Change \#4} with diff file ISSM-27038-27039.diff: \\
+Function name: \\
+M /issm/trunk-jpl/src/m/coordsystems/ll2xy.m M /issm/trunk-jpl/src/m/coordsystems/xy2ll.m\\
+Export determination: 6. \\
+Rationale: CHG: added Bamber projection\\
+\vspace{3em}
+
+\noindent \textbf{Change \#5} with diff file ISSM-27039-27040.diff: \\
+Function name: \\
+M /issm/trunk-jpl/src/m/plot/plot\_transient\_movie.m\\
+Export determination: 6. \\
+Rationale: CHG: minor, added step as an option\\
+\vspace{3em}
+
+\noindent \textbf{Change \#6} with diff file ISSM-27040-27041.diff: \\
+Function name: \\
+A /issm/trunk-jpl/externalpackages/petsc/install-3.17-mac-intel.sh\\
+Export determination: 6. \\
+Rationale: CHG: added 3.17.1 mac intel\\
+\vspace{3em}
+
+\noindent \textbf{Change \#7} with diff file ISSM-27041-27042.diff: \\
+Function name: \\
+M /issm/trunk-jpl/externalpackages/petsc/install-3.17-mac-intel.sh\\
+Export determination: 6. \\
+Rationale: CHG: do not call configure.py but configure because newest versions of PETSc do not have python 2\\
+\vspace{3em}
+
+\noindent \textbf{Change \#8} with diff file ISSM-27042-27043.diff: \\
+Function name: \\
+A /issm/trunk-jpl/externalpackages/petsc/install-3.17-mac-m1-static.sh\\
+Export determination: 6. \\
+Rationale: CHG: added install-3.17-mac-m1-static.sh\\
+\vspace{3em}
+
+\noindent \textbf{Change \#9} with diff file ISSM-27043-27044.diff: \\
+Function name: \\
+M /issm/trunk-jpl/externalpackages/petsc/install-3.17-mac-m1.sh\\
+Export determination: 6. \\
+Rationale: CHG: do not call configure.py\\
+\vspace{3em}
+
+\noindent \textbf{Change \#10} with diff file ISSM-27044-27045.diff: \\
+Function name: \\
+M /issm/trunk-jpl/src/m/plot/plot\_transient\_movie.m\\
+Export determination: 6. \\
+Rationale: BUG: fixing transient movie if no field is provided\\
+\vspace{3em}
+
+\noindent \textbf{Change \#11} with diff file ISSM-27045-27046.diff: \\
+Function name: \\
+M /issm/trunk-jpl/externalpackages/gsl/install-javascript.sh M /issm/trunk-jpl/externalpackages/triangle/install-linux-javascript.sh\\
+Export determination: 6. \\
+Rationale: BUG: Fixing JavaScript build\\
+\vspace{3em}
+
+\noindent \textbf{Change \#12} with diff file ISSM-27046-27047.diff: \\
+Function name: \\
+M /issm/trunk-jpl/externalpackages/triangle/install-linux-javascript.sh\\
+Export determination: 6. \\
+Rationale: BUG: Fixing JavaScript build\\
+\vspace{3em}
+
+\noindent \textbf{Change \#13} with diff file ISSM-27047-27048.diff: \\
+Function name: \\
+M /issm/trunk-jpl/externalpackages/gsl/install-static.sh M /issm/trunk-jpl/externalpackages/gsl/install.sh\\
+Export determination: 6. \\
+Rationale: CHG: Updating to latest version\\
+\vspace{3em}
+
+\noindent \textbf{Change \#14} with diff file ISSM-27048-27049.diff: \\
+Function name: \\
+M /issm/trunk-jpl/externalpackages/gsl/install-javascript.sh M /issm/trunk-jpl/externalpackages/gsl/install-static.sh M /issm/trunk-jpl/externalpackages/gsl/install.sh\\
+Export determination: 6. \\
+Rationale: BUG: Wrong version number\\
+\vspace{3em}
+
+\noindent \textbf{Change \#15} with diff file ISSM-27049-27050.diff: \\
+Function name: \\
+A /issm/trunk-jpl/src/m/contrib/morlighem/modeldata/interpIBCSO2.m (from /issm/trunk-jpl/src/m/contrib/morlighem/modeldata/interpIBCSO.m:27037)\\
+Export determination: 6. \\
+Rationale: CHG: added interpIBCSO2.m\\
+\vspace{3em}
+
+\noindent \textbf{Change \#16} with diff file ISSM-27050-27051.diff: \\
+Function name: \\
+M /issm/trunk-jpl/examples/Inversion/runme.m\\
+Export determination: 6. \\
+Rationale: BUG: steps was set incorrectly\\
+\vspace{3em}
+
+\noindent \textbf{Change \#17} with diff file ISSM-27051-27052.diff: \\
+Function name: \\
+M /issm/trunk-jpl/m4/issm\_options.m4\\
+Export determination: 6. \\
+Rationale: CHG: Making -D\_DO\_NOT\_LOAD\_GLOBALS\_ flag default to avoid “symbol not found in flat namespace '\_\_ZN14ToolkitOptions11toolkittypeE’”\\
+\vspace{3em}
+
+\noindent \textbf{Change \#18} with diff file ISSM-27053-27054.diff: \\
+Function name: \\
+M /issm/trunk-jpl/src/c/analyses/SealevelchangeAnalysis.cpp M /issm/trunk-jpl/src/c/classes/Elements/Tria.cpp M /issm/trunk-jpl/src/c/cores/sealevelchange\_core.cpp\\
+Export determination: 6. \\
+Rationale: BUG: memory leaks in sealevelchange core\\
+\vspace{3em}
+
+\noindent \textbf{Change \#19} with diff file ISSM-27054-27055.diff: \\
+Function name: \\
+M /issm/trunk-jpl/src/c/classes/Elements/Tria.cpp\\
+Export determination: 6. \\
+Rationale: BUG: minor change\\
+\vspace{3em}
+
+\noindent \textbf{Change \#20} with diff file ISSM-27055-27056.diff: \\
+Function name: \\
+M /issm/trunk-jpl/src/c/classes/Elements/Tria.cpp\\
+Export determination: 6. \\
+Rationale: BUG: minor change\\
+\vspace{3em}
+
+\noindent \textbf{Change \#21} with diff file ISSM-27056-27057.diff: \\
+Function name: \\
+M /issm/trunk-jpl/src/c/classes/Elements/Tria.cpp\\
+Export determination: 6. \\
+Rationale: BUG: minor change\\
+\vspace{3em}
+
+\noindent \textbf{Change \#22} with diff file ISSM-27057-27058.diff: \\
+Function name: \\
+M /issm/trunk-jpl/src/c/classes/Elements/Tria.cpp\\
+Export determination: 6. \\
+Rationale: BUG: minor change\\
+\vspace{3em}
+
+\noindent \textbf{Change \#23} with diff file ISSM-27059-27060.diff: \\
+Function name: \\
+M /issm/trunk-jpl/src/c/classes/Elements/Tria.cpp M /issm/trunk-jpl/src/c/cores/sealevelchange\_core.cpp\\
+Export determination: 6. \\
+Rationale: BUG: memory management issue\\
+\vspace{3em}
+
+\noindent \textbf{Change \#24} with diff file ISSM-27060-27061.diff: \\
+Function name: \\
+M /issm/trunk-jpl/src/c/classes/Elements/Tria.cpp\\
+Export determination: 6. \\
+Rationale: BUG: memory management issue\\
+\vspace{3em}
+
+\noindent \textbf{Change \#25} with diff file ISSM-27061-27062.diff: \\
+Function name: \\
+M /issm/trunk-jpl/src/c/analyses/SealevelchangeAnalysis.cpp M /issm/trunk-jpl/src/c/classes/Elements/Tria.cpp M /issm/trunk-jpl/src/c/cores/sealevelchange\_core.cpp\\
+Export determination: 6. \\
+Rationale: CHG: Reverting memory management fix\\
+\vspace{3em}
+
+\noindent \textbf{Change \#26} with diff file ISSM-27062-27063.diff: \\
+Function name: \\
+M /issm/trunk-jpl/src/wrappers/IssmConfig/IssmConfig.cpp\\
+Export determination: 6. \\
+Rationale: CHG: check specific packages(CUDA and PASTIX) under petsc environment.\\
+\vspace{3em}
+
+\noindent \textbf{Change \#27} with diff file ISSM-27063-27064.diff: \\
+Function name: \\
+M /issm/trunk-jpl/m4/issm\_options.m4\\
+Export determination: 6. \\
+Rationale: CHG: adding a libpython location\\
+\vspace{3em}
+
+\noindent \textbf{Change \#28} with diff file ISSM-27064-27065.diff: \\
+Function name: \\
+M /issm/trunk-jpl/packagers/linux/package-issm-linux-binaries-matlab.sh M /issm/trunk-jpl/packagers/linux/package-issm-linux-binaries-python-2.sh M /issm/trunk-jpl/packagers/linux/package-issm-linux-binaries-python-3.sh M /issm/trunk-jpl/packagers/mac/package-issm-mac-binaries-matlab.sh M /issm/trunk-jpl/packagers/mac/package-issm-mac-binaries-python-2.sh M /issm/trunk-jpl/packagers/mac/package-issm-mac-binaries-python-3.sh M /issm/trunk-jpl/src/wrappers/matlab/Makefile.am M /issm/trunk-jpl/src/wrappers/python/Makefile.am\\
+Export determination: 6. \\
+Rationale: BUG: Was not catching certain errors during testing of binaries; needed to explicitly link to libbacktrace on newer versions of GCC on Linux\\
+\vspace{3em}
+
+\noindent \textbf{Change \#29} with diff file ISSM-27085-27086.diff: \\
+Function name: \\
+M /issm/trunk-jpl/externalpackages/sqlite/install.sh\\
+Export determination: 6. \\
+Rationale: CHG: Support for QGIS\\
+\vspace{3em}
+
+\noindent \textbf{Change \#30} with diff file ISSM-27086-27087.diff: \\
+Function name: \\
+M /issm/trunk-jpl/packagers/linux/package-issm-linux-binaries-matlab.sh M /issm/trunk-jpl/packagers/linux/package-issm-linux-binaries-python-2.sh M /issm/trunk-jpl/packagers/linux/package-issm-linux-binaries-python-3.sh M /issm/trunk-jpl/packagers/mac/package-issm-mac-binaries-matlab.sh M /issm/trunk-jpl/packagers/mac/package-issm-mac-binaries-python-2.sh M /issm/trunk-jpl/packagers/mac/package-issm-mac-binaries-python-3.sh\\
+Export determination: 6. \\
+Rationale: CHG: Packaging PROJ share directory\\
+\vspace{3em}
+
+\noindent \textbf{Change \#31} with diff file ISSM-27087-27088.diff: \\
+Function name: \\
+M /issm/trunk-jpl/src/m/plot/applyoptions.py M /issm/trunk-jpl/src/m/plot/plot\_unit.py M /issm/trunk-jpl/src/m/plot/plotmodel.py M /issm/trunk-jpl/src/m/plot/processdata.py\\
+Export determination: 6. \\
+Rationale: BUG: fixes to caxis plotting and issues with P2 elements\\
+\vspace{3em}
+
+\noindent \textbf{Change \#32} with diff file ISSM-27088-27089.diff: \\
+Function name: \\
+M /issm/trunk-jpl/src/m/plot/plot\_BC.py A /issm/trunk-jpl/src/m/plot/plot\_edgeoverlay.py M /issm/trunk-jpl/src/m/plot/plot\_icefront.py\\
+Export determination: 6. \\
+Rationale: NEW: new capability for front and BCs plotting and experimental plotter for GlADS channels\\
+\vspace{3em}
+
+\noindent \textbf{Change \#33} with diff file ISSM-27089-27090.diff: \\
+Function name: \\
+M /issm/trunk-jpl/packagers/linux/package-issm-linux-binaries-matlab.sh M /issm/trunk-jpl/packagers/linux/package-issm-linux-binaries-python-2.sh M /issm/trunk-jpl/packagers/linux/package-issm-linux-binaries-python-3.sh M /issm/trunk-jpl/packagers/mac/package-issm-mac-binaries-matlab.sh M /issm/trunk-jpl/packagers/mac/package-issm-mac-binaries-python-2.sh M /issm/trunk-jpl/packagers/mac/package-issm-mac-binaries-python-3.sh M /issm/trunk-jpl/src/m/modules/CoordTransform.m\\
+Export determination: 6. \\
+Rationale: CHG: Packaging PROJ share directory\\
+\vspace{3em}
+
+\noindent \textbf{Change \#34} with diff file ISSM-27096-27097.diff: \\
+Function name: \\
+M /issm/trunk-jpl/packagers/linux/package-issm-linux-binaries-matlab.sh M /issm/trunk-jpl/packagers/linux/package-issm-linux-binaries-python-2.sh M /issm/trunk-jpl/packagers/linux/package-issm-linux-binaries-python-3.sh M /issm/trunk-jpl/packagers/mac/package-issm-mac-binaries-matlab.sh M /issm/trunk-jpl/packagers/mac/package-issm-mac-binaries-python-2.sh M /issm/trunk-jpl/packagers/mac/package-issm-mac-binaries-python-3.sh\\
+Export determination: 6. \\
+Rationale: BUG: Packaging PROJ share directory\\
+\vspace{3em}
+
+\noindent \textbf{Change \#35} with diff file ISSM-27097-27098.diff: \\
+Function name: \\
+M /issm/trunk-jpl/src/c/analyses/SealevelchangeAnalysis.cpp M /issm/trunk-jpl/src/c/classes/Elements/Tria.cpp M /issm/trunk-jpl/src/c/classes/GrdLoads.cpp M /issm/trunk-jpl/src/c/cores/sealevelchange\_core.cpp M /issm/trunk-jpl/src/c/modules/ModelProcessorx/CreateElementsVerticesAndMaterials.cpp\\
+Export determination: 6. \\
+Rationale: CHG: fixing leaks.\\
+\vspace{3em}
+
+\noindent \textbf{Change \#36} with diff file ISSM-27098-27099.diff: \\
+Function name: \\
+M /issm/trunk-jpl/packagers/linux/package-issm-linux-binaries-matlab.sh M /issm/trunk-jpl/packagers/linux/package-issm-linux-binaries-python-2.sh M /issm/trunk-jpl/packagers/linux/package-issm-linux-binaries-python-3.sh M /issm/trunk-jpl/packagers/mac/package-issm-mac-binaries-matlab.sh M /issm/trunk-jpl/packagers/mac/package-issm-mac-binaries-python-2.sh M /issm/trunk-jpl/packagers/mac/package-issm-mac-binaries-python-3.sh M /issm/trunk-jpl/src/c/analyses/SealevelchangeAnalysis.cpp\\
+Export determination: 6. \\
+Rationale: BUG: Missing return type on destructor; missing recursive flag for call to copy\\
+\vspace{3em}
+
+\noindent \textbf{Change \#37} with diff file ISSM-27099-27100.diff: \\
+Function name: \\
+M /issm/trunk-jpl/src/c/analyses/SealevelchangeAnalysis.cpp\\
+Export determination: 6. \\
+Rationale: BUG: Destructors cannot have return types (oops)\\
+\vspace{3em}
+
+\noindent \textbf{Change \#38} with diff file ISSM-27100-27101.diff: \\
+Function name: \\
+M /issm/trunk-jpl/src/c/analyses/SealevelchangeAnalysis.h\\
+Export determination: 6. \\
+Rationale: BUG: Missing destructor declaration.\\
+\vspace{3em}
+
+\noindent \textbf{Change \#39} with diff file ISSM-27101-27102.diff: \\
+Function name: \\
+M /issm/trunk-jpl/src/c/analyses/SealevelchangeAnalysis.cpp M /issm/trunk-jpl/src/c/analyses/SealevelchangeAnalysis.h M /issm/trunk-jpl/src/c/cores/sealevelchange\_core.cpp\\
+Export determination: 6. \\
+Rationale: BUG: Changed deconstructor into static cleanup method\\
+\vspace{3em}
+
+\noindent \textbf{Change \#40} with diff file ISSM-27102-27103.diff: \\
+Function name: \\
+M /issm/trunk-jpl/src/c/analyses/AdjointHorizAnalysis.cpp M /issm/trunk-jpl/src/c/analyses/DamageEvolutionAnalysis.cpp M /issm/trunk-jpl/src/c/analyses/EnthalpyAnalysis.cpp M /issm/trunk-jpl/src/c/analyses/EsaAnalysis.cpp M /issm/trunk-jpl/src/c/analyses/FreeSurfaceBaseAnalysis.cpp M /issm/trunk-jpl/src/c/analyses/FreeSurfaceTopAnalysis.cpp M /issm/trunk-jpl/src/c/analyses/HydrologyDCEfficientAnalysis.cpp M /issm/trunk-jpl/src/c/analyses/HydrologyDCInefficientAnalysis.cpp M /issm/trunk-jpl/src/c/analyses/HydrologyShreveAnalysis.cpp M /issm/trunk-jpl/src/c/analyses/LevelsetAnalysis.cpp M /issm/trunk-jpl/src/c/analyses/MasstransportAnalysis.cpp M /issm/trunk-jpl/src/c/analyses/OceantransportAnalysis.cpp M /issm/trunk-jpl/src/c/analyses/SamplingAnalysis.cpp M /issm/trunk-jpl/src/c/analyses/StressbalanceAnalysis.cpp M /issm/trunk-jpl/src/c/analyses/StressbalanceSIAAnalysis.cpp M /issm/trunk-jpl/src/c/analyses/StressbalanceVerticalAnalysis.cpp M /issm/trunk-jpl/src/c/analyses/ThermalAnalysis.cpp M /issm/trunk-jpl/src/c/analyses/UzawaPressureAnalysis.cpp M /issm/trunk-jpl/src/c/classes/Dakota/IssmDirectApplicInterface.h M /issm/trunk-jpl/src/c/classes/Dakota/IssmParallelDirectApplicInterface.cpp M /issm/trunk-jpl/src/c/classes/Elements/Element.cpp M /issm/trunk-jpl/src/c/classes/Elements/ElementHook.cpp M /issm/trunk-jpl/src/c/classes/Elements/Penta.cpp M /issm/trunk-jpl/src/c/classes/Elements/Tetra.cpp M /issm/trunk-jpl/src/c/classes/Elements/Tria.cpp M /issm/trunk-jpl/src/c/classes/FemModel.cpp M /issm/trunk-jpl/src/c/classes/IoModel.cpp M /issm/trunk-jpl/src/c/classes/Materials/Matlitho.cpp M /issm/trunk-jpl/src/c/classes/Misfit.cpp M /issm/trunk-jpl/src/c/classes/Node.cpp M /issm/trunk-jpl/src/c/classes/Params/Parameters.cpp M /issm/trunk-jpl/src/c/classes/Vertices.cpp M /issm/trunk-jpl/src/c/classes/gauss/GaussSeg.cpp M /issm/trunk-jpl/src/c/classes/matrix/ElementMatrix.cpp M /issm/trunk-jpl/src/c/cores/ResetBoundaryConditions.cpp M /issm/trunk-jpl/src/c/cores/adgradient\_core.cpp M /issm/trunk-jpl/src/c/cores/control\_core.cpp M /issm/trunk-jpl/src/c/cores/dakota\_core.cpp M /issm/trunk-jpl/src/c/cores/esa\_core.cpp M /issm/trunk-jpl/src/c/cores/groundingline\_core.cpp M /issm/trunk-jpl/src/c/cores/hydrology\_core.cpp M /issm/trunk-jpl/src/c/cores/masstransport\_core.cpp M /issm/trunk-jpl/src/c/cores/oceantransport\_core.cpp M /issm/trunk-jpl/src/c/cores/sampling\_core.cpp M /issm/trunk-jpl/src/c/cores/smb\_core.cpp M /issm/trunk-jpl/src/c/cores/steadystate\_core.cpp M /issm/trunk-jpl/src/c/cores/stressbalance\_core.cpp M /issm/trunk-jpl/src/c/cores/thermal\_core.cpp M /issm/trunk-jpl/src/c/cores/transient\_core.cpp M /issm/trunk-jpl/src/c/main/issm\_ocean.cpp M /issm/trunk-jpl/src/c/main/issm\_slc.cpp M /issm/trunk-jpl/src/c/main/kriging.cpp M /issm/trunk-jpl/src/c/modules/AllocateSystemMatricesx/AllocateSystemMatricesx.cpp M /issm/trunk-jpl/src/c/modules/AverageOntoPartitionx/AverageOntoPartitionx.cpp M /issm/trunk-jpl/src/c/modules/ElementCoordinatesx/ElementCoordinatesx.cpp M /issm/trunk-jpl/src/c/modules/GetVectorFromInputsx/GetVectorFromInputsx.cpp M /issm/trunk-jpl/src/c/modules/GiaDeflectionCorex/GiaDeflectionCorex.cpp M /issm/trunk-jpl/src/c/modules/Gradjx/Gradjx.cpp M /issm/trunk-jpl/src/c/modules/GroundinglineMigrationx/GroundinglineMigrationx.cpp M /issm/trunk-jpl/src/c/modules/InputUpdateFromDakotax/InputUpdateFromDakotax.cpp M /issm/trunk-jpl/src/c/modules/InputUpdateFromVectorDakotax/InputUpdateFromVectorDakotax.cpp M /issm/trunk-jpl/src/c/modules/IoModelToConstraintsx/IoModelToConstraintsx.cpp M /issm/trunk-jpl/src/c/modules/MeshPartitionx/MeshPartitionx.h M /issm/trunk-jpl/src/c/modules/MeshProfileIntersectionx/MeshProfileIntersectionx.cpp M /issm/trunk-jpl/src/c/modules/ModelProcessorx/Autodiff/CreateParametersAutodiff.cpp M /issm/trunk-jpl/src/c/modules/ModelProcessorx/CreateElementsVerticesAndMaterials.cpp M /issm/trunk-jpl/src/c/modules/ModelProcessorx/CreateOutputDefinitions.cpp M /issm/trunk-jpl/src/c/modules/PointCloudFindNeighborsx/PointCloudFindNeighborsxt.cpp M /issm/trunk-jpl/src/c/modules/Reduceloadx/Reduceloadx.cpp M /issm/trunk-jpl/src/c/modules/UpdateDynamicConstraintsx/UpdateDynamicConstraintsx.cpp M /issm/trunk-jpl/src/c/modules/VertexCoordinatesx/VertexCoordinatesx.cpp M /issm/trunk-jpl/src/c/shared/Threads/LaunchThread.cpp M /issm/trunk-jpl/src/c/shared/Triangle/TriangleUtils.cpp M /issm/trunk-jpl/src/c/solutionsequences/solutionsequence\_hydro\_nonlinear.cpp M /issm/trunk-jpl/src/c/solutionsequences/solutionsequence\_thermal\_nonlinear.cpp M /issm/trunk-jpl/src/c/toolkits/issm/IssmMpiDenseMat.h M /issm/trunk-jpl/src/c/toolkits/issm/IssmMpiSparseMat.h M /issm/trunk-jpl/src/c/toolkits/issm/IssmMpiVec.h M /issm/trunk-jpl/src/c/toolkits/issm/IssmToolkitUtils.cpp M /issm/trunk-jpl/src/c/toolkits/mpi/commops/DetermineLocalSize.cpp M /issm/trunk-jpl/src/c/toolkits/objects/Matrix.h M /issm/trunk-jpl/src/c/toolkits/objects/Vector.h M /issm/trunk-jpl/src/c/toolkits/petsc/objects/PetscSolver.cpp M /issm/trunk-jpl/src/c/toolkits/petsc/patches/MatMultPatch.cpp M /issm/trunk-jpl/src/c/toolkits/petsc/patches/VecToMPISerial.cpp\\
+Export determination: 6. \\
+Rationale: CHG: typo: ressources -> resources\\
+\vspace{3em}
+
+\noindent \textbf{Change \#41} with diff file ISSM-27105-27106.diff: \\
+Function name: \\
+M /issm/trunk-jpl/src/c/cores/sealevelchange\_core.cpp\\
+Export determination: 6. \\
+Rationale: BUG: Removing call to cleanup method (for now)\\
+\vspace{3em}
+
+\noindent \textbf{Change \#42} with diff file ISSM-27107-27108.diff: \\
+Function name: \\
+M /issm/trunk-jpl/packagers/linux/package-issm-linux-binaries-matlab.sh\\
+Export determination: 6. \\
+Rationale: BUG: Incorrect path to external package\\
+\vspace{3em}
+
+\noindent \textbf{Change \#43} with diff file ISSM-27109-27110.diff: \\
+Function name: \\
+M /issm/trunk-jpl/jenkins/ross-debian\_linux-javascript\\
+Export determination: 6. \\
+Rationale: BUG: Need to allow for globals in JavaScript build until we find a way to strip them entirely\\
+\vspace{3em}
+
+\noindent \textbf{Change \#44} with diff file ISSM-27111-27112.diff: \\
+Function name: \\
+M /issm/trunk-jpl/packagers/linux/complete-issm-linux-binaries-matlab.sh M /issm/trunk-jpl/packagers/linux/complete-issm-linux-binaries-python-2.sh M /issm/trunk-jpl/packagers/linux/complete-issm-linux-binaries-python-3.sh M /issm/trunk-jpl/packagers/linux/package-issm-linux-binaries-matlab.sh M /issm/trunk-jpl/packagers/mac/commit\_for\_signing-issm-mac-binaries-matlab.sh M /issm/trunk-jpl/packagers/mac/commit\_for\_signing-issm-mac-binaries-python-2.sh M /issm/trunk-jpl/packagers/mac/commit\_for\_signing-issm-mac-binaries-python-3.sh M /issm/trunk-jpl/packagers/mac/complete-issm-mac-binaries-matlab.sh M /issm/trunk-jpl/packagers/mac/complete-issm-mac-binaries-python-2.sh M /issm/trunk-jpl/packagers/mac/complete-issm-mac-binaries-python-3.sh M /issm/trunk-jpl/packagers/mac/sign-issm-mac-binaries-matlab.sh M /issm/trunk-jpl/packagers/mac/sign-issm-mac-binaries-python-2.sh M /issm/trunk-jpl/packagers/mac/sign-issm-mac-binaries-python-3.sh M /issm/trunk-jpl/packagers/mac/transfer-issm-mac-binaries.sh\\
+Export determination: 6. \\
+Rationale: CHG: Need to add trust-server-cert option to svn update; typos\\
+\vspace{3em}
+
+\noindent \textbf{Change \#45} with diff file ISSM-27112-27113.diff: \\
+Function name: \\
+M /issm/trunk-jpl/src/m/plot/plot\_mesh.py\\
+Export determination: 6. \\
+Rationale: CHG: add default 2d mesh options same as plot\_mesh.m\\
+\vspace{3em}
+
+\noindent \textbf{Change \#46} with diff file ISSM-27113-27114.diff: \\
+Function name: \\
+M /issm/trunk-jpl/src/c/classes/Inputs/ArrayInput.cpp M /issm/trunk-jpl/src/c/classes/Inputs/Inputs.cpp\\
+Export determination: 6. \\
+Rationale: NEW: changes to allow restart with ArrayInputs\\
+\vspace{3em}
+
+\noindent \textbf{Change \#47} with diff file ISSM-27115-27116.diff: \\
+Function name: \\
+M /issm/trunk-jpl/test/NightlyRun/test2002.py M /issm/trunk-jpl/test/NightlyRun/test2006.py M /issm/trunk-jpl/test/NightlyRun/test417.py M /issm/trunk-jpl/test/NightlyRun/test440.py M /issm/trunk-jpl/test/NightlyRun/test446.py\\
+Export determination: 6. \\
+Rationale: CHG: Syntax and matlab consistency fixes\\
+\vspace{3em}
+
+\noindent \textbf{Change \#48} with diff file ISSM-27116-27117.diff: \\
+Function name: \\
+M /issm/trunk-jpl/test/NightlyRun/runme.m\\
+Export determination: 6. \\
+Rationale: NEW: adding checking procedure for nc export in matlab runmes\\
+\vspace{3em}
+
+\noindent \textbf{Change \#49} with diff file ISSM-27117-27118.diff: \\
+Function name: \\
+M /issm/trunk-jpl/test/NightlyRun/runme.m\\
+Export determination: 6. \\
+Rationale: BUG: reverting preceding commit\\
+\vspace{3em}
+
+\noindent \textbf{Change \#50} with diff file ISSM-27118-27119.diff: \\
+Function name: \\
+M /issm/trunk-jpl/test/NightlyRun/test446.py\\
+Export determination: 6. \\
+Rationale: BUG: spelling error\\
+\vspace{3em}
+
+\noindent \textbf{Change \#51} with diff file ISSM-27119-27120.diff: \\
+Function name: \\
+M /issm/trunk-jpl/src/m/coordsystems/epsg2proj.py M /issm/trunk-jpl/src/m/coordsystems/gdaltransform.py M /issm/trunk-jpl/src/m/mesh/planet/gmsh/gmshplanet.py M /issm/trunk-jpl/src/m/solve/waitonlock.py\\
+Export determination: 6. \\
+Rationale: BUG: fixing some subprocess calls to return strings rather than bytes\\
+\vspace{3em}
+
+\noindent \textbf{Change \#52} with diff file ISSM-27120-27121.diff: \\
+Function name: \\
+M /issm/trunk-jpl/src/m/mesh/bamg.py\\
+Export determination: 6. \\
+Rationale: BUG:Fix in edges\_required formating\\
+\vspace{3em}
+
+\noindent \textbf{Change \#53} with diff file ISSM-27121-27122.diff: \\
+Function name: \\
+M /issm/trunk-jpl/src/c/analyses/LevelsetAnalysis.cpp M /issm/trunk-jpl/src/c/classes/Elements/Tria.cpp M /issm/trunk-jpl/src/c/shared/Enum/EnumDefinitions.h M /issm/trunk-jpl/src/m/classes/calvingparameterization.m\\
+Export determination: 6. \\
+Rationale: CHG: rewrite calving parameterization with tanh and linear functions\\
+\vspace{3em}
+
+\noindent \textbf{Change \#54} with diff file ISSM-27122-27123.diff: \\
+Function name: \\
+M /issm/trunk-jpl/src/c/shared/Enum/Enum.vim M /issm/trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp M /issm/trunk-jpl/src/c/shared/Enum/Enumjl.vim M /issm/trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp\\
+Export determination: 6. \\
+Rationale: BUG: synchronize Enums manually\\
+\vspace{3em}
+
+\noindent \textbf{Change \#55} with diff file ISSM-27123-27124.diff: \\
+Function name: \\
+M /issm/trunk-jpl/src/c/classes/Elements/Tria.cpp\\
+Export determination: 6. \\
+Rationale: CHG: add threashold for bed>sealevel to have no calving\\
+\vspace{3em}
+
+\noindent \textbf{Change \#56} with diff file ISSM-27127-27128.diff: \\
+Function name: \\
+M /issm/trunk-jpl/packagers/linux/package-issm-linux-binaries-matlab.sh M /issm/trunk-jpl/packagers/linux/package-issm-linux-binaries-python-2.sh M /issm/trunk-jpl/packagers/linux/package-issm-linux-binaries-python-3.sh M /issm/trunk-jpl/packagers/mac/test-issm-mac-binaries-matlab.sh M /issm/trunk-jpl/packagers/mac/test-issm-mac-binaries-python-2.sh M /issm/trunk-jpl/packagers/mac/test-issm-mac-binaries-python-3.sh\\
+Export determination: 6. \\
+Rationale: CHG: Printing log if one or more tests fail when packaging\\
+\vspace{3em}
+
+\noindent \textbf{Change \#57} with diff file ISSM-27128-27129.diff: \\
+Function name: \\
+M /issm/trunk-jpl/src/c/classes/Inputs/Inputs.cpp M /issm/trunk-jpl/src/c/classes/Inputs/Inputs.h A /issm/trunk-jpl/src/c/classes/Inputs/IntArrayInput.cpp A /issm/trunk-jpl/src/c/classes/Inputs/IntArrayInput.h\\
+Export determination: 6. \\
+Rationale: NEW: IntArrayInput class for int* inputs\\
+\vspace{3em}
+
+\noindent \textbf{Change \#58} with diff file ISSM-27129-27130.diff: \\
+Function name: \\
+M /issm/trunk-jpl/src/c/shared/Enum/EnumDefinitions.h M /issm/trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp M /issm/trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp\\
+Export determination: 6. \\
+Rationale: BUG: missing Enum\\
+\vspace{3em}
+
+\noindent \textbf{Change \#59} with diff file ISSM-27130-27131.diff: \\
+Function name: \\
+M /issm/trunk-jpl/src/c/Makefile.am\\
+Export determination: 6. \\
+Rationale: BUG: missing reference in Makefile for new IntArrayInput files\\
+\vspace{3em}
+
+\noindent \textbf{Change \#60} with diff file ISSM-27131-27132.diff: \\
+Function name: \\
+M /issm/trunk-jpl/src/c/analyses/SealevelchangeAnalysis.cpp M /issm/trunk-jpl/src/c/classes/Elements/Element.cpp M /issm/trunk-jpl/src/c/classes/Elements/Element.h M /issm/trunk-jpl/src/c/classes/Elements/Penta.h M /issm/trunk-jpl/src/c/classes/Elements/Seg.h M /issm/trunk-jpl/src/c/classes/Elements/Tetra.h M /issm/trunk-jpl/src/c/classes/Elements/Tria.cpp M /issm/trunk-jpl/src/c/classes/Elements/Tria.h M /issm/trunk-jpl/src/c/classes/GrdLoads.cpp M /issm/trunk-jpl/src/c/classes/SealevelGeometry.cpp M /issm/trunk-jpl/src/c/classes/SealevelGeometry.h M /issm/trunk-jpl/src/c/cores/sealevelchange\_core.cpp M /issm/trunk-jpl/src/c/shared/Enum/Enum.vim M /issm/trunk-jpl/src/c/shared/Enum/EnumDefinitions.h M /issm/trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp M /issm/trunk-jpl/src/c/shared/Enum/Enumjl.vim M /issm/trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp M /issm/trunk-jpl/src/m/classes/solidearthsettings.m\\
+Export determination: 6. \\
+Rationale: CHG: Memory and runtime optimization of sealevelchange core.\\
+\vspace{3em}
+
+\noindent \textbf{Change \#61} with diff file ISSM-27132-27133.diff: \\
+Function name: \\
+M /issm/trunk-jpl/src/c/shared/Enum/EnumDefinitions.h M /issm/trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp M /issm/trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp\\
+Export determination: 6. \\
+Rationale: BUG: missing Enum\\
+\vspace{3em}
+
+\noindent \textbf{Change \#62} with diff file ISSM-27133-27134.diff: \\
+Function name: \\
+M /issm/trunk-jpl/test/NightlyRun/test2010.m M /issm/trunk-jpl/test/NightlyRun/test2013.m\\
+Export determination: 6. \\
+Rationale: CHG: Keeping up with new unit of measurement of SealevelBarystaticIceLoad ouput\\
+\vspace{3em}
+
+\noindent \textbf{Change \#63} with diff file ISSM-27142-27143.diff: \\
+Function name: \\
+M /issm/trunk-jpl/test/Archives/Archive2002.arch M /issm/trunk-jpl/test/Archives/Archive2005.arch M /issm/trunk-jpl/test/Archives/Archive2008.arch M /issm/trunk-jpl/test/Archives/Archive2010.arch M /issm/trunk-jpl/test/Archives/Archive2090.arch M /issm/trunk-jpl/test/Archives/Archive2091.arch\\
+Export determination: 6. \\
+Rationale: CHG: Updated archives\\
+\vspace{3em}
+
+\noindent \textbf{Change \#64} with diff file ISSM-27143-27144.diff: \\
+Function name: \\
+M /issm/trunk-jpl/src/m/contrib/defleurian/paraview/exportVTK.py A /issm/trunk-jpl/src/m/contrib/defleurian/paraview/exportVTU.py\\
+Export determination: 6. \\
+Rationale: NEW: shifting paraview export to VTU\\
+\vspace{3em}
+
+\noindent \textbf{Change \#65} with diff file ISSM-27144-27145.diff: \\
+Function name: \\
+D /issm/trunk-jpl/src/m/contrib/defleurian/paraview/enveloppeVTK.m D /issm/trunk-jpl/src/m/contrib/defleurian/paraview/enveloppeVTK.py\\
+Export determination: 6. \\
+Rationale: NEW: cleaning enveloppe exports\\
+\vspace{3em}
+
+\noindent \textbf{Change \#66} with diff file ISSM-27145-27146.diff: \\
+Function name: \\
+M /issm/trunk-jpl/src/m/mesh/planet/gmsh/gmshplanet.m\\
+Export determination: 6. \\
+Rationale: BUG: gmsh not found by gmshplanet in distributables (still need to update Python function)\\
+\vspace{3em}
+
+\noindent \textbf{Change \#67} with diff file ISSM-27146-27147.diff: \\
+Function name: \\
+D /issm/trunk-jpl/src/c/modules/FourierLoveCorex M /issm/trunk-jpl/src/c/modules/modules.h\\
+Export determination: 6. \\
+Rationale: CHG: FourierLoveCorex not needed anymore\\
+\vspace{3em}
+
+\noindent \textbf{Change \#68} with diff file ISSM-27147-27148.diff: \\
+Function name: \\
+M /issm/trunk-jpl/src/m/mesh/ComputeHessian.py\\
+Export determination: 6. \\
+Rationale: BUG: fixing tiling shapes in COmputeHessian\\
+\vspace{3em}
+
+\noindent \textbf{Change \#69} with diff file ISSM-27148-27149.diff: \\
+Function name: \\
+M /issm/trunk-jpl/packagers/linux/package-issm-linux-binaries-matlab.sh M /issm/trunk-jpl/packagers/linux/package-issm-linux-binaries-python-2.sh M /issm/trunk-jpl/packagers/linux/package-issm-linux-binaries-python-3.sh M /issm/trunk-jpl/packagers/mac/package-issm-mac-binaries-matlab.sh M /issm/trunk-jpl/packagers/mac/package-issm-mac-binaries-python-2.sh M /issm/trunk-jpl/packagers/mac/package-issm-mac-binaries-python-3.sh M /issm/trunk-jpl/packagers/mac/test-issm-mac-binaries-matlab.sh M /issm/trunk-jpl/packagers/mac/test-issm-mac-binaries-python-2.sh M /issm/trunk-jpl/packagers/mac/test-issm-mac-binaries-python-3.sh\\
+Export determination: 6. \\
+Rationale: BUG: Better parsing of failures in log files; printing of log files on failure\\
+\vspace{3em}
+
+\noindent \textbf{Change \#70} with diff file ISSM-27149-27150.diff: \\
+Function name: \\
+M /issm/trunk-jpl/externalpackages/gdal/install-3-python-static.sh M /issm/trunk-jpl/externalpackages/gdal/install-3-python.sh M /issm/trunk-jpl/externalpackages/gdal/install-3-static.sh M /issm/trunk-jpl/externalpackages/gdal/install-3.sh M /issm/trunk-jpl/externalpackages/gmsh/install-4-static.sh M /issm/trunk-jpl/externalpackages/gmsh/install-4.sh M /issm/trunk-jpl/packagers/linux/package-issm-linux-binaries-matlab.sh M /issm/trunk-jpl/packagers/linux/package-issm-linux-binaries-python-2.sh M /issm/trunk-jpl/packagers/linux/package-issm-linux-binaries-python-3.sh\\
+Export determination: 6. \\
+Rationale: BUG: Correcting some static linking in distributables; syntax of sed call under Linux in packaging scripts\\
+\vspace{3em}
+
+\noindent \textbf{Change \#71} with diff file ISSM-27150-27151.diff: \\
+Function name: \\
+M /issm/trunk-jpl/externalpackages/dakota/install-6.2-mac.sh\\
+Export determination: 6. \\
+Rationale: CHG: force dakota compile with python2 and throw error if not found\\
+\vspace{3em}
+
+\noindent \textbf{Change \#72} with diff file ISSM-27151-27152.diff: \\
+Function name: \\
+M /issm/trunk-jpl/etc/environment.sh M /issm/trunk-jpl/externalpackages/gmt/configs/6/static/cmake/modules/FindGDAL.cmake M /issm/trunk-jpl/externalpackages/gmt/configs/6/static/cmake/modules/FindNETCDF.cmake M /issm/trunk-jpl/externalpackages/gmt/install-6-mac-static.sh\\
+Export determination: 6. \\
+Rationale: BUG: Correcting some static linking in distributables; typo\\
+\vspace{3em}
+
+\noindent \textbf{Change \#73} with diff file ISSM-27152-27153.diff: \\
+Function name: \\
+M /issm/trunk-jpl/externalpackages/gdal/install-3-python-static.sh M /issm/trunk-jpl/externalpackages/gdal/install-3-static.sh\\
+Export determination: 6. \\
+Rationale: BUG: Correcting some static linking in distributables\\
+\vspace{3em}
+
+\noindent \textbf{Change \#74} with diff file ISSM-27153-27154.diff: \\
+Function name: \\
+M /issm/trunk-jpl/externalpackages/curl/install-7-linux-static.sh M /issm/trunk-jpl/externalpackages/curl/install-7-mac-static.sh\\
+Export determination: 6. \\
+Rationale: BUG: Correcting some static linking in distributables\\
+\vspace{3em}
+
+\noindent \textbf{Change \#75} with diff file ISSM-27154-27155.diff: \\
+Function name: \\
+M /issm/trunk-jpl/m4/analyses.m4 M /issm/trunk-jpl/src/c/Makefile.am A /issm/trunk-jpl/src/c/analyses/AgeAnalysis.cpp A /issm/trunk-jpl/src/c/analyses/AgeAnalysis.h M /issm/trunk-jpl/src/c/analyses/EnumToAnalysis.cpp M /issm/trunk-jpl/src/c/analyses/analyses.h M /issm/trunk-jpl/src/c/cores/transient\_core.cpp M /issm/trunk-jpl/src/c/shared/Enum/Enum.vim M /issm/trunk-jpl/src/c/shared/Enum/EnumDefinitions.h M /issm/trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp M /issm/trunk-jpl/src/c/shared/Enum/Enumjl.vim M /issm/trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp M /issm/trunk-jpl/src/c/shared/Enum/Synchronize.sh\\
+Export determination: 6. \\
+Rationale: CHG: starting age model implementation\\
+\vspace{3em}
+
+\noindent \textbf{Change \#76} with diff file ISSM-27155-27156.diff: \\
+Function name: \\
+A /issm/trunk-jpl/src/m/classes/age.m M /issm/trunk-jpl/src/m/classes/transient.js M /issm/trunk-jpl/src/m/classes/transient.m M /issm/trunk-jpl/src/m/classes/transient.py\\
+Export determination: 6. \\
+Rationale: CHG: preparing age model :\\
+\vspace{3em}
+
+\noindent \textbf{Change \#77} with diff file ISSM-27156-27157.diff: \\
+Function name: \\
+M /issm/trunk-jpl/src/c/modules/ModelProcessorx/CreateParameters.cpp\\
+Export determination: 6. \\
+Rationale: CHG: added isage flag to transient\\
+\vspace{3em}
+
+\noindent \textbf{Change \#78} with diff file ISSM-27157-27158.diff: \\
+Function name: \\
+M /issm/trunk-jpl/src/c/toolkits/petsc/objects/PetscSolver.cpp M /issm/trunk-jpl/src/c/toolkits/petsc/patches/ISSMToPetscInsertMode.cpp M /issm/trunk-jpl/src/c/toolkits/petsc/patches/ISSMToPetscMatrixType.cpp M /issm/trunk-jpl/src/c/toolkits/petsc/patches/ISSMToPetscNormMode.cpp M /issm/trunk-jpl/src/c/toolkits/petsc/patches/KSPFree.cpp M /issm/trunk-jpl/src/c/toolkits/petsc/patches/MatFree.cpp M /issm/trunk-jpl/src/c/toolkits/petsc/patches/MatMultPatch.cpp M /issm/trunk-jpl/src/c/toolkits/petsc/patches/NewMat.cpp M /issm/trunk-jpl/src/c/toolkits/petsc/patches/NewVec.cpp M /issm/trunk-jpl/src/c/toolkits/petsc/patches/PetscOptionsDetermineSolverType.cpp M /issm/trunk-jpl/src/c/toolkits/petsc/patches/VecFree.cpp M /issm/trunk-jpl/src/c/toolkits/petsc/patches/petscpatches.h M /issm/trunk-jpl/src/c/toolkits/petsc/petscincludes.h\\
+Export determination: 6. \\
+Rationale: CHG: simplifying all petsc includes: only petscksp needs to be included now\\
+\vspace{3em}
+
+\noindent \textbf{Change \#79} with diff file ISSM-27158-27159.diff: \\
+Function name: \\
+M /issm/trunk-jpl/etc/environment.sh M /issm/trunk-jpl/externalpackages/dakota/install-6.2-mac.sh M /issm/trunk-jpl/externalpackages/gmt/configs/6/static/linux/cmake/ConfigUser.static.cmake M /issm/trunk-jpl/externalpackages/gmt/configs/6/static/mac/cmake/ConfigUser.static.cmake M /issm/trunk-jpl/m4/issm\_options.m4 M /issm/trunk-jpl/packagers/linux/package-issm-linux-binaries-matlab.sh M /issm/trunk-jpl/packagers/linux/package-issm-linux-binaries-python-2.sh M /issm/trunk-jpl/packagers/linux/package-issm-linux-binaries-python-3.sh M /issm/trunk-jpl/packagers/mac/package-issm-mac-binaries-matlab.sh M /issm/trunk-jpl/packagers/mac/package-issm-mac-binaries-python-2.sh M /issm/trunk-jpl/packagers/mac/package-issm-mac-binaries-python-3.sh M /issm/trunk-jpl/src/m/coordsystems/gmtmaskparallel.m M /issm/trunk-jpl/src/m/mesh/planet/gmsh/gmshplanet.m M /issm/trunk-jpl/src/m/modules/CoordTransform.m\\
+Export determination: 6. \\
+Rationale: CHG: Fixes for distributable using Solid Earth capabilities; cleanup\\
+\vspace{3em}
+
+\noindent \textbf{Change \#80} with diff file ISSM-27159-27160.diff: \\
+Function name: \\
+A /issm/trunk-jpl/externalpackages/gmsh/install-4-linux-static.sh (from /issm/trunk-jpl/externalpackages/gmsh/install-4-static.sh:27158) A /issm/trunk-jpl/externalpackages/gmsh/install-4-mac-static.sh (from /issm/trunk-jpl/externalpackages/gmsh/install-4-static.sh:27157) D /issm/trunk-jpl/externalpackages/gmsh/install-4-static.sh M /issm/trunk-jpl/jenkins/pine\_island-mac-binaries-matlab M /issm/trunk-jpl/jenkins/pine\_island-mac-binaries-python-2 M /issm/trunk-jpl/jenkins/pine\_island-mac-binaries-python-3 M /issm/trunk-jpl/jenkins/ross-debian\_linux-binaries-matlab M /issm/trunk-jpl/jenkins/ross-debian\_linux-binaries-python-2 M /issm/trunk-jpl/jenkins/ross-debian\_linux-binaries-python-3\\
+Export determination: 6. \\
+Rationale: CHG: Need to split static version of Gmsh install script into macOS and Linux copies\\
+\vspace{3em}
+
+\noindent \textbf{Change \#81} with diff file ISSM-27160-27161.diff: \\
+Function name: \\
+M /issm/trunk-jpl/src/c/modules/StochasticForcingx/StochasticForcingx.cpp M /issm/trunk-jpl/test/Archives/Archive621.arch\\
+Export determination: 6. \\
+Rationale: CHG: removed constraint of positive water pressure in Stochastic water pressure\\
+\vspace{3em}
+
+\noindent \textbf{Change \#82} with diff file ISSM-27161-27162.diff: \\
+Function name: \\
+M /issm/trunk-jpl/src/c/classes/Loads/Friction.cpp M /issm/trunk-jpl/src/c/modules/StochasticForcingx/StochasticForcingx.cpp M /issm/trunk-jpl/src/c/shared/Enum/Enum.vim M /issm/trunk-jpl/src/c/shared/Enum/EnumDefinitions.h M /issm/trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp M /issm/trunk-jpl/src/c/shared/Enum/Enumjl.vim M /issm/trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp M /issm/trunk-jpl/src/m/classes/stochasticforcing.m M /issm/trunk-jpl/src/m/classes/stochasticforcing.py\\
+Export determination: 6. \\
+Rationale: CHG: allowing stochastic water pressure for frictionschoof\\
+\vspace{3em}
+
+\noindent \textbf{Change \#83} with diff file ISSM-27162-27163.diff: \\
+Function name: \\
+M /issm/trunk-jpl/etc/environment.sh M /issm/trunk-jpl/externalpackages/mplapack/install-1-linux.sh A /issm/trunk-jpl/externalpackages/mplapack/install-2-linux.sh (from /issm/trunk-jpl/externalpackages/mplapack/install-1-linux.sh:27161) M /issm/trunk-jpl/jenkins/ross-debian\_linux-full-mplapack\\
+Export determination: 6. \\
+Rationale: CHG: Support for latest version of MPLAPACK; set BLAS\_ROOT if user has external copy of LAPACK that installs libblas\\
+\vspace{3em}
+
+\noindent \textbf{Change \#84} with diff file ISSM-27163-27164.diff: \\
+Function name: \\
+M /issm/trunk-jpl/src/m/modules/CoordTransform.m\\
+Export determination: 6. \\
+Rationale: BUG: Return from what function needs to be tested\\
+\vspace{3em}
+
+\noindent \textbf{Change \#85} with diff file ISSM-27164-27165.diff: \\
+Function name: \\
+M /issm/trunk-jpl/src/c/classes/Loads/Friction.cpp M /issm/trunk-jpl/src/m/classes/frictioncoulomb.m M /issm/trunk-jpl/src/m/classes/frictioncoulomb.py\\
+Export determination: 6. \\
+Rationale: CHG frictioncoulomb uses effective presure instead of thickness above floatation\\
+\vspace{3em}
+
+\noindent \textbf{Change \#86} with diff file ISSM-27165-27166.diff: \\
+Function name: \\
+M /issm/trunk-jpl/src/c/classes/Loads/Friction.cpp M /issm/trunk-jpl/src/c/modules/StochasticForcingx/StochasticForcingx.cpp M /issm/trunk-jpl/src/c/shared/Enum/Enum.vim M /issm/trunk-jpl/src/c/shared/Enum/EnumDefinitions.h M /issm/trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp M /issm/trunk-jpl/src/c/shared/Enum/Enumjl.vim M /issm/trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp M /issm/trunk-jpl/src/m/classes/stochasticforcing.m M /issm/trunk-jpl/src/m/classes/stochasticforcing.py\\
+Export determination: 6. \\
+Rationale: CHG: allowing stochastic water pressure for frictioncoulomb\\
+\vspace{3em}
+
+\noindent \textbf{Change \#87} with diff file ISSM-27166-27167.diff: \\
+Function name: \\
+A /issm/trunk-jpl/src/c/solutionsequences/solutionsequence\_hydro\_singleloop.cpp\\
+Export determination: 6. \\
+Rationale: NEW:adding a singleloop hydrology DC for testing\\
+\vspace{3em}
+
+\noindent \textbf{Change \#88} with diff file ISSM-27167-27168.diff: \\
+Function name: \\
+M /issm/trunk-jpl/test/NightlyRun/runme.py M /issm/trunk-jpl/test/NightlyRun/test2004.m M /issm/trunk-jpl/test/NightlyRun/test2004.py M /issm/trunk-jpl/test/NightlyRun/test243.py M /issm/trunk-jpl/test/NightlyRun/test252.py\\
+Export determination: 6. \\
+Rationale: CHG: minor formating\\
+\vspace{3em}
+
+\noindent \textbf{Change \#89} with diff file ISSM-27168-27169.diff: \\
+Function name: \\
+M /issm/trunk-jpl/src/c/modules/Reducevectorgtofx/Reducevectorgtofx.cpp M /issm/trunk-jpl/src/c/solutionsequences/convergence.cpp\\
+Export determination: 6. \\
+Rationale: CHG:modification needed for hydro convergence\\
+\vspace{3em}
+
+\noindent \textbf{Change \#90} with diff file ISSM-27169-27170.diff: \\
+Function name: \\
+M /issm/trunk-jpl/src/c/classes/Cfdragcoeffabsgrad.cpp M /issm/trunk-jpl/src/c/datastructures/DataSet.cpp\\
+Export determination: 6. \\
+Rationale: NEW: add Tikhonov regularization for AD inversion\\
+\vspace{3em}
+
+\noindent \textbf{Change \#91} with diff file ISSM-27170-27171.diff: \\
+Function name: \\
+M /issm/trunk-jpl/src/c/modules/Reducevectorgtofx/Reducevectorgtofx.cpp M /issm/trunk-jpl/src/c/solutionsequences/convergence.cpp\\
+Export determination: 6. \\
+Rationale: BUG: Reverting Basile’s commit temporarily\\
+\vspace{3em}
+
+\noindent \textbf{Change \#92} with diff file ISSM-27171-27172.diff: \\
+Function name: \\
+M /issm/trunk-jpl/src/c/solutionsequences/convergence.cpp\\
+Export determination: 6. \\
+Rationale: CHG: adding a small number to the denominator in case it is 0\\
+\vspace{3em}
+
+\noindent \textbf{Change \#93} with diff file ISSM-27172-27173.diff: \\
+Function name: \\
+M /issm/trunk-jpl/examples/UncertaintyQuantification/runme.m M /issm/trunk-jpl/src/m/classes/clusters/generic\_static.m M /issm/trunk-jpl/src/m/classes/clusters/generic\_static.py\\
+Export determination: 6. \\
+Rationale: BUG: Distribution copy of generic class missing nprocs method; note added to UQ example about needing to run Pig example first\\
+\vspace{3em}
+
+\noindent \textbf{Change \#94} with diff file ISSM-27173-27174.diff: \\
+Function name: \\
+M /issm/trunk-jpl/src/m/classes/frictionschoof.py\\
+Export determination: 6. \\
+Rationale: CHG:syntax fix\\
+\vspace{3em}
+
+\noindent \textbf{Change \#95} with diff file ISSM-27174-27175.diff: \\
+Function name: \\
+M /issm/trunk-jpl/src/m/mesh/planet/gmsh/gmshplanet.m M /issm/trunk-jpl/src/m/mesh/planet/gmsh/gmshplanet.py\\
+Export determination: 6. \\
+Rationale: BUG:some fixes and path discovery addition\\
+\vspace{3em}
+
+\noindent \textbf{Change \#96} with diff file ISSM-27175-27176.diff: \\
+Function name: \\
+M /issm/trunk-jpl/src/m/classes/initialization.py\\
+Export determination: 6. \\
+Rationale: BUG:some hydro related fixes\\
+\vspace{3em}
+
+\noindent \textbf{Change \#97} with diff file ISSM-27176-27177.diff: \\
+Function name: \\
+M /issm/trunk-jpl/src/c/modules/Reducevectorgtofx/Reducevectorgtofx.cpp M /issm/trunk-jpl/src/c/solutionsequences/convergence.cpp\\
+Export determination: 6. \\
+Rationale: CHG: changes in the way we deal with convergence in HydroDC\\
+\vspace{3em}
+
+\noindent \textbf{Change \#98} with diff file ISSM-27177-27178.diff: \\
+Function name: \\
+M /issm/trunk-jpl/src/c/analyses/HydrologyDCEfficientAnalysis.cpp M /issm/trunk-jpl/src/c/analyses/HydrologyDCInefficientAnalysis.cpp M /issm/trunk-jpl/src/c/cores/hydrology\_core.cpp M /issm/trunk-jpl/src/c/solutionsequences/solutionsequence\_hydro\_nonlinear.cpp M /issm/trunk-jpl/src/m/classes/hydrologydc.m M /issm/trunk-jpl/src/m/classes/hydrologydc.py\\
+Export determination: 6. \\
+Rationale: NEW: implementing addaptative stepping in Hydro\\
+\vspace{3em}
+
+\noindent \textbf{Change \#99} with diff file ISSM-27178-27179.diff: \\
+Function name: \\
+M /issm/trunk-jpl/src/m/classes/timestepping.m M /issm/trunk-jpl/src/m/classes/timestepping.py M /issm/trunk-jpl/src/m/classes/timesteppingadaptive.m M /issm/trunk-jpl/src/m/classes/timesteppingadaptive.py\\
+Export determination: 6. \\
+Rationale: NEW: adding possibility to average forcing between two model times\\
+\vspace{3em}
+
+\noindent \textbf{Change \#100} with diff file ISSM-27179-27180.diff: \\
+Function name: \\
+M /issm/trunk-jpl/src/c/shared/Enum/Enum.vim M /issm/trunk-jpl/src/c/shared/Enum/EnumDefinitions.h M /issm/trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp M /issm/trunk-jpl/src/c/shared/Enum/Enumjl.vim M /issm/trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp\\
+Export determination: 6. \\
+Rationale: NEW: adding enums related to previous commits\\
+\vspace{3em}
+
+\noindent \textbf{Change \#101} with diff file ISSM-27180-27181.diff: \\
+Function name: \\
+M /issm/trunk-jpl/src/c/classes/Inputs/TransientInput.cpp\\
+Export determination: 6. \\
+Rationale: NEW: adding possibility to average forcing between two model times\\
+\vspace{3em}
+
+\noindent \textbf{Change \#102} with diff file ISSM-27181-27182.diff: \\
+Function name: \\
+M /issm/trunk-jpl/src/c/modules/ModelProcessorx/CreateParameters.cpp\\
+Export determination: 6. \\
+Rationale: CHG:fix to parameter creation for Hydro\\
+\vspace{3em}
+
+\noindent \textbf{Change \#103} with diff file ISSM-27182-27183.diff: \\
+Function name: \\
+M /issm/trunk-jpl/src/c/solutionsequences/solutionsequences.h\\
+Export determination: 6. \\
+Rationale: NEW:changes related to the adaptative stepping\\
+\vspace{3em}
+
+\noindent \textbf{Change \#104} with diff file ISSM-27183-27184.diff: \\
+Function name: \\
+M /issm/trunk-jpl/test/Archives/Archive900.arch\\
+Export determination: 6. \\
+Rationale: CHG: updating archive 900, to cope with slight convergence changes\\
+\vspace{3em}
+
+\noindent \textbf{Change \#105} with diff file ISSM-27184-27185.diff: \\
+Function name: \\
+M /issm/trunk-jpl/src/c/cores/hydrology\_core.cpp\\
+Export determination: 6. \\
+Rationale: BUG: redefining AddResult in Hydro\\
+\vspace{3em}
+
+\noindent \textbf{Change \#106} with diff file ISSM-27185-27186.diff: \\
+Function name: \\
+M /issm/trunk-jpl/src/c/classes/Inputs/TransientInput.cpp\\
+Export determination: 6. \\
+Rationale: BUG: fixing AD, does not want a subtraction in function call\\
+\vspace{3em}
+
+\noindent \textbf{Change \#107} with diff file ISSM-27186-27187.diff: \\
+Function name: \\
+M /issm/trunk-jpl/src/c/cores/hydrology\_core.cpp A /issm/trunk-jpl/test/Archives/Archive906.arch A /issm/trunk-jpl/test/NightlyRun/test906.m A /issm/trunk-jpl/test/NightlyRun/test906.py\\
+Export determination: 6. \\
+Rationale: NEW:adding a NR for hydro adaptative stepping (and minor fix)\\
+\vspace{3em}
+
+\noindent \textbf{Change \#108} with diff file ISSM-27187-27188.diff: \\
+Function name: \\
+M /issm/trunk-jpl/externalpackages/dakota/install-6.2-linux.sh M /issm/trunk-jpl/externalpackages/dakota/install-6.2-mac.sh\\
+Export determination: 6. \\
+Rationale: CHG: Workaround for machines that do not have Python 2\\
+\vspace{3em}
+
+\noindent \textbf{Change \#109} with diff file ISSM-27188-27189.diff: \\
+Function name: \\
+M /issm/trunk-jpl/externalpackages/dakota/install-6.2-mac.sh\\
+Export determination: 6. \\
+Rationale: BUG: Bad path\\
+\vspace{3em}
+
+\noindent \textbf{Change \#110} with diff file ISSM-27189-27190.diff: \\
+Function name: \\
+M /issm/trunk-jpl/externalpackages/gdal/install-3-python-static.sh M /issm/trunk-jpl/externalpackages/gdal/install-3-python.sh M /issm/trunk-jpl/externalpackages/gdal/install-3-static.sh M /issm/trunk-jpl/externalpackages/gdal/install-3.sh\\
+Export determination: 6. \\
+Rationale: CHG: Upgrading to latest version of GDAL\\
+\vspace{3em}
+
+\noindent \textbf{Change \#111} with diff file ISSM-27190-27191.diff: \\
+Function name: \\
+D /issm/trunk-jpl/src/c/solutionsequences/solutionsequence\_hydro\_singleloop.cpp M /issm/trunk-jpl/src/c/solutionsequences/solutionsequences.h\\
+Export determination: 6. \\
+Rationale: CHG:removing singleloop hydro solution sequence which proved useless\\
+\vspace{3em}
+
+\noindent \textbf{Change \#112} with diff file ISSM-27191-27192.diff: \\
+Function name: \\
+M /issm/trunk-jpl/externalpackages/dakota/install-6.2-mac-static.sh M /issm/trunk-jpl/externalpackages/dakota/install-6.2-mac.sh A /issm/trunk-jpl/externalpackages/gmsh/install-4-linux.sh M /issm/trunk-jpl/externalpackages/gmsh/install-4-mac-static.sh A /issm/trunk-jpl/externalpackages/gmsh/install-4-mac.sh D /issm/trunk-jpl/externalpackages/gmsh/install-4.sh M /issm/trunk-jpl/externalpackages/gmt/install-6-mac-static.sh M /issm/trunk-jpl/jenkins/aws-amazon\_linux-solid\_earth M /issm/trunk-jpl/jenkins/pine\_island-mac-dakota M /issm/trunk-jpl/jenkins/pine\_island-mac-examples M /issm/trunk-jpl/jenkins/pine\_island-mac-full M /issm/trunk-jpl/jenkins/pine\_island-mac-full-valgrind M /issm/trunk-jpl/jenkins/pine\_island-mac-solid\_earth M /issm/trunk-jpl/jenkins/pine\_island-mac-solid\_earth-lambert M /issm/trunk-jpl/jenkins/pleiades-solid\_earth M /issm/trunk-jpl/jenkins/ross-debian\_linux-dakota M /issm/trunk-jpl/jenkins/ross-debian\_linux-full M /issm/trunk-jpl/jenkins/ross-debian\_linux-full-mplapack M /issm/trunk-jpl/jenkins/ross-debian\_linux-full-valgrind M /issm/trunk-jpl/jenkins/ross-debian\_linux-gia M /issm/trunk-jpl/jenkins/ross-debian\_linux-python M /issm/trunk-jpl/jenkins/ross-debian\_linux-solid\_earth\\
+Export determination: 6. \\
+Rationale: BUG: libgfortran not being found under bash on macOS (grep -> egrep; split gmsh into mac and linux install scripts)\\
+\vspace{3em}
+
+\noindent \textbf{Change \#113} with diff file ISSM-27192-27193.diff: \\
+Function name: \\
+A /issm/trunk-jpl/externalpackages/petsc/install-3.17-pleiades.sh\\
+Export determination: 6. \\
+Rationale: CHG: added 3.17 for pleiades\\
+\vspace{3em}
+
+\noindent \textbf{Change \#114} with diff file ISSM-27193-27194.diff: \\
+Function name: \\
+M /issm/trunk-jpl/src/c/solutionsequences/solutionsequence\_hydro\_nonlinear.cpp\\
+Export determination: 6. \\
+Rationale: BUG: better managment of vector sizes\\
+\vspace{3em}
+
+\noindent \textbf{Change \#115} with diff file ISSM-27194-27195.diff: \\
+Function name: \\
+M /issm/trunk-jpl/externalpackages/dakota/install-6.2-linux-static.sh M /issm/trunk-jpl/externalpackages/dakota/install-6.2-mac-static.sh M /issm/trunk-jpl/externalpackages/gmsh/install-4-linux-static.sh M /issm/trunk-jpl/externalpackages/gmsh/install-4-linux.sh M /issm/trunk-jpl/externalpackages/gmt/install-6-linux-static.sh\\
+Export determination: 6. \\
+Rationale: BUG: Find libgfortran on Linux.\\
+\vspace{3em}
+
+\noindent \textbf{Change \#116} with diff file ISSM-27195-27196.diff: \\
+Function name: \\
+M /issm/trunk-jpl/externalpackages/gdal/install-3-python-static.sh M /issm/trunk-jpl/externalpackages/gdal/install-3-python.sh\\
+Export determination: 6. \\
+Rationale: BUG: Use python3 for newest version of GDAL\\
+\vspace{3em}
+
+\noindent \textbf{Change \#117} with diff file ISSM-27196-27197.diff: \\
+Function name: \\
+M /issm/trunk-jpl/src/m/classes/SMBgemb.m M /issm/trunk-jpl/src/m/classes/SMBgemb.py M /issm/trunk-jpl/test/NightlyRun/test243.m M /issm/trunk-jpl/test/NightlyRun/test243.py M /issm/trunk-jpl/test/NightlyRun/test244.m M /issm/trunk-jpl/test/NightlyRun/test244.py M /issm/trunk-jpl/test/NightlyRun/test252.m M /issm/trunk-jpl/test/NightlyRun/test252.py\\
+Export determination: 6. \\
+Rationale: CHG: make GEMB swId default value 0\\
+\vspace{3em}
+
+\noindent \textbf{Change \#118} with diff file ISSM-27197-27198.diff: \\
+Function name: \\
+M /issm/trunk-jpl/examples/Greenland/runme.m M /issm/trunk-jpl/examples/Greenland/runme.py\\
+Export determination: 6. \\
+Rationale: CHG: Updated runme with changes from Nicole\\
+\vspace{3em}
+
+\noindent \textbf{Change \#119} with diff file ISSM-27198-27199.diff: \\
+Function name: \\
+M /issm/trunk-jpl/src/m/plot/applyoptions.py M /issm/trunk-jpl/src/m/plot/plot\_edgeoverlay.py M /issm/trunk-jpl/src/m/plot/plot\_manager.py M /issm/trunk-jpl/src/m/plot/plot\_unit.py M /issm/trunk-jpl/src/m/plot/plotmodel.py M /issm/trunk-jpl/src/m/plot/processdata.py\\
+Export determination: 6. \\
+Rationale: NEW: adding some plotting capacity\\
+\vspace{3em}
+
+\noindent \textbf{Change \#120} with diff file ISSM-27199-27200.diff: \\
+Function name: \\
+M /issm/trunk-jpl/src/m/contrib/defleurian/paraview/exportVTU.py\\
+Export determination: 6. \\
+Rationale: BUG: minor fix for VTU export\\
+\vspace{3em}
+
+\noindent \textbf{Change \#121} with diff file ISSM-27200-27201.diff: \\
+Function name: \\
+M /issm/trunk-jpl/src/m/mesh/planet/gmsh/gmshplanet.m\\
+Export determination: 6. \\
+Rationale: BUG: Path to gmsh executable\\
+\vspace{3em}
+
+\noindent \textbf{Change \#122} with diff file ISSM-27201-27202.diff: \\
+Function name: \\
+M /issm/trunk-jpl/src/m/coordsystems/gmtmask.m M /issm/trunk-jpl/src/m/coordsystems/gmtmask.py M /issm/trunk-jpl/src/m/coordsystems/gmtmaskparallel.m\\
+Export determination: 6. \\
+Rationale: BUG: gmt executable syntax\\
+\vspace{3em}
+
+\noindent \textbf{Change \#123} with diff file ISSM-27202-27203.diff: \\
+Function name: \\
+M /issm/trunk-jpl/etc/environment.sh M /issm/trunk-jpl/externalpackages/autotools/install-linux.sh M /issm/trunk-jpl/externalpackages/boost/install-1.7-mac.sh M /issm/trunk-jpl/externalpackages/chaco/install.sh M /issm/trunk-jpl/externalpackages/dakota/install-6.2-linux-static.sh M /issm/trunk-jpl/externalpackages/dakota/install-6.2-linux.sh M /issm/trunk-jpl/externalpackages/dakota/install-6.2-mac-static.sh M /issm/trunk-jpl/externalpackages/gmsh/install-4-linux-static.sh M /issm/trunk-jpl/externalpackages/gmsh/install-4-linux.sh M /issm/trunk-jpl/externalpackages/gmsh/install-4-mac-static.sh M /issm/trunk-jpl/externalpackages/gmsh/install-4-mac.sh M /issm/trunk-jpl/externalpackages/gmt/install-6-linux-static.sh M /issm/trunk-jpl/externalpackages/gmt/install-6-linux.sh M /issm/trunk-jpl/externalpackages/gmt/install-6-mac-static.sh M /issm/trunk-jpl/externalpackages/gmt/install-6-mac.sh M /issm/trunk-jpl/externalpackages/gsl/install.sh M /issm/trunk-jpl/externalpackages/petsc/install-3.12-linux.sh M /issm/trunk-jpl/externalpackages/petsc/install-3.12-lonestar.sh M /issm/trunk-jpl/externalpackages/petsc/install-3.12-mac.sh M /issm/trunk-jpl/externalpackages/petsc/install-3.12-win-msys2-gcc-msmpi.sh M /issm/trunk-jpl/externalpackages/petsc/install-3.13-pleiades.sh M /issm/trunk-jpl/externalpackages/petsc/install-3.14-discover.sh M /issm/trunk-jpl/externalpackages/petsc/install-3.14-greenplanet.sh M /issm/trunk-jpl/externalpackages/petsc/install-3.14-linux.sh M /issm/trunk-jpl/externalpackages/petsc/install-3.14-mac-nohdf5.sh M /issm/trunk-jpl/externalpackages/petsc/install-3.14-mac.sh M /issm/trunk-jpl/externalpackages/petsc/install-3.14-pleiades.sh M /issm/trunk-jpl/externalpackages/petsc/install-3.14-tetralith.sh M /issm/trunk-jpl/externalpackages/petsc/install-3.14-win-msys2-mingw-msmpi.sh M /issm/trunk-jpl/externalpackages/petsc/install-3.15-babylon.sh M /issm/trunk-jpl/externalpackages/petsc/install-3.15-discovery.sh M /issm/trunk-jpl/externalpackages/petsc/install-3.15-pleiades.sh M /issm/trunk-jpl/externalpackages/petsc/install-3.16-linux.sh A /issm/trunk-jpl/externalpackages/petsc/install-3.16-mac.sh M /issm/trunk-jpl/externalpackages/petsc/install-3.16-pleiades.sh M /issm/trunk-jpl/externalpackages/petsc/install-3.17-mac-intel.sh M /issm/trunk-jpl/externalpackages/petsc/install-3.17-mac-m1-static.sh M /issm/trunk-jpl/externalpackages/petsc/install-3.17-mac-m1.sh M /issm/trunk-jpl/externalpackages/petsc/install-3.17-pleiades.sh M /issm/trunk-jpl/jenkins/examples\_tests.sh M /issm/trunk-jpl/jenkins/jenkins.sh M /issm/trunk-jpl/jenkins/pine\_island-mac-full M /issm/trunk-jpl/m4/issm\_options.m4 M /issm/trunk-jpl/src/c/Makefile.am M /issm/trunk-jpl/src/m/dev/devpath.py M /issm/trunk-jpl/test/NightlyRun/IdFromString.py M /issm/trunk-jpl/test/NightlyRun/runme.m M /issm/trunk-jpl/test/NightlyRun/runme.py\\
+Export determination: 6. \\
+Rationale: CHG: Varied clean up\\
+\vspace{3em}
+
+\noindent \textbf{Change \#124} with diff file ISSM-27203-27204.diff: \\
+Function name: \\
+M /issm/trunk-jpl/src/c/analyses/LevelsetAnalysis.cpp M /issm/trunk-jpl/src/c/classes/Elements/Tria.cpp M /issm/trunk-jpl/src/c/shared/Enum/EnumDefinitions.h M /issm/trunk-jpl/src/m/classes/calvingparameterization.m\\
+Export determination: 6. \\
+Rationale: CHG: add a scaling of calving rate based on ice velocity\\
+\vspace{3em}
+
+\noindent \textbf{Change \#125} with diff file ISSM-27209-27210.diff: \\
+Function name: \\
+M /issm/trunk-jpl/test/NightlyRun/runme.py\\
+Export determination: 6. \\
+Rationale: BUG: Reverting last change because of test set partitioning bug\\
+\vspace{3em}
+
+\noindent \textbf{Change \#126} with diff file ISSM-27225-27226.diff: \\
+Function name: \\
+M /issm/trunk-jpl/src/c/analyses/HydrologyShaktiAnalysis.cpp\\
+Export determination: 6. \\
+Rationale: CHG: cleaned up SHAKTI code\\
+\vspace{3em}
+
+\noindent \textbf{Change \#127} with diff file ISSM-27226-27227.diff: \\
+Function name: \\
+M /issm/trunk-jpl/src/c/analyses/LevelsetAnalysis.cpp M /issm/trunk-jpl/src/c/classes/Elements/Tria.cpp M /issm/trunk-jpl/src/c/shared/Enum/EnumDefinitions.h M /issm/trunk-jpl/src/m/classes/calvingparameterization.m M /issm/trunk-jpl/src/m/classes/initialization.m M /issm/trunk-jpl/src/m/parameterization/setflowequation.m\\
+Export determination: 6. \\
+Rationale: CHG: add upper and lower bounds in calving parameterization\\
+\vspace{3em}
+
+\noindent \textbf{Change \#128} with diff file ISSM-27227-27228.diff: \\
+Function name: \\
+M /issm/trunk-jpl/src/c/modules/SurfaceMassBalancex/Gembx.cpp M /issm/trunk-jpl/src/c/modules/SurfaceMassBalancex/SurfaceMassBalancex.h\\
+Export determination: 6. \\
+Rationale: CHG: make GEMB cell merging its own function\\
+\vspace{3em}
+
Index: /issm/oecreview/Archive/27032-27229/r1.tex
===================================================================
--- /issm/oecreview/Archive/27032-27229/r1.tex	(revision 27230)
+++ /issm/oecreview/Archive/27032-27229/r1.tex	(revision 27230)
@@ -0,0 +1,1 @@
+27032
Index: /issm/oecreview/Archive/27032-27229/r2.tex
===================================================================
--- /issm/oecreview/Archive/27032-27229/r2.tex	(revision 27230)
+++ /issm/oecreview/Archive/27032-27229/r2.tex	(revision 27230)
@@ -0,0 +1,1 @@
+27229
